pgoneproxy的VIP机制

    在向外提供服务时,一般会使用虚拟IP(VIP),增长服务的可靠性。在pgoneproxy中一样提供了vip功能,使用pgoneproxy后就能够省略其余提供VIP的软件(好比keepalive)。spa

1. vip 的使用    

    在pgoneproxy中须要使用VIP,配置是很是简单的。只须要增长--vip-address=xxx.xxx.xxx.xxx/eth0:0便可。其中xxx.xxx.xxx.xxx 是虚拟IP地址,eth0是网卡接口。eth0:0表示在已经存在的网卡接口eth0上面创建虚拟网卡eth0:0。线程

    增长配置后,在同网段下的不一样主机上面启动pgoneproxy便可。能够经过kill掉正在提供服务的pgoneproxy,VIP会漂移到另一台pgoneproxy上面去,继续向外提供服务。接口

2. VIP实现的原理

    1)在启动pgoneproxy时先清理掉自身主机的虚拟网卡信息,能够经过直接调用ifconfig eth0:0 down 或者是经过ioctl来直接~IFF_UP掉eth0:0便可。ip

    2)读取广播消息,获取正在使用的虚拟ip所在主机的mac地址。io

    3)若是虚拟ip mac地址不是本机的mac地址,则禁止设置vip。原理

    4)ping VIP,若是ping失败,则设置本机为vip主机,而且广播本机mac地址。ioc

经过单独的线程在间隔时间内不断地执行2),3),4)步便可。软件

3. 防止脑裂的办法

    经过在设置VIP后,把VIP主机的mac地址进行广播。其余主机在设置VIP以前先判断VIP mac地址是否与本地mac一致来决定是否设置VIP仍是禁止VIP。这样当多个pgoneproxy同时启动时,会在短暂的震荡(可能有也可能没有,关键看时机,出现这种状况的几率很小)以后,最终会决定出一个主pgoneproxy的。配置

相关文章
相关标签/搜索