网站首页 > 技术教程 正文
安装NGINX作为负载平衡器
高流量网站可以分发到不同的服务器,以更好地分散工作负载或实现冗余。 系统集群中的每个服务器都有自己的网站或Web应用程序文件副本,并且能够满足用户的请求。 然后,技巧是以有序的方式将用户的请求路由到这些服务器之一。 有不同的方法,但常见的方法是设置负载均衡器或反向代理服务器。
NGINX比Apache更新一些; 十多年前专门为处理高负载连接而编写的,它可以用作Web服务器,代理,缓存和负载均衡器。 在本文中,我们将了解如何将NGINX设置为负载均衡器,以在客户端和Apache服务器集群之间代理请求.
准备
此配方需要具有有效网络连接的CentOS系统。 它假设你有其他配置Apache的系统来服务网站,如前面的配方所述; 我们将使用IP地址192.168.56.20和192.168.56.30来引用这些系统。 NGINX的包由EPEL存储库托管; 如果存储库尚未注册,请参阅第4章,软件安装管理中的注册EPEL和Remi存储库配方。 通过使用root帐户登录或使用sudo,还需要管理权限.
怎么做
按照以下步骤使用NGINX设置反向代理:
- 从EPEL存储库安装nginx包:
yum install nginx
- 使用文本编辑器打开NGINX服务器的配置文件:
vi /etc/nginx/nginx.conf
- 在http块中,添加新的上游块以标识群集中的服务器:
upstream cluster { server 192.168.56.20; server 192.168.56.30; }
- 找到位置块并添加引用upstreamb将更改保存到配置并关闭文件。
- 启动服务器并使其在系统重新启动时自动启动lock的proxy_pass选项:
location / { proxy_pass http://cluster; }
- 将更改保存到配置并关闭文件。
- 启动服务器并使其在系统重新启动时自动启动:
systemctl start nginx.service systemctl enable nginx.service
- 在系统的防火墙中打开端口80以允许HTTP请求通过:
firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --reload
工作原理
像往常一样,我们开始安装程序包,这次是nginx。 该包可在EPEL存储库中找到。 安装完成后,我们更新了其配置,识别了集群中的服务器,然后代理了请求。 首先,我们添加了一个上游块:
upstream cluster { server 192.168.56.20; server 192.168.56.30; }
cluster只是我们分配给这组服务器的名称,因此我们可以按名称引用该组。 如果要平衡多个集群,则可以有多个上游块。 其中的每个服务器条目都提供运行该站点的其中一个系统的IP地址或主机名。
接下来,我们找到了主要的位置块并添加了一个proxy_pass参数。 proxy_pass将转发请求转发到我们的集群组中的一个系统,并返回响应以满足请求:
location / {
proxy_pass http://cluster;
}
NGINX和托管Web服务器之间的通信是通过http完成的,因为这是proxy_pass值中指定的协议。 这很好,因为群集系统将在受信任网络上的负载均衡器后面运行。 如果您的站点是通过HTTPS提供的,则NGINX将需要处理TLS协商,因为它是客户端看到的公共服务器点; 客户不知道平衡器背后的任何东西。
要配置NGINX以处理HTTPS请求,请在服务器块内更新listenoptions以侦听端口443.然后添加带有ssl_certificate和ssl_certificate_key选项的条目以分别标识证书和密钥:
server {
# listen 80 default_server;
# listen [::]:80 default_server;
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate /etc/pki/tls/certs/www.example.pem;
ssl_certificate_key /etc/pki/tls/private/www.example.key;
...
}
完成更改并保存配置文件后,打开防火墙中的端口443并重新启动NGINX:
firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --reload systemctctl restart nginx.service
循环法是负载平衡的默认方法。 这意味着第一个请求被代理到集群中的第一个服务器,然后是第二个服务器旁边,依此类推。 当NGINX到达列表的末尾时,它将从列表顶部再次启动,代理对第一个服务器的下一个请求。 我们可以使用其他策略,例如加权平衡。
为了执行加权平衡,我们为任何服务器分配权重,它将处理每次迭代的请求数。 这里,第一台服务器将在NGINX代理任何第二台服务器之前处理五个请求:
upstream cluster { server 192.168.56.20 weight=5; server 192.168.56.30; }
使用负载平衡时,请记住,任何一台Web服务器都不能保证接收用户发送的下一个请求。 如果您正在平衡对使用会话的Web应用程序的访问,则可能会出现问题。 您可能需要考虑将会话数据存储在每个Web服务器可以访问的中央系统上,可能使用Redis或Memcache等数据库.
注意
我建议您避免任何依赖于会话持久性的平衡策略。 http://www.chaosincomputing.com/2012/05/sticky-sessions-are-evil上的帖子很好地概述了他们的问题.
See also
Refer to the following resources for more information on working with NGINX and load balancing:
- The NGINX website (https://www.nginx.com/)
- How to install NGINX on CentOS 7 (https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7)
- Configuring HTTPS servers (http://nginx.org/en/docs/http/configuring_https_servers.html)
- Using NGINX as a load balancer (http://nginx.org/en/docs/http/load_balancing.html)
- How to store PHP sessions in Memcache (http://www.scalescale.com/tips/nginx/store-php-sessions-memcached)
猜你喜欢
- 2024-10-14 Centos7常用命令总结(centos7.5命令大全)
- 2024-09-30 centos7使用nginx+uwsgi+daphne+supervisor+redis部署Django
- 2024-09-30 阿里云CentOS7.6下安装Nginx(阿里云搭建nginx)
- 2024-09-30 Centos7利用gz包安装Nginx(centos7.5安装gcc)
- 2024-09-30 Centos 7下安装配置Nginx(centos7安装mysql8)
- 2024-09-30 CentOS7常用软件的安装(JDK+Tomcat+Nginx+Redis+MySQL)
- 2024-09-30 centos7系统下Nginx配置搭建(centos7 搭建部署conflunce)
- 2024-09-30 一文读懂服务器centos7.0安装指导指南(详细)
- 2024-09-30 为何还有人在百度centos7环境下安装nginx?
- 2024-09-30 Kali与编程:Centos7上搭建web服务器
你 发表评论:
欢迎- 最近发表
-
- Linux入门-普通用户赋予sudo权限(linux基础用户及权限管理的思维导图)
- Linux系统更改系统用户与密码,RK3568工控主板演示
- 在Windows服务器上安装Linux系统5种主要方法!
- Linux系统非root用户执行Docker命令
- 2、linux命令-用户管理(linux用户和用户组管理)
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
- Linux中wheel组的使用(centos wheel组和sudo)
- 信息安全实战案例:Linux系统用户权限管理
- Linux 组的管理:groupmod命令 + 练习 + 思维导图
- Linux中的用户管理(linux用户管理的命令)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)