准备工作
当您首次使用华为云时注册的账号,则无需执行该准备工作,如果您使用的是IAM用户账户,请确认您是否在admin用户组中,如果您不在admin组中,则需要为您的账号授予相关权限,并完成以下准备工作。
创建rf_admin_trust委托(可选)
- 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“统一身份认证”菜单。
图1 控制台管理界面
图2 统一身份认证菜单
- 进入“委托”菜单,搜索“rf_admin_trust”委托。
图3 委托列表
- 如果委托存在,则不用执行接下来的创建委托的步骤
- 如果委托不存在,则需执行以下步骤创建委托
- 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,选择“RFS”,单击“下一步”。
图4 创建委托
- 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果,单击“下一步”。
图5 选择策略
- 选择“所有资源”,并单击“下一步”完成配置。
图6 设置授权范围
- “委托”列表中出现“rf_admin_trust”委托则创建成功。
图7 委托列表
客户源端配置(region:上海一 模拟客户源端)
- 购买Flexus X实例:访问Flexus云服务器X实例控制台,参考购买Flexus X实例教程,按如下配置购买X实例。
表1 X实例相关配置 资源类型
资源数量
配置
示例说明
虚拟私有云VPC和子网
1
- IPv4网段:172.16.0.0/24
- 子网IPv4网段:172.16.0.0/24
详见创建虚拟私有云和子网指南。
弹性云服务器ECS
2
本示例中,需要两个ECS作为主备倒换,配置说明如下:
- 名称:本示例分别为Flexus-X-HA1和Flexus-X-HA2。
- 安全组:本示例中Flexus-X-HA1和Flexus-X-HA2使用同一个安全组。
私有IP地址:Flexus-X-HA1为172.16.0.127,Flexus-X-HA2为172.16.0.97
弹性公网IP
2
线路:全动态BGP
公网带宽:按流量计费
带宽大小:300Mbit/s
本示例中EIP1为1.94.xxx.236,EIP2为115.120.xxx.252。
表2 安全组配置 方向
策略
类型
协议端口
源地址/目的地址
描述
入方向
允许
IPv4
TCP: 22
源地址:0.0.0.0/0
放通安全组内ECS的SSH(22)端口,用于远程登录Linux ECS。
入方向
允许
IPv4
TCP: 80
源地址:0.0.0.0/0
放通安全组内ECS的HTTP(80)端口,用于外部通过HTTP协议访问ECS上部署的网站。
入方向
允许
IPv4
全部
源地址:当前安全组
针对IPv4,用于安全组内ECS之间网络互通。
入方向
允许
IPv6
全部
源地址:当前安全组
针对IPv6,用于安全组内ECS之间网络互通。
出方向
允许
IPv4
全部
目的地址:0.0.0.0/0
针对IPv4,用于安全组内ECS访问外部,允许流量从安全组内ECS流出。
出方向
允许
IPv6
全部
目的地址:::/0
针对IPv6,用于安全组内ECS访问外部,允许流量从安全组内ECS流出。
- 申请虚拟IP地址:在源端子网中申请两个虚拟IP地址,具体方法请参见申请虚拟IP地址(本示例中虚拟IP1为172.16.0.203,虚拟IP2为172.16.0.47)。
图8 虚拟IP地址
- 安装Nginx、Keepalived软件包及相关依赖:登录主备Flexus-X-HA1、Flexus-X-HA2服务器,执行以下命令,安装Nginx、Keepalived软件包及相关依赖包
命令:yum install nginx keepalived -y
- 配置nginx:修改index.html文件内容,用来验证网站的访问情况。执行以下命令,打开“/usr/share/nginx/html/index.html”文件。将文件中原有的内容,全部替换成以下内容。
命令:vim /usr/share/nginx/html/index.html Flexus-X-HA1改为 Welcome to Flexus-X-HA1 Flexus-X-HA2改为 Welcome to Flexus-X-HA2
- 启动Nginx:执行以下命令,设置Nginx服务开机自启动,并启动Nginx服务。
命令: systemctl enable nginx systemctl start nginx.service
- 验证Nginx:打开浏览器,并输入EIP地址,验证Nginx单节点的访问情况,网页如下图所示,表示Flexus-X-HA1和Flexus-X-HA2的Nginx配置成功。
图9 Flexus-X-HA1图10 Flexus-X-HA2
- 配置Keepalived:执行以下命令,打开“/etc/keepalived/keepalived.conf”文件,根据实际情况,替换配置文件中的IP参数,并将文件中原有的内容,全部替换成以下内容。
命令:vim /etc/keepalived/keepalived.conf
Flexus-X-HA1:
- mcast_src_ip和unicast_src_ip参数值:替换为Flexus-X-HA1的私有IP地址,本示例为172.16.0.127。
- virtual_ipaddress参数值:替换为虚拟IP地址,本示例为172.16.0.47和172.16.0.203
! 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 172.16.0.127 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 172.16.0.127 virtual_ipaddress { 172.16.0.47 172.16.0.203 } track_script { chk_http_port } }
Flexus-X-HA2:
- mcast_src_ip和unicast_src_ip参数值:替换为Flexus-X-HA2的私有IP地址,本示例为172.16.0.97。
- virtual_ipaddress参数值:替换为虚拟IP地址,本示例为172.16.0.47和172.16.0.203。
! 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 172.16.0.97 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 172.16.0.97 virtual_ipaddress { 172.16.0.47 172.16.0.203 } track_script { chk_http_port } }
- 配置Nginx监控脚本:主备服务器执行以下命令,打开“/etc/keepalived/chk_nginx.sh”文件,将文件中原有的内容,全部替换成以下内容。
命令: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
- 脚本权限:主备服务器执行以下命令,为“chk_nginx.sh”文件添加执行权限。
命令:chmod +x /etc/keepalived/chk_nginx.sh
- 启动Keepalived:主备服务器执行以下命令,设置Keepalived服务开机自启动,并启动Keepalived服务。
命令: systemctl enable keepalived systemctl start keepalived.service
- 绑定虚拟IP:将Flexus-X-HA1和Flexus-X-HA2两台服务器的EIP进行解绑,具体方法参见解绑弹性公网IP。然后将虚拟IP绑定至实例和弹性公网IP详见:将虚拟IP绑定至实例或者EIP指南。(注意控制台绑定完成需要登录服务器配置虚拟IP地址),如下图所示。
图11 虚拟IP绑定
表3 虚拟ip配置 虚拟IP
2
虚拟IP1:172.16.0.203
虚拟IP2:172.16.0.47
绑定实例:将两个虚拟IP绑定至Flexus-X-HA1和Flexus-X-HA2
绑定弹性公网IP:将虚拟IP1绑定至EIP1(1.94.xx.236),将虚拟IP2绑定至EIP2(115.120.xx.252)。
- (可选)关闭主备服务器的IP转发功能(本示例中服务器默认关闭):使用虚拟IP构建主备场景的高可用集群时,需要关闭备云服务器的IP转发功能,当主备云服务器切换后,则需要确保新的云服务器也关闭IP转发功能。为了避免云服务器主备切换后遗漏配置,建议您将主备云服务器的IP转发功能全都关闭。关闭IP转发功能的操作如下:
切换root用户。 命令:su root 执行以下命令,查看IP转发功能是否已开启。 命令:cat /proc/sys/net/ipv4/ip_forward 回显结果:1为开启,0为关闭,默认为0。 回显为0,任务结束。 回显为1,继续执行以下操作。 以下提供两种方法修改配置文件,二选一即可。 方法一: 执行以下命令,打开“/etc/sysctl.conf”文件。 命令:vim /etc/sysctl.conf 按i进入编辑模式。 修改net.ipv4.ip_forward = 0。 按ESC退出,并输入:wq!保存配置。 方法二: 执行sed命令,命令示例如下: 命令:sed -i '/net.ipv4.ip_forward/s/1/0/g' /etc/sysctl.conf 执行以下命令,使修改生效。 命令:sysctl -p /etc/sysctl.conf
- 重启主备服务器:执行以下命令,分别重启主备服务器Flexus-X-HA1和Flexus-X-HA2
命令:reboot
- 验证自动切换功能:打开浏览器,分别输入EIP1(1.94.xx.236)、EIP2(115.120.xx.252),验证主服务器的网页访问情况,网页如下图所示,表示此时主服务器是Flexus-X-HA1,表明配置正常。
图12
图13
- 确认网卡是否正确配置:远程登录Flexus-X-HA1,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA1的eth0网卡上,回显类似如下信息,虚拟IP1(172.16.0.203)和虚拟IP2(172.16.0.47)已绑定至eth0网卡上,再次确认Flexus-X-HA1为主服务器。
命令:ip addr show
图14 主服务器网卡配置
- 主备切换:执行以下命令,停止主服务器的Keepalived服务或者重启主云服务器二选一,本示例中主云服务器为Flexus-X-HA1。
停止Keepalived服务 命令: systemctl stop keepalived.service 重启主云服务器 命令:reboot
- 验证主备切换:执行以下命令,验证主服务器是否切换成Flexus-X-HA2。远程登录Flexus-X-HA2,并执行以下命令,查看虚拟IP是否已绑定到Flexus-X-HA2的eth0网卡上。
命令:ip addr show
图15 备服务器网卡配置
- 验证自动切换功能:打开浏览器,并分别输入EIP1(1.94.xx.236)、EIP2(115.120.xx.252),验证Flexus-X-HA2作为主服务器时的网页访问情况。
网页如下图所示,表示此时主服务器是Flexus-X-HA2,且网页访问正常。
图16
图17