在CentOS 6上使用Nginx进行负载平衡Web服务器
时间:2020-01-09 10:42:31 来源:igfitidea点击:
说明
Web服务器Nginx是一个幻想的简单且便宜的前端负载平衡器,适用于各种规模的Web应用程序。它具有处理大量并发消息的能力,并且只需转发设置即可使其成为绝佳的选择。
服务器配置
本教程使用的实验室具有以下配置。但是,本教程将仅限于在igLOADBAL01上介绍Nginx。
内部主机名 | 操作系统 | 角色 | IP地址 |
---|---|---|---|
igloadbal01. theitroad.test | CentOS 6.5 | Nginx负载平衡器 | 172.30.0.35 |
igwebapp01. theitroad.test | CentOS 6.5 | Apache Web服务器 | 172.30.0.50 |
igwebapp02. theitroad.test | CentOS 6.5 | Apache Web服务器 | 172.30.0.51 |
igwebapp03. theitroad.test | CentOS 6.5 | Apache Web服务器 | 172.30.0.52 |
应用配置
除了上面列出的真实主机名之外,还将为每个Web应用程序服务器的IP地址分配相同的公用主机名。他们每个人都将安装WordPress,并具有完全相同的配置和内容。
网站主机名 | 应用程序 | 数据库服务器 |
---|---|---|
www.theitroad.com | WordPress | webdb01. theitroad.test |
列出数据库实际上与本教程无关,只是为了说明WordPress数据库未托管在任何Web服务器上。
安装Nginx
- 为Nginx创建YUM存储库文件。
vi /etc/yum.repos.d/nginx.repo
- 向其添加以下行。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
- 保存文件并退出文本编辑器。
- 安装Nginx。
yum install nginx
配置Nginx
- 在文本编辑器中打开默认站点配置文件。
vi /etc/nginx/conf.d/default.conf
- 将上游模块添加到配置文件的顶部。后端名称可以替换为我们选择的名称。所有三个后端服务器均由其内部DNS主机名定义。我们可以改用IP地址。
upstream website1 { server igwebapp01.theitroad.test; server igwebapp02.theitroad.test; server igwebapp03.theitroad.test; }
- 将权重值分配给服务器。值越小,相对于其他服务器,服务器将收到更多的流量。 igwebapp01和igwebapp02都将分配一个权重值1,以在它们之间平均分配负载。但是,将为igwebapp03分配较高的权重5以最大程度地减少其负载。它将每7(1 + 1 + 5)个连接接收一次。
upstream website1 { server igwebapp01.theitroad.test weight=1; server igwebapp02.theitroad.test weight=1; server igwebapp03.theitroad.test weight=5; }
- 我们需要用户登录WordPress CMS才能始终连接到同一服务器。如果不这样做,它们将在服务器周围被拖曳并不断地登录。我们使用hash指令强制用户始终与同一服务器通信。
upstream website1 { ip_hash; server igwebapp01.theitroad.test weight=1; server igwebapp02.theitroad.test weight=1; server igwebapp03.theitroad.test weight=5; }
- 现在,我们将服务器指令配置为侦听传入的连接,然后将它们转发到后端服务器之一。在上游指令下方,配置服务器指令。
server { listen 80; # Listen on the external interface server_name www.theitroad.com; location / { proxy_pass http://website1; } }
- 保存配置文件并退出文本编辑器。
- 将默认配置重新加载到Nginx中。
service nginx reload
其他选项和指令
将服务器标记为离线(离线)
我们可能需要关闭其中一台服务器以进行紧急维护。并且我们希望能够做到这一点而不会影响用户。 Down指令将允许我们执行此操作。
upstream website1 { ip_hash; server igwebapp01.theitroad.test weight=1 down; server igwebapp02.theitroad.test weight=1; server igwebapp03.theitroad.test weight=5; }
健康检查
启用运行状况检查以自动检查上游组中每个服务器的运行状况。默认情况下,通过发送http连接每5秒检查一次每个服务器。如果服务器未返回2XX或者3XX状态,则会将其标记为运行状况不佳,并且不再将连接转发给它。
upstream website1 { server igwebapp01.theitroad.test; server igwebapp02.theitroad.test; server igwebapp03.theitroad.test; health_check; }
上游服务器端口
除非指定了端口,否则所有请求都将转发到端口80。如果后端Web服务器将应用程序托管在另一个端口上,则可以在服务器名称/ ip地址的末尾指定它。
upstream website1 { server igwebapp01.theitroad.test:8080; server igwebapp02.theitroad.test:8080; server igwebapp03.theitroad.test:9000; }
备份服务器
我们需要将服务器作为节点的意外故障时的热备份。备份服务器仅在节点发生故障时处理流量,而在所有节点都正常时将保持空闲状态。
upstream website1 { server igwebapp01.theitroad.test; server igwebapp02.theitroad.test; server igwebapp03.theitroad.test; server igwebbkup01.theitroad.test backup; }