(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移

1. 环境准备

安装工具:keepalived

目标节点:

hostname IP Address
master01 192.168.0.143
master02 192.168.0.144
master03 192.168.0.145
集群虚IP 192.168.0.140

 2. 安装keepalived

三台机器上分别安装keepalived

#yum install y keepalived

3. 配置keepalived

3.1 master01

#vi /etcd/keepalived/keepalived.conf

注意备份原始keepalived.conf文件。修改后内容如下:

! Configuration File for keepalived

 

global_defs {

   # 接收邮件地址

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   # 邮件发送地址

   notification_email_from [email protected]  

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id NGINX_MASTER

}

 

 

vrrp_instance VI_1 {

    state MASTER

    interface ens33 #网卡接口信息

    virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的

    priority 100    # 优先级,备服务器设置 90、80

    advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒

    authentication {

        auth_type PASS      

        auth_pass 1111

    }  

    virtual_ipaddress {

        192.168.0.140/24  #集群虚拟IP,三台机器上配置相同VIP

    }

}

master02 和master03机器上配置同上,注意修改为对应主机网卡名。

3.2 master02

#vi /etcd/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   # 接收邮件地址

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   # 邮件发送地址

   notification_email_from [email protected]  

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id NGINX_MASTER

}

 

 

vrrp_instance VI_1 {

    state BACKUP 

    interface ens33 #网卡接口信息

    virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的

    priority 90    # 优先级,备服务器设置 90

    advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒

    authentication {

        auth_type PASS      

        auth_pass 1111

    }  

    virtual_ipaddress {

        192.168.0.140/24  #集群虚拟IP,三台机器上配置相同VIP

    }

}

3.3 master03

#vi /etcd/keepalived/keepalived.conf

! Configuration File for keepalived

 

global_defs {

   # 接收邮件地址

   notification_email {

     [email protected]

     [email protected]

     [email protected]

   }

   # 邮件发送地址

   notification_email_from [email protected]  

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id NGINX_MASTER

}

 

 

vrrp_instance VI_1 {

    state BACKUP 

    interface ens33 #网卡接口信息

    virtual_router_id 51 # VRRP 路由 ID实例,每个实例是唯一的

    priority 80    # 优先级,备服务器设置 90

    advert_int 1    # 指定VRRP 心跳包通告间隔时间,默认1秒

    authentication {

        auth_type PASS      

        auth_pass 1111

    }  

    virtual_ipaddress {

        192.168.0.140/24  #集群虚拟IP,三台机器上配置相同VIP

    }

}

4. 启动keepalive服务

三台机器均执行命令:

#service keepalived start

#chkconfig keepalived on

 

也可以执行下面命令:

#systemctl daemon-reload

#systemctl start keepalived

#systemctl enable keepalive

5. 测试

分别查看三台机器的IP地址信息:

master01:

#ip addr show ens33

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第1张图片

inet 192.168.72.140/24 scope global secondary eno16777736:说明现在的主机是以虚IP的master来运行的。

master02:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第2张图片

master02网卡信息并没有虚IP192.168.0.140的信息,说现在主机是以实际IP来运行,虚IP并未漂移到该主机上。

master03:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第3张图片

master03网卡信息并没有虚IP192.168.0.140的信息,说现在主机是以实际IP来运行,虚IP并未漂移到该主机上。 


接下来,我们停止master01主机上keepalived服务:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第4张图片

可以看到,当keepalived服务运行是,master01上是包含虚IP192.168.0.140地址信息的,然后我们关闭keepalived服务,此时master01网卡已经不包含虚IP192.168.0.140地址信息,虚IP应该是飘到别的机器上了,我们来看一下,虚IP是否漂移到剩余的备用机其中的一台上

然后,我们看一下master02上keepalived服务:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第5张图片

可以看到,原本master02机器上并没有包含虚IP地址信息,当master01主机通知keepalived服务后,在master02机器上能够重新看到虚IP地址信息,说明虚IP已经从master01漂移到master02主机上了。

此时,我们需要再看看master03网卡地址信息:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第6张图片

master03网卡上依然没有虚IP的踪迹,这是为何?

因为,前面我们在配置keepalived.conf文件时,设定了虚IP漂移主机的优先级,分别对应【master01】MASTER---priority 100、【master02】BACKUP---priority 90、【master03】BACKUP---priority 80。安装这个规则虚IP应该要漂移到master02上。那么按照这个规则,我们在把master02上的keepalived服务停止,虚IP将漂移到master03上。

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第7张图片

 (7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第8张图片

对比master02和master03上网卡地址信息,果然,虚IP成功漂移到master03了。


再接下来,我们依次重启master01和master02的keepalived服务,再来对比一下三台机器网卡地址信息,看看虚IP将再次漂移到哪里。

master03先不动它,因为此时的虚IP已经在master03网卡上。我们先来开启maser02上keepalived服务:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第9张图片

发现,虚IP并未出现的master02上。

继续重启master01上keepalived服务:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第10张图片

虚IP跑回来了,重新出现在master01的网卡上。再看看master03:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第11张图片

 原本停留在master03上的虚IP再次的漂移走了,现在已经重新绑定到master01上了。

至此,我们使用keepalived实现了kubernetes集群下虚IP的漂移,对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master,保证路由器的高可用,继续提供服务,从而保证了高可用性。。

注意:

在keepalived.conf配置正常情况下,出现虚IP不会漂移,这是因为VRRP通信基于报文实现的,当防火墙开启且没有放行vrrp,从服务器接受不到主服务器的心跳,从服务器认为主服务器挂了,在抢占模式中,从服务器反客为主。也就是master设置一定时间发送一个报文给backup,但是backup没有收到,于是自己就成为master。

防火墙配置:

(7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移_第12张图片

你可能感兴趣的:((7)二进制文件方式部署Kubernetes高可用集群----------使用Keepalived设置集群虚IP,实现IP漂移)