如何给集群设置VIP(虚拟IP)

前言
最近在搭建PostgreSQL集群时,因为设置VIP的这个问题,跌入了很多坑,遇见了很多问题。在网上查找了一些资料,又结合自己的实践,决定自己总结写一篇关于设置集群VIP的博客。

环境准备

集群 IP部署

IPhost操作系统VIP
172.16.30.181masterCentOS 7.6172.16.30.183
172.16.30.182slaveCentOS 7.6172.16.30.183

172.16.30.181是主节点,172.16.30.182是备节点,VIP是172.16.30.183

我是在openstack上搭建的集群,建议大家将需要用到的IP都固定到端口上,不要绑定浮动的IP,以免会出现网络跳动,导致IP配置失败。

配置VIP

安装 keepalived

两台机器上都要进行安装

yum install -y keepalived

有时候需要先卸载再安装。卸载命令:yum -y remove keepalived

配置文件 keepalived.conf
vim  /etc/keepalived/keepalived.conf
  • master上修改配置内容
vrrp_instance VI_1 {
    state MASTER
    interface eth0  # VIP绑定网卡
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS # VRRP验证类型,PASS、AH两种
        auth_pass 1111  # VRRP验证密码,在同一个vrrp_instance下,主、从必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {
        172.16.30.183  ##虚拟IP地址(VIP)
    }
    unicast_src_ip 172.16.30.181  ##(本地IP地址)
    unicast_peer {
        172.16.30.182  ##(对端IP地址)此地址一定不能忘记
    }
}
  • slave上修改配置内容
vrrp_instance VI_1 {
    state BACKUP
    interface eth0  # VIP绑定网卡
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS  # VRRP验证类型,PASS、AH两种
        auth_pass 1111  # VRRP验证密码,在同一个vrrp_instance下,主、从必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {
        172.16.30.183   ##虚拟IP地址(VIP)
    }
    unicast_src_ip 172.16.30.182 ##(本地IP地址)
    unicast_peer {
        172.16.30.181 ##(对端IP地址)此地址一定不能忘记
    }
}

参数解释:

  • state 服务状态;MASTER(工作状态)BACKUP(备用状态)

  • priority 优先级;取值范围:0~254;MASTER > BACKUP
    (只要保证主节点的priority大于备节点就可以)

  • virtual_ipaddress表示虚拟ip的地址,主、备节点必须一致,可以定义多个VIP

  • 注意要在配置文件里加入以下配置:

unicast_src_ip  172.16.30.xxx ##(本地IP地址)
unicast_peer {
    172.16.30.xxx  ##(对端IP地址)
}

如果不加入以上配置,可能在两台机器上可以同时看到VIP,这样就失去了我们设置集群VIP的意义。

出现这种问题是因为路由交换层禁用了ARP的广播限制,造成Keepalive主备协议无法通过广播的方式进行通信,造成主备两台服务器都强占HAVIP地址,出现同时两台服务器都有VIP地址的情况出现,必须通过配置来指定IP的两台服务器间进行通讯

启动 keepalived 服务
systemctl start keepalived.service   #启动服务
systemctl enable keepalived.service  #开机自启动服务
  • master上的IP地址信息
ip addr show eth0

master上的IP

  • slave上的IP地址信息

在这里插入图片描述
可以看到这时候,VIP绑定在了主节点上。

当主机点上的keepalived 服务停止时,VIP又绑定在备节点上了。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理在容器化环境中的应用程序。在搭建K8s高可用集群时,可以通过配置虚拟IPVIP)来提供集群的高可用性。 虚拟IP是一种网络技术,用于将多个实际IP地址映射到一个虚拟IP地址上。在K8s高可用集群中,可以使用虚拟IP来确保在发生节点故障时,集群的服务不会中断,可以无缝切换到其他健康的节点上。 具体实现方式如下: 1. 配置负载均衡器:在K8s集群中,可以使用负载均衡器来实现VIP。该负载均衡器可以是硬件设备、软件应用或云服务。负载均衡器可以通过将请求转发到不同的K8s节点上,来实现VIP的高可用性。 2. 分配VIP:在负载均衡器中,为K8s集群分配一个唯一的虚拟IP地址。这个虚拟IP将被映射到K8s集群的实际节点IP地址上。 3. 配置故障检测和自动切换:负载均衡器会定期检测K8s节点的健康状态。如果发现某个节点不可用,负载均衡器将自动将请求切换到其他健康的节点上,以确保服务的连续性。 通过虚拟IP的配置,K8s集群可以在发生节点故障时保持高可用性。即使一个节点故障,负载均衡器可以快速将请求切换到其他可用的节点上,而不会中断服务。这样可以提高应用程序的稳定性和可靠性。 总结起来,通过配置虚拟IP,K8s高可用集群能够在节点故障时实现自动切换,提供无缝的服务,确保应用程序的可用性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值