zoukankan      html  css  js  c++  java
  • 在海航云中部署 keepalived

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

    1. 准备工作

    1.1 网络方面的准备工作

    1.1.1 创建安全组

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

    1.1.2 创建网络

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

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

     

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

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

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

    结果:

    2. 安装 keepalived和httpd

    (1).通过SSH登录 master,安装 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 网络包

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

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

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

    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
    :23:48.557128 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 20 18:23:49.460185 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 0, authtype simple, intvl 1s, length 20 //master 关机,slave 升为主
    18
    :23:50.265691 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 50, authtype simple, intvl 1s, length 20 18:23:51.266660 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 50, authtype simple, intvl 1s, length 20 18:24:38.304008 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 50, authtype simple, intvl 1s, length 20 //master 重启后,它变为主
    18:24:41.307612 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 20 18:24:41.307739 IP 172.17.100.202 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 50, authtype simple, intvl 1s, length 20 18:24:41.308134 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 20 18:24:42.309298 IP 172.17.100.201 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 20

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

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

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

    参考链接:

  • 相关阅读:
    紫色飞猪的研发之旅--07client-go实现进入pod模拟终端登录
    紫色飞猪的研发之旅--06go自定义状态码
    紫色飞猪的研发之旅--05go封装http请求
    紫色飞猪的研发之旅--04client-go客户端
    紫色飞猪的研发之旅--03golang:获取cookie
    支持remote write和exemplar的prometheus服务
    从头编写一个时序数据库
    解析Prometheus PromQL
    老板:把系统从单体架构升级到集群架构!
    小白自制Linux开发板 三. Linux内核与文件系统移植
  • 原文地址:https://www.cnblogs.com/sammyliu/p/7171859.html
Copyright © 2011-2022 走看看