Apache和Nginx如何配置负载均衡
Apache配置
两台服务器
1、例如我有127.0.0.1(master)、127.0.0.2(minion)
2、我需要统一入口为127.0.0.1
apache2设置负载均衡
1、方法一(未实践):
1 2 3 4
| 在http.conf(即/apache2.conf)添加下列代码 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so
|
2、方法二:
1 2 3 4 5
| 添加软链 sudo ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load sudo ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load sudo ln -s /etc/apache2/mods-available/proxy_balancer.load /etc/apache2/mods-enabled/proxy_balancer.load sudo ln -s /etc/apache2/mods-available/slotmem_shm.load /etc/apache2/mods-enabled/slotmem_shm.load
|
修改000-default.conf
在*.80下面添加下列代码
1 2 3 4 5 6 7 8 9 10 11 12 13
| ProxyRequests Off <Proxy balancer://mycluster> BalancerMember http://127.0.0.1:8080 loadfactor=2 //loadfactor为分配的比例 BalancerMember http://127.0.0.2 loadfactor=1 </Proxy> ProxyPass / balancer://mycluster/ //注意 balancer前面有空格
<Location /balancer-manager> SetHandler balancer-manager order Deny,Allow Deny from all Allow from localhost </Location>
|
注:因为2台服务器,所以我上面是通过127.0.0.1的80端口转发到了8080
三台服务器
修改000-default.conf
在*.80下面添加下列代码
1 2 3 4 5 6 7 8 9 10 11 12 13
| ProxyRequests Off <Proxy balancer://mycluster> BalancerMember http://127.0.0.2 loadfactor=1 BalancerMember http://127.0.0.3 loadfactor=1 </Proxy> ProxyPass / balancer://mycluster/ //注意 balancer前面有空格
<Location /balancer-manager> SetHandler balancer-manager order Deny,Allow Deny from all Allow from localhost </Location>
|
注:此时访问127.0.0.1 你的请求就会被分配到2或者3服务器上面了
Nginx配置
添加下列代码
1 2 3 4 5 6
| location / { proxy_pass http://server_name.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X_Forwarded-For $proxy_add_x_forwarded_for; }
|
Nginx常见负载均衡策略
修改127.0.0.1服务器下的nginx.conf添加下列代码(DNS轮询)
1 2 3 4
| upstream test.com{ server 127.0.0.2; server 127.0.0.3; }
|
Weight
1 2 3 4
| upstream test.com{ server 127.0.0.2 weight=3; server 127.0.0.3 weight=3; }
|
权重越高,在被访问的概率越大,如上例,分别是30%,70%。
ip_hash(主要解决session问题)
1 2 3 4 5
| upstream test.com{ ip_hash; server 127.0.0.2; server 127.0.0.3; }
|
fair(第三方)
1 2 3 4 5
| upstream test.com{ fair; server 127.0.0.2; server 127.0.0.3; }
|
127.0.0.2和127.0.0.3服务器下面分别添加server_name.com.conf即可
常见问题
配置不生效
1、查看配置完后是否重启apache或者nginx
2、无法链接服务器,查看防火墙等是否关闭