Loading... ## 前言 之前写过LVS集群的实现方式,虽然LVS的性能非常的高;但是LVS是工作在`传输层`的,对于应用层是无能为力的,例如:web环境需要使用https,这次后端服务器全部都要配置ssl证书;且LVS没有健康检测功能,需要借助其他方式进行健康检测。 Nginx不单单可以做一个web服务,它还可以做缓存服务器,负载均衡等;由于工作在应用层,它的并发量低于LVS;同时自身也具有较为优秀`I/O复用:epoll`的并发能力;因为它的I/O模型为以下几种: noblocking #异步 asynchronus #非阻塞 signal driven #事件驱动机制 nginx实现负载均衡的主要模块: ngx_http_proxy_module ngx_http_upstream_module ## 一、环境准备 **一共需要三台虚拟机进行模拟** 拓扑图如下: ![nginx负载均衡.jpg](https://blog.beijixs.cn/usr/uploads/2019/10/3266568211.jpg) - 反向代理服务: PIP:172.16.10.100 #桥接 LIP:192.168.0.1 #接口为vmnet2 - UpStream-1: UIP:192.168.0.2 #接口为vmnet2 - UpStream-2 UIP:192.168.0.3 #接口为vmnet2 分别在两个上游服务器启动httpd服务,分别提供不同的内容 上游服务-1:Httpd Server-1 上游服务-2:Httpd Server-2 ## 二、编辑配置文件 (1).定义上游服务集群,只能在`http`配置端加入集群 > server address [parameters]; upstream upservers { server 192.168.0.2 max_fails=2 fail_timeout=1s; server 192.168.0.3 max_fails=2 fail_timeout=1s; } !> Nginx默认算法时加权轮询的算法 upservers: #上面的upservers字段为集群的组名,可自定义 ip_hash; #为源地址hash,可用于session保持;定义在upstream中; <div class="tip inlineBlock warning"> 但是现在很多客户端都被运营商做了NAT,用ip_hash算法将会导致负载不均 </div> 其中常用的`parameters`如下: weight=number #定义权重 max_fails=number #当上游服务器健康检测失败次数达到"number",就下线该"Server"; fail_timeout= #健康检测的超时时长 down #手动下线标记,可用于升级上游服务器时使用 backup #备份主机标记,表示主服务器正常时该主机不启用,一旦主服务下线就调度至该主机 (2).配置`Server`段 location / { proxy_pass http://upservers; #http://集群组名 proxy_set_header Host $host; #自定义头,名称为Host,值为$host(客户端请求的HOST) proxy_set_header X-Real-IP $remote_addr; #自定义头,名称为X-Real-IP,值为$remote_addrt(客户端IP) } !> 自定义头部的作用:上游服务器收到的是Proxy Server的访问,客户端IP也就是Proxy Server的IP,此时自定义头,修改上游服务器日志记录方式,既可以记录真实客户端IP。当然也可以将客户端IP记录在Proxy Server上。 修改上游服务器,使其记录真实客户端IP。本次测试上游服务为`httpd`服务。日志记录修改如下: > vim /etc/httpd/conf/httpd.conf 原有的:LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 修改为:LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined !> 记得重载配置文件 ## 三、测试 客户端此时访问`Proxy Server`,将会轮询调度 ![](https://blog.beijixs.cn/usr/uploads/2019/10/4085399678.png) nginx反向代理时缓存的配置 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://blog.beijixs.cn/archives/339/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://blog.beijixs.cn/usr/uploads/2019/10/268775149.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">Nginx负载均衡时加速访问--cache</p> <div class="inster-summary text-muted"> 前言当Nginx作为反向代理服务器的同时可以作为缓存服务器,用户请求的静态资源缓存到反代服务器上,可以加速访问。因... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> ------------ <center>END</center> 最后修改:2019 年 10 月 10 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏