文档章节

pgoneproxy的VIP机制

harris2016
 harris2016
发布于 2016/07/15 10:09
字数 463
阅读 26
收藏 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的。

 

 

© 著作权归作者所有

共有 人打赏支持
harris2016
粉丝 10
博文 53
码字总数 30227
作品 0
杭州
程序员
私信 提问
pgoneproxy 通过vip实现24小时不间断服务

pgoneproxy提供了vip功能来保证能够不间断的对外部提供服务。下面来讲解下pgoneproxy中VIP功能的使用方法。 环境: pgoneproxy主机:172.30.12.10 172.30.12.11 pgoneproxy业务主机:172.30....

harris2016
2016/06/17
81
0
postgresql 数据库 中间件 pgoneproxy

一直在开发postgresql的中间件pgoneproxy,最近增加了pgoneproxy中间件监控功能的界面。通过我们的监控界面可以看到当前连接执行了哪些sql语句,操作了哪些表,事务语句,并且pgoneproxy所在主...

harris2016
2016/06/03
683
7
postgresql 使用jdbc连接过程的分析

本人在开发pgoneproxy的过程中,需要实现前端登录到pgoneproxy,pgoneproxy针对前端进行校验,校验通过后才能使用连接池中的连接,而连接池中的连接是pgoneproxy通过发送数据包的方式进行的连...

harris2016
2016/06/16
166
0
liquibase 通过pgoneproxy来管理数据库版本

最近有客户反应liquibase通过pgoneproxy来管理数据库版本时,发现不能建立数据库表。这让我有点难理解,于是我直接下载了一个liquibase来测试,发现是pgoneproxy的权限管理的问题。现在说说测...

harris2016
2016/06/20
99
0
postgresql 数据库中间件 pgoneproxy 实现冷热数据分离查询(二)

在前一篇《postgresql中间件pgoneproxy支持冷热数据分离查询》中讲解了按照id来进行数据的分离,针对时间至少稍微的提了一下。本篇这专门针对时间来进行讲解和测试下。 在我的数据库中新建了...

harris2016
2016/07/19
178
0

没有更多内容

加载失败,请刷新页面

加载更多

JSON数据从OSS迁移到MaxCompute最佳实践

摘要: 本文为您介绍如何利用DataWorks数据集成将JSON数据从OSS迁移到MaxCompute,并使用MaxCompute内置字符串函数GET_JSON_OBJECT提取JSON信息。 本文为您介绍如何利用DataWorks数据集成将J...

阿里云官方博客
29分钟前
3
0
LockSupport 源码

LockSupport 主要利用了Unsafe类中提供的part和unpart两个方法.而LockSupport类暴露出来的两个核心接口也是part和unpart两个. java.util.concurrent.locks.LockSupport源码: package java...

狼王黄师傅
29分钟前
2
0
《阿里巴巴 Java开发手册》读后感

前言 只有光头才能变强 前一阵子一直在学Redis,结果在黄金段位被虐了,暂时升不了段位了,每天都拿不到首胜(好烦)。 趁着学校校运会,合理地给自己放了一个小长假,然后就回家了。回到家才发...

Java3y
31分钟前
1
0
Mac sorceTree一直显示Passwprd Required

sourceTree 1.我是从码云上建了一个项目然后下载下来再推上去的是就报这个错 解决方法 打开sourceTree偏好设置===》打开网络===》修改url路径(这个就是你登录码云的用户名)...

潇潇程序缘
32分钟前
1
0
如何创建和部署一个属于自己的EOS代币

本文我们将弄清楚什么是EOS代币以及如何自己创建和部署EOS代币。 与以太坊相反,EOS带有即插即用的代币智能合约。以太坊拥有ERC20智能合约,EOS拥有eosio.token智能合约。Eosio.token智能合约...

笔阁
32分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部