1 nginx负载均衡实战
Nginx的负载均衡可以用自带的upstream模块完成,本身还自带健康检查,非常简单。不但可以负载web,还可以负载fastcgi、memcached,功能非常强大
1.1 环境准备
#需要准备四台服务器、LB01、LB02、RS01、RS02
LB01:
ip:
eth0:172.16.50.1
eth1:10.0.0.1
LB02:
ip:
eth0:172.16.50.2
eth1:10.0.0.2
RS01:
ip:
eth0:10.0.0.80
RS01:
ip:
eth0:10.0.0.80
2 配置RS节点
要为集群配置后端真实服务器,也就是节点服务器
2.1 RS01
1、安装Nginx
http://www.cnblogs.com/wazy/p/8108824.htm #两台都要装
2、配置
[[email protected] ~]# echo "1" >/usr/local/nginx/html/index.html
3、启动
[[email protected] html]# /usr/local/nginx/sbin/nginx
#测试是否能正常访问
2.2 RS02
1、安装Nginx
http://www.cnblogs.com/wazy/p/8108824.html #两台都要装
2、配置
[[email protected] ~]# echo "2" >/usr/local/nginx/html/index.html
3、启动
[[email protected] html]# /usr/local/nginx/sbin/nginx
#测试是否能正常访问
2.3 策略
#后端服务器只允许调度器访问80端口
#这里负载均衡开启80端口
#web后端只对负载开启80端口
-A INPUT -s 192.168.1.1/32 -m tcp -p tcp --dport 8080:8083 -j ACCEPT
-A INPUT -s 192.168.1.2/32 -m tcp -p tcp --dport 8080:8083 -j ACCEPT
#centos6
firewall-cmd --permanent --add-rich-rule ‘rule family=ipv4 source address=192.168.1.1 port port=8080 protocol=tcp accept‘
firewall-cmd --permanent --add-rich-rule ‘rule family=ipv4 source address=192.168.1.1 port port=8081 protocol=tcp accept‘
firewall-cmd --permanent --add-rich-rule ‘rule family=ipv4 source address=192.168.1.1 port port=8082 protocol=tcp accept‘
firewall-cmd --permanent --add-rich-rule ‘rule family=ipv4 source address=192.168.1.1 port port=8083 protocol=tcp accept‘
#centos7
修改相应IP,然后测试就行了
3 配置LB
为集群配置调度器,也叫Nginx的反向代理,类似LVS的LB调度器
3.1 LB01
1、安装Nginx
http://www.cnblogs.com/wazy/p/8108824.html
2、配置nginx
[[email protected] ~]# cat /usr/local/nginx/conf/nginx.conf
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
sendfile on;
keepalive_timeout 65;
include extra/www.conf;
}
[[email protected] ~]# cat /usr/local/nginx/conf/extra/www.conf
upstream www_real_server {
server 10.0.0.80:80;
server 10.0.0.81:80;
}
server {
listen 80;
server_name www.daniel.com;
location / {
root html; #定义服务器的默认网站根目录位置
index index.html index.htm; #定义首页索引文件的名称
proxy_pass http://www_real_server; #请求转向server1 定义的服务器列表
proxy_set_header X-Real-IP $remote_addr; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
client_max_body_size 100m; #允许客户端请求的最大单文件字节数
}
}
4 Nginx负载均衡upstream模块介绍与LVS对比
Nginx负载均衡功能依赖于ngx_http_upstream_module模块,所支持的代理方式有proxy_pass,fastcgi_pass,memcached_pass
#常用参数选项
1、upstream 模块应放于nginx.conf配置的http{}标签内
2、upstream 模块默认算法是wrr(权重轮询 weighted round-robin)
server 10.0.0.80:80 | 负载均衡后面的RS配置,可以使IP或域名,端口不写,默认是80端口。高并发场景IP要换成域名,通过DNS做负载均衡 |
weight | 是权重,默认是1 |
max_fails=2 | 最大尝试失败的次数,默认是1,0表示禁止失败尝试。企业场景:京东1此,蓝汛10次,根据业务需求去配置 |
backup | 热备配置(RS节点的高可用),当前面激活的RS都失败后会自动启用热备RS |
fail_timeout=20s | 失败超时时间,默认是10s。京东3秒,蓝汛3秒,根据业务需求配置。常规业务2-3秒合理 |
down | 这标志着服务器永远不可以用,这个参数一直配合ip_hash 使用 |