上周末利用现有的2台美国vps,一台香港vps做了些实验,记录下关键的流程步骤
1.什么是反向代理?
反向代理就是当用户访问web的时,web负载均衡器去请求后端的web服务器集群,按照规则和算法,去请求其中一台,返回数据结果给均衡器,呈现给用户
用户不知道访问的是哪台web服务器。
2.什么是正向代理?
用户通过VPN或者SOCKET5代理或者通过某种途径代理上网去访问web,web服务器不知道用户的真实IP
3.配置Nginx负载均衡(全配)
组织架构如下:
192.168.1.10:80 (主Nginx)
192.168.1.11:80 (server1)
192.168.1.12:80 (server2)
为了统一环境全部使用centos5.8 final版 + lnmp1.0
假设环境都已经安装完毕
- 配置主Nginx
- vi /usr/local/nginx/conf/nginx.conf
- #在http段添加,两台后端nginx
- upstream nginx.chenjie.info {
- server 192.168.1.11:80;
- server 192.168.1.12:80;
- }
- #修改主配置文件的server
- server_name nginx.chenjie.info;
- 在server下添加一个location
- location / {
- proxy_pass http://nginx.chenjie.info;
- 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
- /etc/init.d/nginx reload #平滑重启
- #后端nginx配置如下
- 只要把server_name解析到nginx.chenjie.info 即可;
- #修改从Nginx配置
- vi /path/to/nginx/conf/nginx.conf
- server{
- listen 80;
- server_name nginx.chenjie.info; #主要修改server_name
- index index.html index.htm index.php;
- root /home/wwwroot/default;
- }
- #其他机器安装此配置。重启nginx即可
- #域名解析:只要把域名解析到主Nginx的IP地址即可,(如果是内网搭建测试可以采用修改host)
如何测试nginx是否负载均衡成功?
ping 域名?
No。负载均衡采用ping是看不出的,前端nginx做调度根据规则选择后端机器,后端机器相应然后回传数据给前端nginx,前端nginx把页面显示给用户,所以用户是看不到哪台机器回传数据的。所以ping域名一直是第一台主nginx服务器地址
查看Nginx日志,去查看每台机器的访问日志.
可以为不同的web服务器放不同的页面去观察。
===================陈捷华丽的补充线=================
上面配置的是一台主负载到多台从nginx。此时主服务器只承担分发效果,他的80已经用来分发,如果你想利用主服务器也来作为内容响应,需要主服务器里增加一个上面从服务器的配置并且修改里面的80修改成其他端口比如8080,这样就可以充分使用主服务器了。另外在使用过程中如果有一台从服务器宕机,nginx是可以识别的响应到其他正常的服务器的。
上面的配置都是nginx默认的负载均衡策略,基本是一个随机的策略,如果需要其他策略比如根据真实负载来均衡分发那就需要在ngnix编译的编译进对应的策略模块,大家可以自行搜索解决方案,在此不再赘述。