为了解决服务器负载问题,除了采取搭建多台服务器设备来解决外,还可以采用nginx来处理负载均衡。
1.轮询 根据nginx配置文件中的顺序,依次把客户端的web请求分发到不同的后端服务器.如果后端服务器down掉,能自动剔除。
首先在/etc/nginx/conf.d
里,添加如下代码:
http{
upstream sampleapp{
server 192.168.160.13:8989;
server 192.168.139.11:7878
}
之后在/etc/nginx/site-available/blog
里添加
server{
listen 80;
..
location / {
proxy_pass http://sampleapp;
}
}
备注:这里的blog
文件是我复制了一份原来的default文件,用于配置反向代理的。
2.最少连接
http{
upstream sampleapp{
least_conn;
server 192.168.160.22:8989;
server 192.169.23.33:2323;
}
server {
listen 80;
..
location / {
proxy_pass http://sampleapp;
}
}
3.ip地址哈希 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
http{
upstream sampleapp{
ip_hash;#判断是否同一个session,同一个session的话,访问的永远是一个
server 192.168.160.33:8989;
server 192.145.133.23:9999;
}
server{
listen 80;
..
location / {
proxy_pass http://sampleapp
}
}
4.基于权重的负载均衡
http{
upstream sampleapp{
server 192.168.160.34:8989 weight=2;#表示2/3的概率访问这个
server 192.168.160.23:9999;
server 192.168.160.23:9888 down;//down 表示单前的server暂时不参与负载
server 192.168.160.23:7777 backup//backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
}
server {
listen 99;
..
location / {
proxy_pass http://sample
}
}
网友评论