nginx在LB Cluster集群中也可以扮演一定的角色,即反向代理与负载均衡。在一个Web服务中,来自客户端的请求可以经由nginx服务器转发至后端服务器,并且按照一定的算法实现负载均衡。
1.反向代理
1)在192.168.10.17/24与192.168.10.77/24主机上安装nginx,提供web服务。
编辑两台主机的主页文件内容分别为
inode17 page 和inode77 page
2)主机172.16.10.66提供nginx的反向代理服务
为了与后端主机进行通信,此主机需要配置两个IP接口,另一个为192.168.10.66/24
ifconfig eth0:0 192.168.10.66/16
打开nginx的配置文件,在location段中添加一行
proxy_pass http://192.168.10.17; ##将客户端请求反代至后端服务器
注:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机;当proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri;
3)打开网页测试
http://172.16.10.66
2.提供缓存
1)在172.16.10.66主机上,打开nginx配置文件,在http{}段添加下列行,指明缓存路径,名称等相关信息
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:1 keys_zone=pcache:10m;
在server{}段中添加下列几行内容
proxy_cache pcache; ##引用上述定义的缓存
proxy_cache_key $request_uri; ## 缓存的关键字
proxy_cache_valid 200 302 1m; ## 缓存元素,指明要缓存的资源
proxy_cache_valid 301 1h;
proxy_cache_valid any 1h;
2)检测语法错误,并重新载入配置文件
3)在另一台主机上使用ab命令可以检测添加缓存前后响应速度
3.负载均衡
nginx通过upstream模块实现后端服务器的负载均衡
1)在172.16.10.66主机上,打开nginx配置文件,在http段定义upstream{}上下文
upstream test_lb {
server 192.168.10.17 weight=1; ## 指向后端服务器,权重默认为1
server 192.168.10.77 weight=2;
}
注:可以在上述upsteam中定义算法
least_conn 最少连接调度算法
least_time header|last_byte; 最短平均响应时间和最少连接
ip_hash 源地址hash算法,将同一ip地址的访问发往同一服务器
hash key [consistent] 基于指定的key的hash表实现请求调度
如 hash $request_uri consistent
hash $remote_addr
hash $cookie_name
2)更改location中proxy_pass为:
proxy_pass http://test_lb;## 已定义的upstream
3)检测语法错误,并重新载入配置文件
4)在客户机上进行测试
输入for i in `seq 10` ;do curl 172.16.10.66 ;done
可以看到两台服务器页面比例为1:2