在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;
}

