您的位置:首页 > 运维架构 > Nginx

高性能高可用方案Nginx (三)Upstream(负载均衡)

2015-10-16 14:45 567 查看
1、理论部分[b]1.1、nginx的负载均衡[/b]nginx的负载均衡由upstream模块实现[b]1.2、nginx的模块[/b][b][b]1.2.1、nginx的模块分类[/b][/b]nginx模块分为三大类:1)handler2)filter3)upstream(上游)[b][b]1.2.2、模块的作用[/b][/b]handler&filter - 用于完成单机工作upstream - 用于跨越单机限制,完成网络数据接收、处理和转发[b][b]1.2.3、upstream的意义[/b][/b]为nginx提供跨越单机的横向处理扩展能力,使nginx摆脱只能作为终端节点,而具备网络应用级别的拆分、封装和整合的战略功能。[b]1.3、upstream的使用方法[/b][b][b]1.3.1、定义upstream组和调用[/b][/b]
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}

server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://myproject; }
}
}
[b][b]1.3.2、upstream的分配方式[/b][/b]1)round robin(默认)轮询,每个请求按照时间顺序逐一分配,如果后端服务器宕机,会自动剔除。2)weight加权轮询,用于解决后端服务器性能不均的情况。定义方法:
upstream cmdschoolSer {
server 10.168.0.185 weight=10;
server 10.168.0.186 weight=10;
}
3)ip_bash每个请求按照访问ip的bash结果分配,故访客固定访问一个后端服务器,可以解决session长期保持问题。定义方法:
upstream cmdschoolSer {
ip_hash;
server 10.168.0.185:8080;
server 10.168.0.186:8080;
}
4)fair(第三方)按后端服务器的响应时间分配,响应时间短的优先分配。定义方法:
upstream cmdschoolSer {
fair;
server 10.168.0.185:8080;
server 10.168.0.186:8080;
}
5)url_bash(第三方)定义方法:
upstream cmdschoolSer {
server 10.168.0.185:8080;
server 10.168.0.186:8080;
hash $request_uri;
hash_method crc32;
}
6)tips
upstream cmdschoolSer {#定义负载均衡设备的ip及设备状态
ip_hash;
server 10.168.0.185:8080 down;
server 10.168.0.185:8081 weight=2;
server 10.168.0.186:8080;
server 10.168.0.186:8081 backup;
}
[b][b]1.3.3、设备的状态[/b][/b]1)down表示当前server暂时不参与负载2)weight数值越大权重越大(默认1)3)max_fails允许请求失败的次数,超过失败次数,返回proxy_next_upstream模块定义的错误(默认1)4)fail_timeoutmax_fails次失败后,暂停的时间5)backup其他所有非backup机器down或者忙的时候,请求backup机器(压力最轻)2、实验部分[b]2.1、实验信息[/b][b][b]2.1.1、实验基础[/b][/b]你已经做完以下实验:/article/4214698.html[b][b]2.1.2、主机信息[/b][/b]lbSerip address=10.168.0.183hostname=lbSer
proxySer:
ip address=10.168.0.185
hostname=proxySer

tomcatSer:
ip address=10.168.0.188
hostname=tomcatSer

client:
ipaddress=10.168.0.8
hostname=client
[b][b]2.1.3、yum包安装[/b][/b]
In lbSer
yum -y install http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum -y install nginx
[b]2.2、配置部分[/b]
In lbSer[b][b]2.2.1、step[/b][/b]vim编辑/etc/nginx/nginx.conf将原来http{}部分删除,替换为如下代码:
http {
upstream cmdschool {
server 10.168.0.185:81;
server 10.168.0.185:82;
}

server {
listen 80;
server_name www.cmdschool.org;
location / {
proxy_pass http://cmdschool; }
}
}
[b][b]2.2.2、step[/b][/b]启动服务并设置为开机启动
/etc/init.d/nginx restart
chkconfig nginx on
[b][b]2.2.3、step[/b][/b]vim编辑/etc/sysconfig/iptables增加如下代码:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
[b][b]2.2.4、step[/b][/b]重启防火墙
/etc/init.d/iptables restart
In client[b][b]2.2.5、step[/b][/b]测试负载均衡
curl http://10.168.0.182 curl http://10.168.0.182 curl http://10.168.0.182 curl http://10.168.0.182[/code]---------------------------------------------------------- 理论部分参阅资料:1)官方:http://www.nginx.org2)Tengine:http://tengine.taobao.org
实验部分参阅资料:1)Nginx官方下载路径:http://nginx.org/en/download.html2)Nginx+Tomcat负载均衡配置(Upstream模块)
https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/http://tengine.taobao.org/book/chapter_5.html/article/5025886.htmlhttp://onlyzq.blog.51cto.com/1228/557848/http://developer.51cto.com/art/201407/446626.htmhttp://www.myhack58.com/Article/sort099/sort0102/2011/31642.htm

本文出自 “老谭linux集群博客” 博客,请务必保留此出处http://cmdschool.blog.51cto.com/2420395/1703509
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: