Nginx负载均衡
- 负载均衡:负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
配置负载均衡实例
-
搭建实验环境
- A机器为客户机,只有一块网卡,不能访问外网
- B机器为Nginx负载均衡机器,两块网卡,既能与A机器通信,也可以访问外网
-
预期结果:A机器能通过B机器上配置的负载均衡来访问外网的web站点
-
实验步骤:
- 用www.qq.com为例子,通过访问ping.chianz.com查询得www.apelearn.com对应的ip地址。
- 在B机器上创建/etc/nginx/conf.d/www.apelearn.com.conf的配置文件
- 在配置文件中写下如下内容:
upstream apelearn{ ip_hash; server 115.159.51.96:80 weight=100; server 47.104.7.242:80;}server{ listen 80; server_name www.apelearn.com; location / { proxy_pass http://apelearn; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}
- 配置文件中的weight是权重的意思,最大100,优先访问最高,最小0。
- 在A机器上配置hosts文件,让www.apelearn.com指向B机器的内网地址
- 在B机器上执行ngixn -t 的命令来验证配置文件是否有错,然后reload -s reload
[root@localhost conf.d]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@localhost conf.d]# nginx -s reload
- 将443端口加入firewalld防火墙的规则中,让防火墙放行80端口。
[root@localhost conf.d]# firewall-cmd --add-port=80/tcp --permanent success [root@localhost conf.d]# firewall-cmd --reload success
-
实验结果: 可以正常访问该站点。
-
实际生产当中的负载均衡往往是使用的专门的硬件负载均衡,原理是跟实验一样的,不一样的地方是,web服务时我们提供的,有多台服务器支撑,这些服务器都是在同一内网下的,而我们的负载均衡设备是有内往外网两个网口的。我们的域名对应的ip是负载均衡的外网ip,当有大量用户访问站点时,负载均衡柜把这些访问请求按按我们的需求分配给不同的服务器来处理。