在CentOS 6上使用Nginx进行负载平衡Web服务器

时间:2020-01-09 10:42:31  来源:igfitidea点击:

说明

Web服务器Nginx是一个幻想的简单且便宜的前端负载平衡器,适用于各种规模的Web应用程序。它具有处理大量并发消息的能力,并且只需转发设置即可使其成为绝佳的选择。

服务器配置

本教程使用的实验室具有以下配置。但是,本教程将仅限于在igLOADBAL01上介绍Nginx。

内部主机名操作系统角色IP地址
igloadbal01. theitroad.testCentOS 6.5Nginx负载平衡器172.30.0.35
igwebapp01. theitroad.testCentOS 6.5Apache Web服务器172.30.0.50
igwebapp02. theitroad.testCentOS 6.5Apache Web服务器172.30.0.51
igwebapp03. theitroad.testCentOS 6.5Apache Web服务器172.30.0.52

应用配置

除了上面列出的真实主机名之外,还将为每个Web应用程序服务器的IP地址分配相同的公用主机名。他们每个人都将安装WordPress,并具有完全相同的配置和内容。

网站主机名应用程序数据库服务器
www.theitroad.comWordPresswebdb01. 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;
}