Aws上部署Keepalived
2023-12-22 11:38:50 Author: 运维帮(查看原文) 阅读量:5 收藏

一、    环境规划

角色

主机名

Ip地址

Master

test01

10.1.20.170

Backup

test02

10.1.20.22

VIP

网卡

10.1.20.150

1.1  环境说明

因aws不支持组播和vip功能,所以为了实现vip漂移功能。

采用在主节点新加一块网卡,配置固定ip充当vip。

然后通过Keepalived服务检测指定的服务进行操作aws CLI。

CLI命令进行网卡的卸载和添加工作,进行俩节点ip切换。

1.2注意事项

  1. 根据部署规范需将两台EC2部署到bgc-test-lb-private1子网中。

  2. 需将两台EC2部署到同一个子网中,不可以跨子网,否则无法实现VIP漂移。

  3. 因为该子网为内网路由部署完成后需使用堡垒机进行登陆。

  4. 因为AWS不支持组播和VIP,所以采用单播和网卡添加和卸载代替的VIP漂移方案。

  5. 经测试该方案较稳定,但因aws硬件延迟问题,VIP切换时间有17秒的延迟。

二、    环境部署

2.1 选择镜像

注:两台EC2的创建方法均按照此配置方法进行创建,不重复阐述。

在【EC2】功能栏中点击【启动实例】进行EC2创建。

选择系统类型点击选择,进行下一步操作。

2.2 选择配置

进行选择系统的配置大小,点击下一步进行配置。

2.3 填写系统信息

需注意:网路和子网需按照规范进行选择,此案例为LB测试选择内容为bgc-test-lb-private1。

IAM角色:可选择通用角色bgc-test-jump-role。

点击下一步进行配置。

2.3 填写系统信息

需注意:网路和子网需按照规范进行选择,此案例为LB测试选择内容为bgc-test-lb-private1。

IAM角色:可选择通用角色bgc-test-jump-role。

点击下一步进行配置。

2.4 配置存储空间

添加新卷或更改大小,在这里我选择默认的大小。

2.5 配置标签

将该系统配置到创建的标签中。

标签作用用于集中管理资源信息。

2.6 安全组

安全组作用是:防火墙策略。

我们选择指定通用的安全组bgc-test-jump。

2.7 审核

审核系统的所有配置内容,无误后,点击启动按钮。

EC2默认登陆方式是不需要密码,需要使用密钥进行登陆。

在这里可创建自己的密钥或指定已有密钥,登陆的时候进行使用。

因需要使用堡垒机,所以这里需要指定通用的密钥【bgc-test-jump】。

三、环境配置

3.1 创建网卡

创建替换VIP的网卡信息。

在【网络接口】中点击【创建网络接口】

填写所需内容。

3.2 查看网卡

创建完成后,请记录网卡接口ID,后面操作需要进行调用。

使用堡垒机进行Master和Backup服务器登陆。

双节点安装所需包:

yum install curl gcc gcc-c++ libnet keepalived* aws cli httpd -y  

双节点

创建http检查脚本:

该脚本机制为检测http服务是否存在如不存在进行keepalived 服务关闭。

两节点脚本内容一致。

[root@test01 ec2-user]# vim /home/ec2-user/http_chk.sh

主节点

创建CLI操作网卡脚本:

说明:

因aws上添加网卡时,需确保网卡处于未使用状态,所以添加网卡操作时,需执行网卡卸载操作,否则网卡会提示网卡已占用。

其中sleep 8 内容是因为aws内部同步限制,经测试网卡卸载后第一时间不能直接添加网卡,需等待7S才可使用,否则会报网卡已占用错误。

[root@test01 ec2-user]# vim /home/ec2-user/attach1_net.sh

备节点

创建CLI操作网卡脚本:

[root@test02 ec2-user]# vim /home/ec2-user/attach2_net.sh

主节点

配置Keepalived:

[root@test01 ~]# vim /etc/keepalived/keepalived.conf

备节点

配置Keepalived:

[root@test02 ~]# vim /etc/keepalived/keepalived.conf 

主节点:

配置http测试页:

[root@test01 ec2-user]# vim /var/www/html/index.html   <html>  <title>HTML</title>  <style type="text/css">  <!--  .STYLE1 {  font-family: "宋体";  font-size: 4;  }  .body1{text-decoration: underline;}  -->  </head>  <body>  <p class="STYLE1"><strong></strong>    <em></em><strong><font class="body1">test01</font></strong><br />10.1.20.170  </p>  </body>  </html> 

备节点:

配置http测试页:

[root@test01 ec2-user]# vim /var/www/html/index.html   <html>  <title>HTML</title>  <style type="text/css">  <!--  .STYLE1 {  font-family"宋体";  font-size4;  }  .body1{text-decoration: underline;}  -->  </style>  </head>  <body>  <p class="STYLE1"><strong></strong>    <em></em><strong><font class="body1">test01</font></strong><br />10.1.20.170  </p>  </body>  </html> 

四、    环境测试

4.1 双节点启动http

[root@test01 ~]# /etc/init.d/httpd start  [root@test02 ~]# /etc/init.d/httpd start  

4.2 进行web服务页面测试

主节点:

[root@test01 ec2-user]# elinks http://10.1.20.170

备节点:

[root@test02 ~]# elinks http://10.1.20.22

4.3 进行CLI操作网卡测试

主节点:

进行网卡添加

[root@test01 ec2-user]# /home/ec2-user/attach1_net.sh eni-065b50a77ee33f5de i-0c70a75cd473abb1b

备节点:

进行网卡添加

[root@test02 ~]# /home/ec2-user/attach2_net.sh eni-065b50a77ee33f5de i-00b15f56667694485

进行Keepalived测试

测试之前保证好以下内容准确无误,否则会影响测试效果。

保证第二块网卡不在任何节点上。

双节点http服务为启动状态。

以上配置所有脚本均有执行权限。

确认各类防火墙是否开启限制。

主节点

启动Keepalived服务

查看网卡已添加成功。

备节点

启动Keepalived服务

4.4 模拟故障(主down备变主)

主节点

停止http服务

主节点

日志输出

备节点

日志输出

备节点

网卡信息

主节点

恢复http服务

可看出两节点日志没有任何输出。

说明不抢占模式生效。

4.5 模拟故障 (备down主变回主)

备节点

关闭http服务

主节点

信息已提示资源已切换过来。

主节点

网卡信息

备节点

启动http和keepalived服务

没有任何信息输出,说明不抢占。

进行前台页面测试,切换时间为17S

总结:

因为采用的是网卡切换代替的VIP并且会将该网卡从资源中卸载,所以不会出现脑裂问题。

因为设置了不抢占,所以主down了,从变主,主再次启动时,网卡不会切回去。

经过多次测试,网卡切换时间最少需要17s。

经过多次测试,该功能比较稳定。

-----------------------------
订阅号商务合作,请加微信:yunweibang001

文章来源: http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=2651301193&idx=1&sn=24c6f7fea759c847a3e86a9bd755ae66&chksm=859d33c305c27695d658ae6fab5f42c663bfdc6fbbfdb3e7d307f6275873fae122b1a9b0e7af&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh