如何给两台机器集群设置VIP(虚拟IP)

原文链接:https://www.cnblogs.com/qianz/articles/16825567.html

一、环境准备

1.集群 IP部署

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

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

二、配置VIP

1.安装 keepalived

两台机器上都要进行安装

|---|-----------------------------|
| 1 | yum install -y keepalived |

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

2.配置文件 keepalived.conf

|---|---------------------------------------|
| 1 | vim /etc/keepalived/keepalived.conf |

  • master上修改配置内容

|----------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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上修改配置内容

|----------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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

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

|---------|----------------------------------------------------------------------------------------------|
| 1 2 3 4 | unicast_src_ip 172.16.30.xxx ##(本地IP地址) unicast_peer { ``172.16.30.xxx ##(对端IP地址) } |

  

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

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

3.启动 keepalived 服务

|-----|-------------------------------------------------------------------------------------------|
| 1 2 | systemctl start keepalived.service #启动服务 systemctl enable keepalived.service #开机自启动服务 |

  • master上的IP地址信息

|---|---------------------|
| 1 | ip addr show eth0 |

  • slave上的IP地址信息

可以看到这时候,VIP绑定在了主节点上。

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

相关推荐
东风破_31 分钟前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
橙子家2 小时前
OSS 文件上传的几个风险点和解决方案
数据库
Julien20043 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
2601_962066493 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext4 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
kekekzt4 小时前
TCP协议的粘包问题介绍,IP分片,MTU,MSS,滑动窗口的概念及之间的关系
网络·网络协议·tcp/ip
2601_962074685 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
大模型丫丫6 小时前
Hermes Agent:轻量级智能体框架实战指南
大数据·运维·服务器
数字新视界6 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..6 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft