pgoneproxy的VIP机制
pgoneproxy的VIP机制
harris2016 发表于1年前
pgoneproxy的VIP机制
  • 发表于 1年前
  • 阅读 11
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

    在向外提供服务时,通常会使用虚拟IP(VIP),增加服务的可靠性。在pgoneproxy中同样提供了vip功能,使用pgoneproxy后就可以省略其他提供VIP的软件(比如keepalive)。

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即可。

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

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

    4)ping VIP,如果ping失败,则设置本机为vip主机,并且广播本机mac地址。

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

3. 防止脑裂的办法

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

 

 

共有 人打赏支持
粉丝 10
博文 37
码字总数 30058
×
harris2016
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: