keepalived 实现 IP 地址漂移


作者:Linux猿

简介:CSDN博客专家,华为云享专家,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

欢迎小伙伴们点赞、收藏⭐、留言


目录

一、实验环境

二、安装软件

2.1 安装 keepalived 和 ipvsadm

2.2 安装 httpd

2.3 配置修改

2.4 启动服务

三、测试 keepalived

四、总结


本篇文章主要介绍 keepalived 的配置,实现 VIP 漂移。

一、实验环境

实验环境为 CentOS 7.9,如下所示。

[root@k8s-node-1 node]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-node-1 node]#

准备两台同样的机器,配置如下。

实验机器
名称 系统 IP
master centos7.9 192.168.231.152 
slave centos7.9 192.168.231.151

二、安装软件

2.1 安装 keepalived 和 ipvsadm

分别在 master 和 slave 上安装 keepalived 包,执行命令如下所示。

[root@k8s-node-1 node]# yum -y install keepalived ipvsadm
[root@k8s-node-1 node]# systemctl enable keepalived

上面两个命令分别是安装软件包 keepalived 和 ipvsadm,然后设置 keepalived 开机自启动。

2.2 安装 httpd

[root@k8s-node-1 node]# yum -y install httpd
[root@k8s-node-1 node]# systemctl enable httpd

2.3 配置修改

(1)master 机器

添加 index.html,执行如下命令。

[root@k8s-master node]# echo "

This is master

" > /var/www/html/index.html

修改 keepalived 的配置文件 /etc/keepalived/keepalived.conf,如下所示。

! Configuration File for keepalived

global_defs {
   router_id 1
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 1
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.231.160
    }
}

(2)slave 机器

添加 index.html,执行如下命令。

[root@k8s-node-1 node]# echo "

This is backup

" > /var/www/html/index.html

修改 keepalived 的配置文件 /etc/keepalived/keepalived.conf ,如下所示。

! Configuration File for keepalived
global_defs {
   router_id 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 1
    nopreempt
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.231.160
    }
}

其中,配置文件的规则如下所示。

global_defs {
    router_id 1 //router_id 自定义,主备不能相同,备:router_id 2
}
vrrp_instance VI_1 {
    state MASTER // 主:state MASTER,备:state BACKUP
    interface eth0 // 改为自己网卡名称
    virtual_router_id 1 // 组的ID,主备要一致
    mcast_src_ip 192.168.231.150 // 本段服务器IP
    priority 100 // 优先级,主要高于备,备改为99
    advert_int 1 // 通告间隔描述,心跳频率
    nopreempt    // 不抢夺 VIP 重要!
    authentication {
    auth_type PASS // 主备一致
    auth_pass 123456 // 主备一致
    virtual_ipaddress {
        192.168.231.160 // 指定的VIP,主备一致
    }
}

(3)关闭防火墙

关闭防火墙,谨慎操作,仅用于测试环境。 

[root@k8s-node-1 node]# systemctl stop firewalld.service

2.4 启动服务

分别在 master 和 slave 节点上执行如下命令,启动 keepalived。

[root@k8s-node-1 node]# systemctl start keepalived.service

分别在 master 和 slave 节点上执行如下命令,启动 httpd。

[root@k8s-node-1 node]# systemctl start httpd

三、测试 keepalived

首先,在 master 上执行命令 ip a,查看是否已经配置成功。

[root@k8s-master node]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ca:f5:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.231.152/24 brd 192.168.231.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.231.160/32 scope global ens33  # 出现这个表示配置成功!!!
       valid_lft forever preferred_lft forever
    inet6 fe80::e3a3:533b:4112:90d5/64 scope link tentative noprefixroute dadfailed
       valid_lft forever preferred_lft forever
    inet6 fe80::57e:3922:f35e:9904/64 scope link tentative noprefixroute dadfailed
       valid_lft forever preferred_lft forever
    inet6 fe80::1bb3:d02e:702b:d4dc/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0:  mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:84:91:8b brd ff:ff:ff:ff:ff:ff
4: virbr0-nic:  mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:84:91:8b brd ff:ff:ff:ff:ff:ff
[root@k8s-master node]#

如上所示,出现 192.168.231.160 的 IP 表示配置成功,通过在浏览器中输入 192.168.231.160,执行结果如下所示。

keepalived 实现 IP 地址漂移_第1张图片 图1 访问结果

 你可以进一步进行测试,例如:关掉 master 节点,在浏览器中输入 192.168.231.160 后执行结果如下所示。

keepalived 实现 IP 地址漂移_第2张图片 图2 访问结果

 如果再次将 master 节点启动起来,在浏览器中输入 192.168.231.160 后执行结果如下所示。

keepalived 实现 IP 地址漂移_第3张图片 图1 访问结果

四、总结

本篇文章介绍到这里,有问题欢迎在评论区交流,后续会更新 keepalived 的原理,敬请期待!

参考链接:

CentOS7 部署 Keepalived保姆级教程_centos7 keepalived_未来村长的博客-CSDN博客

 Keepalived 设置master故障恢复后不重新抢回VIP(解决nopreempt无效)_征服.刘华强的博客-CSDN博客


感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言,感谢大家的一路支持!猿哥将持续输出「优质文章回馈大家!


你可能感兴趣的:(微服务/K8s/Docker,keepalived,VIP漂移,keepalived,配置,keepalived高可用)