文档章节

pgoneproxy的VIP机制

harris2016
 harris2016
发布于 2016/07/15 10:09
字数 463
阅读 98
收藏 1

精选30+云产品,助力企业轻松上云!>>>

    在向外提供服务时,通常会使用虚拟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
粉丝 11
博文 54
码字总数 30661
作品 0
杭州
程序员
私信 提问
加载中
请先登录后再评论。
pgoneproxy 通过vip实现24小时不间断服务

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

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

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

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

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

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

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

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

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

harris2016
2016/07/19
280
0

没有更多内容

加载失败,请刷新页面

加载更多

Android错误:无法在设备上安装* .apk *:超时 - Android error: Failed to install *.apk on device *: timeout

问题: I'm getting this error from time to time and don't know what causing this: 我不时收到这个错误,不知道是什么导致这个: When trying to run/debug an Android app on a real de......

富含淀粉
23分钟前
9
0
CKEditor 5 + SpringBoot实战(三):SpringData JPA数据持久化

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,...

树下魅狐
41分钟前
5
0
直播 | 百度地图智能物流解决方案全新发布

本文作者:用****9 物流行业历经规模化增长阶段之后,开始更加注重效率的提高、成本的降低以及服务质量的提升。早在2015年,百度地图开放平台就推出了快递物流行业解决方案,并通过线上、线下...

百度开发者中心
04/16
7
0
Confluence 如何查看页面 ID

如果你希望查看页面的 ID 你有 2 个方法。 例如,你希望查看 https://www.cwiki.us/display/CONFLUENCEWIKI/Get+started 页面的 Page ID 的话。 如果你的标题栏没有特殊字符,那么将会使用英...

honeymoose
今天
11
0
Linux系统 Centos7 环境基于Docker部署Rocketmq服务

消息队列 基本概述 MQ,Message Queue,基于TCP协议构建的简单协议,区别于具体的通信协议。 基于通信协议定义和抽象的更高层次的通信模型,一般都是生产者和消费者模型,又或者说服务端和客户端...

mazhilin
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部