在海航云中部署 keepalived

**本文属自我学习,不适合转载**

1. 准备工作

1.1 网络方面的准备工作

1.1.1 创建安全组

在海航云中部署 keepalived

注意这里要添加 vrrp 协议支持,否则 keepalived 将无法正常工作。

在海航云中部署 keepalived

1.1.2 创建网络

在海航云中部署 keepalived

1.1.3 创建路由器,绑定EIP,并连接上面的网络

在海航云中部署 keepalived

1.1.4 创建 VIP 的弹性网卡,设置安全组,绑定EIP

在海航云中部署 keepalived

1.2 创建两个弹性云服务器,并绑定EIP

在海航云中部署 keepalived

1.3 在虚机的网卡上设置允许的地址对

添加:(需要在两个虚机的网卡上添加允许的地址对,从而允许该网卡上使用 vip 的IP发出去的网络包能够被发出)

在海航云中部署 keepalived

结果:

在海航云中部署 keepalived

2. 安装 keepalived和httpd

(1).通过SSH登录 master,安装 keepalived,并做如下配置

在海航云中部署 keepalived

安装 httpd,设置其监听端口为81。并在 /var/www/html/index.html 文件中写入 master.

需要设置 www 目录的访问权限 sudo chmod 755 html -R,否则会收到 403 错误。

将 httpd 和 keepalived 设置为自动启动:

  • sudo chkconfig keepalived on
  • sudo chkconfig httpd on

(2). 在 slave 上做类似的配置,priority 设置为 50.

(3). 在本地和虚机的EIP上测试 http 81 端口,能返回正确的字符串

(4). 能看到 VRRP 网络包

在海航云中部署 keepalived

(5). 使用 ip a 命令能看到 master 上的 vip (注意使用 ifconfig 命令看不到)

在海航云中部署 keepalived

(6). 能看到vrrp协议的网络包

在海航云中部署 keepalived

(7). 能看到浏览器请求时的 vip 发出的网络包

在海航云中部署 keepalived

3. 测试

(0)在浏览器上打开 120.132.124.82:81,刷新,查看其返回的字符串。根据字符串判断是哪个节点上返回的。

(1). master 和 salve 都运行的情况下,返回 master

(2). 将 master 关机,刷新,返回 slave

(3). 将 master 开机,刷新,返回 master

(4). 将 slave 关机,刷新,返回 master

此过程中,在 slave 上,运行 sudo tcpdump -n -i eth0 proto 112 命令,能看到 vrrp 主节点的变化过程:

//master 和 slave 都活着时,master 是主
18::48.557128 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::49.460185 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
//master 关机,slave 升为主
18::50.265691 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::51.266660 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::38.304008 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
//master 重启后,它变为主
::41.307612 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::41.307739 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::41.308134 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length
::42.309298 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid , prio , authtype simple, intvl 1s, length

(5). 将安全组里面的 vrrp 协议删除,则 keepalived 出现脑裂,即两个都是 master。

(6). 将当前 MASTER 节点的虚拟网卡上的“允许的地址对”删除,则无法通过浏览器访问 vip:81. 这是因为,该虚机网卡发出的使用vip作为源地址的网络包都被阻止了。这是因为默认在所有虚拟网卡上开启了安全限制,只允许发出跟虚拟网卡自身ip和mac匹配的网络包。

(7). 将当前 SLAVE 节点的虚拟网卡上的“允许的地址对”删除,则不影响通过浏览器访问 vip:81,因为此时该网卡上没有vip;但是,vip 主备切换后,则无法再访问 vip 了。

参考链接:

上一篇:Linux C 语言 获取系统时间信息


下一篇:linux下的C语言程序设计