首先,我备用了三台服务器,一台做负载均衡主机(L),另外两台做应用服务器A(ip:172.31.131.200),B(ip:172.31.131.202)。

在L上,安装Nginx

yum install nginx

修改nginx配置

vi /etc/nginx.conf

添加如下配置

	//略
	upstream vilay {   # 定义负载均衡规则名称
		server 172.31.131.200:80 weight=3;
		server 172.31.131.202:80 weight=10;
	}
	
	server {
		listen 80;
		server_name:c.bdelay.com;#我解析的测试域名
		//略
		location / {
      proxy_pass http://vilay;  #vilay 为负载均衡规则名称
    }
		//略
	}

启动服务器

service nginx start

在A,B分别上安装Apache服务器

yum install httpd

分别执行命令启动服务器

systemctl start httpd.service

Apache 默认应用目录为/var/www/html

在A上应用目录添加index.html,内容为 hello my is vilay1

在B上应用目录添加index.html,内容为 hello my is vilay2

在浏览器上访问c.bdelay.com,

在两台应用服务器都正常运行的情况下,根据权重进行分配负载。

假设B服务器挂了,不影响正常使用,负载全部分配到A上。

顺便几下几个apache操作命令

systemctl start httpd.service #启动

systemctl stop httpd.service #停止

systemctl restart httpd.service #重启

systemctl enable httpd.service #开机自动启动

nginx负载配置介绍

负载规则有几个可以定义

__weight:__权重,默认为1,权重越大,负载的流量越大

__down:__表示该主机不参与负载

__backup:__备用机,在所有参与负载大服务器down或者忙的适合,参与负载,所以一般情况下流量最少

__max_fails:__允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

__fail_timeout:__max_fails 次失败后,暂停的时间

proxy_next_upstream 这个选项使用方式。

proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;

此选项标识应用服务器返回以下(http_500 http_502 http_503 http_504 error timeout invalid_header)错误码都会进行重试另外一台服务器。对于读请求没影响,如果对于写请求就有可能会发生多次提交事件。

nginx 负载均衡分配策略

上面我使用的是nginx upstream的轮询策略,实际上还存在其它的策略

轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除

weight:指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。

url_hash(第三方):按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓存时比较有效。

定义方式:

upstream vilay {
	ip_hash;
	server 172.31.131.200:80 weight=3;
		server 172.31.131.202:80 weight=10;
}
	}