最近在研究服务器高可用集群 (HA)……

搭建了主备两台Keepalived,配置什么的全是网上照抄的,被验证过无数遍的示例……

然而Master和Backup无法自动切换。两边会同时绑定浮动IP(VIP),

观察的到的现象是:

1、Master正常启动。

2、Backup启动刚开始是Backup状态,短暂间隔后变为Master。

3、两台机器通过命令 ip addr 查看,均绑定了VIP!

4、两台机器无论怎么重启,看起来互不相关。

经过漫长的排查……重启……测试……

发现……防火墙一关……两台机器状态切换立马丝般润滑。

遂从防火墙配置作为突破口。

究其原理,VRRP协议需要MASTER不断广播自己“状态正常”的信息,一旦Backup不能收到Master的广播信息,Backup会尝试切换到Master状态来接管VIP。

所以如果防火墙配置不正确,Master的状态信息无法到达Backup,导致Backup以为Master挂了,出来抢占VIP。。

然后这两机器就迷茫了……

最后找到Oracle Linux的一篇文档。。。。

VRRP协议也需要设置防火墙!

iptables -I INPUT -i eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
iptables -I OUTPUT -o eth0 -d 224.0.0.0/8 -p vrrp -j ACCEPT
service iptables save

收工……

Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置的更多相关文章

  1. keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群

    keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...

  2. 测试redis+keepalived实现简单的主备切换【转载】

    转自: 测试redis+keepalived实现简单的主备切换 - Try My Best 尽力而为 - ITeye技术网站http://raising.iteye.com/blog/2311757 ...

  3. KEEPALIVED 双机自动切换部署备忘

    1.配置文件的名字不要型错了.开始我将配置文件写成keeplive.conf,运行后也不报错,但无法看到VIP.日志里也看不到任何有价值信息.直到后来反复检查才发现可能配置文件名有问题,修正为keep ...

  4. Nginx+Keepalived 主备高可用 安装与配置

    环境说明:操作系统:CentOS6.7 x86_64Nginx版本:nginx-1.9.7Keepalived版本:keepalived-1.2.24 主nginx + Keepalived :10. ...

  5. 主备角色switch

    理论知识:Switchover 切换允许primary 和一个备库进行切换,并且这种切换没有数据丢失. 前提条件: 1) 主备库相关参数 fal_client.fal_server .standby_ ...

  6. Keepalived+Nginx+tomcat实现主备+负载

    部署系统: Red Hat Enterprise Linux Server release 7.0 软件版本:apache-tomcat-7.0.92.tar.gzkeepalived-2.0.11. ...

  7. keepalived安装实现nginx主备高可用

    . keepalived安装环境 su - root yum -y install kernel-devel* yum -y install openssl-* yum -y install popt ...

  8. 在MySQL或者SQLServer中,添加对象后自动返回主键到对象模型中的配置方式

    设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中.MySQL和SQLServer执行auto-generated key fiel ...

  9. haproxy+keepalived主备与双主模式配置

    Haproxy+Keepalived主备模式 主备节点设置 主备节点上各安装配置haproxy,配置内容且要相同 global log 127.0.0.1 local2 chroot /var/lib ...

随机推荐

  1. python 删除一个目录下的所有文件

    一个目录下有文件,文件夹,文件夹里又有文件.文件夹....用python脚本,实现,递归删除一个目录下的所有文件: 目录结构如下: 其中我们要删除所有文件 代码实现如下: import os CUR_ ...

  2. ASP.NET Core SignalR CORS 跨域问题

    将 SignalR 集成到 ASP.NET Core api 程序的时候,按照官方 DEMO 配置完成,本地访问没有问题,但是发布之后一直报跨域问题,本地是这样设置的: 原始代码: services. ...

  3. .Net Core 跨平台应用使用串口、串口通信 ,可能出现的问题、更简洁的实现方法

    前些天在学习在 .NET Core下,跨平台使用串口通讯,有一篇文章说到在Linux/物联网下,实现通讯. 主要问题出现在以下两个类库 SerialPortStream flyfire.CustomS ...

  4. 基于RBAC设计的通用权限管理框架

    RoadFlow拥有基于RBAC设计的通用权限管理框架.不仅可以基于角色组进行菜单授权,还可以根据组织架构中部门.岗位.人员等进行细分的权限管理分配. 如果一个人有重复菜单权限,则将自动合并. 系统资 ...

  5. Map 综述(三):彻头彻尾理解 ConcurrentHashMap

    https://blog.csdn.net/justloveyou_/article/details/72783008

  6. 纯文本-FileOutputStream的解码方式

    1.通过string.getBytes(charsetNane)获得的字节数组,字节数组的编码方式,决定了FileOutStream写出文件的格式 例1:字节数组采用“GBK”编码,write生成的文 ...

  7. 查询改写(Query Rewrite)方法总结

    为何需要Query改写 Query分析是搜索引擎的一个重要模块,对搜索结果的覆盖率和相关性至关重要.搜索引擎的检索过程包含了两个重要的阶段:匹配和排序.匹配也叫召回,表示根据用户的查询条件,尽可能多地 ...

  8. super()的作用

    super能够用来訪问父类的构造方法和被子类所隐藏的方法.假设子类中有方法与父类中的方法名称和參数同样,则父类中的方法就被隐藏起来,也就是说在子类中重载了父类中的方法. 引用父类中所隐藏的语法格式例如 ...

  9. Flask从入门到精通之使用Flask-SQLAlchemy管理数据库

    Flask-SQLAlchemy 是一个Flask 扩展,简化了在Flask 程序中使用SQLAlchemy 的操作.SQLAlchemy 是一个很强大的关系型数据库框架,支持多种数据库后台.SQLA ...

  10. Java并发工具类之线程间数据交换工具Exchanger

    Exchanger是一个用于线程间协做的工具类,主要用于线程间的数据交换.它提供了一个同步点,在这个同步点,两个线程可以彼此交换数据.两个线程通过exchange方法交换数据,如果一个线程执行exch ...