负载均衡的配置
最少你得有3台服务器,负载均衡服务器,web1,web2
负载均衡服务器 10.10.152.1 lnmp搭建好
web1 10.10.152.2 lnmp搭建好
web2 10.10.152.3 lnmp搭建好
(1)先保证web1和web2都能正常访问
在/usr/local/nginx/html目录下新建一个文件 index.php
内容: echo '111';
在/usr/local/nginx/html目录下新建一个文件 index.php
内容:echo '222';
访问ip地址可以正常的访问到 111 和 222
(2)配置负载均衡服务器10.10.152.1
新建一个虚拟主机配置文件
vi /usr/local/nginx/conf/vhost/www.fuzai.com.conf
写入如下内容:
upstream pools{ #pools名字可以自己任意指定
server 10.10.152.2:80;
server 10.10.152.3:80;
}
server {
server_name www.fuzai.com;
location / {
proxy_pass http://pools; #同上
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
(3)在windows下面打开 hosts文件
10.10.152.1 www.fuzai.com //将域名映射到负载均衡服务器中
(4)配置web1和web2
vi /usr/local/nginx/conf/nginx.conf
将 server_name 改为 www.fuzai.com
(5)重启每个nginx
service nginx restart
(6)在windows浏览器中输入 www.fuzai.com 就会看到 111 和 222 的切换
upstream 支持的负载均衡算法
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream bakend {
server 192.168.159.10 weight=10;
server 192.168.159.11 weight=10;
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream resinserver{
ip_hash;
server 192.168.159.10:8080;
server 192.168.159.11:8080;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream resinserver{
server server1;
server server2;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
upstream resinserver{
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
upstream 支持的状态参数
在HTTPUpstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:
down,表示当前的server暂时不参与负载均衡。
weight 默认为1.weight越大,负载的权重就越大。
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
参数设置方式:
upstream pools{
ip_hash;
server 192.168.10.13:80;
server 192.168.10.14:80 down;
server 192.168.10.15:8009 max_fails=3 fail_timeout=20s;
server 192.168.10.16:8080;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。