WEB集群是由多台Web服务器主机相互联结而形成的一种服务器体系结构,一般结构主要由负载均衡器和后端多个Web节点组成。用户访问请求首先进入负载均衡器,由它根据负载均衡策略将请求分配给后端某个Web应用节点。
本实验采用Nginx实现负载均衡。
3.1 申请云资源
3.1.1 创建云服务器
1. 打开谷歌浏览器,进入”弹性云服务器 ECS”控制台页面,选择右上角的【购买弹性云服务器】。如下图所示:

2. 在云服务器购买页面,根据以下参数,创建2台云服务器。
请严格按照以下参数进行创建,其余参数请保持默认。
云服务器1:
●计费模式:按需计费
●规格:通用计算型s6,s6.small.1
●镜像:公共镜像 CentOS 7.4 64bit
●系统盘:高IO
●网络:选择预置的 vpc-HA 及 subnet-HA,并手动分配 IP 地址为192.168.0.10
●安全组:选择sg-HA
●弹性公网IP:暂不购买
●云服务器名称:ecs-HA1
●密码:Huawei@1234
云服务器2:
●计费模式:按需计费
●规格:通用计算型s6,s6.small.1
●镜像:公共镜像 CentOS 7.4 64bit
●系统盘:高IO
●网络:选择预置的 vpc-HA 及 subnet-HA,并手动分配 IP 地址为192.168.0.20
●安全组:选择sg-HA
●弹性公网IP:暂不购买
●云服务器名称:ecs-HA2
●密码:Huawei@1234
3.1.2 申请虚拟 IP
1. 进入“虚拟私有云”控制台,选择左侧导航栏中的【子网】。
2. 进入子网页面,单击 subnet-HA,进入子网详情页后,单击【IP地址管理页签】。如下图所示:

3. 单击【申请虚拟IP地址】后,在弹出窗口中单击【确定】即可。
请记录虚拟 IP 地址,后续步骤需使用。
3.2 配置云服务器 esc-HA1 环境
1. 登录云服务器控制台,单击 ecs-HA1,进入详情页面,选择【弹性公网IP】页签。如下图所示:

2. 在弹出窗口中,将实验预置的弹性公网 IP 绑定至 ecs-HA1。
3. 打开实验桌面中的 Xfce 终端,通过以下命令,登录 ecs-HA1。
ssh root@ecs-HA1的公网IP
登录密码为创建云服务器时设置的密码,本文为 Huawei@1234
4. 执行以下命令安装 nginx、keepalived 软件包及相关依赖包。
yum install nginx keepalived -y
5. 执行以下命令,备份 nginx 配置文件。
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
6. 执行以下命令,创建新的配置文件。
vim /etc/nginx/nginx.conf
输入以下内容
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
7. 执行以下命令,编辑 index.html 文件内容以演示访问效果并保存。
vim /usr/share/nginx/html/index.html
示例如下:
Welcome to ECS-HA1
8. 执行以下命令,设置 nginx 服务开机自启动并启动服务。
systemctl enable nginx
systemctl start nginx.service
9. 使用 Xfce 执行以下命令,进行单节点访问验证。
curl ecs-HA1公网IP
返回结果如下图所示:

10. 执行以下命令,备份 keepalived 配置文件。
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
11. 执行以下命令,创建新的配置文件。
vim /etc/keepalived/keepalived.conf
输入以下内容,并保存:
注意:请使用上文中记录虚拟 IP 地址,替换代码中的虚拟 IP 地址。
! Configuration File for keepalived
global_defs {
router_id master-node
}
vrrp_script chk_http_port {
script "/etc/keepalived/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
mcast_src_ip 192.168.0.10
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.0.10
virtual_ipaddress {
虚拟IP地址
}
track_script {
chk_http_port
}
}
12. 执行以下命令,编辑 nginx 监控脚本并保存。
vim /etc/keepalived/chk_nginx.sh
输入以下内容,并保存:
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl start nginx.service
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl stop keepalived.service
fi
fi
13. 执行以下命令,给脚本授权。
chmod +x /etc/keepalived/chk_nginx.sh
14. 执行以下命令,设置 keepalived 服务开机自启动并启动服务。
systemctl enable keepalived
systemctl start keepalived.service
3.3 配置云服务器 esc-HA2 环境
1. 登录云服务器控制台,单击 ecs-HA1 进入详情页面,选择【弹性公网IP】页签,并单击弹性公网 IP 后的【解绑】。如下图所示:

2. 进入 ecs-HA2 详情页面,选择【弹性公网IP】页签,弹性公网 IP 绑定至 ecs-HA2。绑定完成后如下图所示:

3. 打开实验桌面中的 Xfce 终端,执行以下命令,删除 ecs-HA1 相关登录信息。
rm -rf /home/user/.ssh/known_hosts
4. 通过以下命令,登录 ecs-HA2。
ssh root@ecs-HA2的公网IP
登录密码为创建云服务器时设置的密码,本文为 Huawei@1234
5. 执行以下命令安装 nginx、keepalived 软件包及相关依赖包。
yum install nginx keepalived -y
6. 执行以下命令,备份 nginx 配置文件。
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
7. 执行以下命令,创建新的配置文件。
vim /etc/nginx/nginx.conf
输入以下内容:
user root;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
8. 执行以下命令,编辑 index.html 文件内容以演示访问效果并保存。
vim /usr/share/nginx/html/index.html
示例如下:
Welcome to ECS-HA2
9. 执行以下命令,设置 nginx 服务开机自启动并启动服务。
systemctl enable nginx
systemctl start nginx.service
10. 使用 Xfce 执行以下命令,进行单节点访问验证。
curl ecs-HA2公网IP
返回结果如下图所示:

11. 执行以下命令,备份 keepalived 配置文件。
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
12. 执行以下命令,创建新的配置文件。
vim /etc/keepalived/keepalived.conf
输入以下内容,并保存:
注意:请使用上文中记录虚拟 IP 地址,替换代码中的虚拟 IP 地址。
! Configuration File for keepalived
global_defs {
router_id master-node
}
vrrp_script chk_http_port {
script "/etc/keepalived/chk_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 192.168.0.20
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 192.168.0.20
virtual_ipaddress {
虚拟IP地址
}
track_script {
chk_http_port
}
}
13. 执行以下命令,编辑 nginx 监控脚本并保存。
vim /etc/keepalived/chk_nginx.sh
输入以下内容,并保存:
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl start nginx.service
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl stop keepalived.service
fi
fi
14. 执行以下命令,给脚本授权。
chmod +x /etc/keepalived/chk_nginx.sh
15. 执行以下命令,设置 keepalived 服务开机自启动并启动服务。
systemctl enable keepalived
systemctl start keepalived.service
3.4 配置 esc-HA1 虚拟 IP 地址
1. 登录云服务器控制台,单击 ecs-HA2 进入详情页面,选择【弹性公网IP】页签,并单击弹性公网 IP 后的【解绑】。如下图所示:

2. 进入“虚拟私有云”控制台,选择左侧导航栏中的【子网】。
2. 进入子网页面,单击 subnet-HA 进入子网详情页,选择【IP地址管理】页签,单击虚拟 IP 后的【绑定服务器】。如下图所示:

3. 在弹出页面中,将虚拟 IP 绑定至 ecs-HA1云服务器。
1. 登录云服务器控制台,选择 ecs-HA1 后的【远程登录】,并在弹出窗口中选择 VNC 登录。如下图所示:

2. 在 VNC 界面中输入 root 账户及密码进行登录(密码不会显示)。登录成功如下图所示:

3. 执行以下命令,查看并记录需要绑定虚拟 IP 的网卡及对应连接。
nmcli connection

说明:
● DEVICE 列的 eth0 为需要绑定虚拟 IP 的网卡。
● NAME 列的 System eth0 为网卡对应的连接。
4. 执行以下命令,在目标连接中添加虚拟 IP。
nmcli connection modify "连接名" ipv4.addresses <虚拟IP地址>
示例:
nmcli connection modify "System eth0" ipv4.addresses 192.168.0.186
5. 执行以下命令,使配置生效。
nmcli connection up "连接名"
示例:
nmcli connection up "System eth0"
返回结果如下图所示:

6. 可执行 ip a 命令,检查虚拟 IP 地址是否配置成功。如下图所示即为成功:

3.5 配置 esc-HA2 虚拟 IP 地址
重复 3.4 步骤,将虚拟 IP 绑定至 ecs-HA2 并完成配置。
3.6 虚拟 IP 绑定至弹性公网 IP
1. 进入“虚拟私有云”控制台,选择左侧导航栏中的【子网】。
2. 进入子网页面,单击 subnet-HA 进入子网详情页,选择【IP地址管理】页签,单击虚拟 IP 后的【绑定弹性公网IP】。如下图所示:

3. 在弹出页面中,选择已创建的弹性公网 IP。
1. 登录云服务器控制台,选择云服务器后的【更多】>【重启】,分别重启 ecs-HA1 及 ecs-HA2 两台云服务器。
2. 使用浏览器访问以下地址,验证是否可以访问到 ecs-HA1 节点上的 Web 页面。
http://弹性公网 IP/index.html
如下图所示,则表示访问正常:

3. 执行以下命令,停止 ecs-HA1 上的 keepalived 服务。
systemctl stop keepalived.service
4. 使用浏览器访问以下地址,验证是否可以访问到 ecs-HA2 节点上的 Web 页面。
http://弹性公网 IP/index.html
如下图所示,则表示访问正常:

至此实验结束。