[原]Pgpool使用心得体会

标签: | 发表时间:2014-04-26 02:27 | 作者:u013526896
出处:http://blog.csdn.net/u013526896

pgpool作为postgresql的集群应用兼有代理功能,实在是强大,在无数次的实验失败之后,总结一下我的使用心得。

一、下载安装

首先提供下载页: 点击这里。我下载的是installer-pg93-3.3.3.tar.gz,解压之后安装postgresql92-libs-9.2.4-1PGDG.didt.ep.x86_64.rpm和pgpool-II-pg93-3.3.3-1.pgdg.x86_64.rpm,这时pgpool的安装已经结束。

二、模式

pgpool给用户提供了三种模式供用户选择,分别是复制模式,主备模式和流复制模式。
pgpool模式
模式 示例文件
复制模式 pgpool.conf.sample-replication
主/备模式(Slony-I) pgpool.conf.sample-master-slave
主/备模式(流复制) pgpool.conf.sample-stream

1、复制模式

对于模式的配置,这里不做多讲,我使用的是复制模式,简单配置如下:(数据库节点为192.168.8.142,192.168.8.143;pgpool节点为192.168.8.35)
详细配置内容参见pgpool使用手册: 点击这里
首先修改两个节点的/etc/pgpool-II/pcp.conf
这个文件的作用是pgpool连接postgresql数据库的用户名密码认证。我们数据库的用户名密码为postgres:postgres。
[root@ucloud35 ~]# pg_md5 postgres
e8a48653851e28c69d0506508fb27fc5
然后在pcp.conf追加如下:
[root@ucloud35 ~]# echo "postgres:e8a48653851e28c69d0506508fb27fc5" >> /etc/pgpool-II/pcp.conf 
进入pgpool配置目录,讲现有模版备份,拷贝复制模版为现有模版
[root@ucloud35 ~]# cd /etc/pgpool-II/
[root@ucloud35 pgpool-II]# mv pgpool.conf pgpool.conf.bak
[root@ucloud35 pgpool-II]# cp pgpool.conf.sample-replication pgpool.conf
[root@ucloud35 pgpool-II]# chmod 764 pgpool.conf
进入配置文件,修改以下内容(内容旁边都有注释)
[root@ucloud35 pgpool-II]# vim pgpool.conf
listen_addresses = '*'   监听全网段
port = 9999    开放端口9999
backend_hostname0 = '192.168.8.142'    节点1
backend_port0 = 5432    节点1接入的端口
backend_weight0 = 1    节点1的权重
backend_hostname1 = '192.168.8.143'    节点2
backend_port0 = 5432    节点1接入的端口
backend_weight1 = 1    节点2的权重
enable_pool_hba = on    接入代理的客户端认证
基本配置是这些
将142和143节点的数据库开启:
/opt/PostgreSQL/9.3/bin/pg_ctl -D /opt/PostgreSQL/9.3/data/ start
(关闭命令:/opt/PostgreSQL/9.3/bin/pg_ctl -D /opt/PostgreSQL/9.3/data/ -m fast stop)
然后开启pgpool,
[root@office-cmdb01 ~]# pgpool
第一次开启会提示pid文件不存在,需要手工创建,若父目录不存在手动添加。
再次开启pgpool就可以了,第一次开启出现的提示可以忽略。

三、注意事项

出于安全考虑,需要对数据库进行安全认证,数据库安全认证模式为md5,pgpool也是同样的。对于节点的数据库安全认证文件,我的配置如下:
[root@office-cmdb01 data]# tail pg_hba.conf -n 15


# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             192.168.8.142/32            trust
host    all             all             192.168.8.143/32            trust
host    all             all             0.0.0.0/0            md5
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                md5
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5
此处语法很简单,只需要制定好相应IP或者IP段,写好认证方式为trust或者md5即可。
为了实现其他用户接入数据库密码认证,这里对节点数据库采用trust,对其他IP采用md5认证,优先级为从上往下。
下面是对pgpool认证文件的配置:
[root@ucloud35 pgpool-II]# tail pool_hba.conf 
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         0.0.0.0/0          md5
对全网段采用md5认证。
下面生成密码文件:
[root@ucloud35 pgpool-II]#pg_md5 --md5auth -u postgres -p
输入和数据库一样的密码(postgres)。
[root@ucloud35 pgpool-II]# tail pool_passwd 
postgres:md574d9e50349a805a667ad9e325fb02ebd
此时认证已经做好,用数据库客户端连接35的9999端口即可访问。
这里需要补充一下的是,数据库节点和代理节点必须分开,因为他们都是做md5认证,但是代理程序的认证是基于数据库的,由于数据库之间需要做trust认证,如果把代理节点和其中一个数据库节点放在一起,代理节点的认证则会不起作用,所以必须要和数据库节点分开使用。
同时为了达到稳定和灾备,可以搭建两个pgpool代理用keepalive实现动态迁移,在访问的时候需要访问VIP的9999端口才能实现复制模式或者其他模式。

作者:u013526896 发表于2014-4-25 18:27:07 原文链接
阅读:23 评论:0 查看评论

相关 [pgpool 体会] 推荐:

[原]Pgpool使用心得体会

- - 杰克的运维之旅
pgpool作为postgresql的集群应用兼有代理功能,实在是强大,在无数次的实验失败之后,总结一下我的使用心得. 首先提供下载页: 点击这里. 我下载的是installer-pg93-3.3.3.tar.gz,解压之后安装postgresql92-libs-9.2.4-1PGDG.didt.ep.x86_64.rpm和pgpool-II-pg93-3.3.3-1.pgdg.x86_64.rpm,这时pgpool的安装已经结束.

使用pgpool-ii 搭建postgresql 高可用、负载均衡架构

- - x-marker的博客
要搭建基于postgresql的高可用、负载均衡的数据库集群架构,还有很多技术,如postgres-xc,但本文以最常用的postgresql的主备模式(主库加流复制为例来搭建,1主库+多备库,实现高可用和负载均衡). 高可用即一个节点宕机不影响整体业务运行,负载均衡是指客户端发过来的链接请求能均匀的分布到各个数据节点,负载均衡的时候需要考虑到主库和备库是不同的,主库可读可写而备库只能读,因此select语句可以发往主库和备库,而update、insert、delete等要在主库执行,别的负载均衡软件如lvs是做不到的,但pgpool可以检测sql语句,自动发往不同的节点.

38岁,38个体会

- lei - 译言-每日精品译文推荐
来源38 Life Lessons I’ve Learned in 38 Years. 住在像巴黎这样的城市里,有很多千年不坠的建筑,让你能体会到什么叫做“一眨眼的功夫”. 但已经活了这么久仍然让我感到很神奇,我以为我的人生刚开始呢. 我通常不太重视过生日,但它也总是给我一个反思的机会. 我想跟你们分享一些我的体会,就算是给初生之犊一些指引吧.

试用 Instagram 2.0 之体会

- linsen - 爱范儿 · Beats of Bits
我一直很沉迷 Instagram ,喜欢它的小巧和专注,喜欢它的滤镜名字,喜欢它的同步功能,喜欢 @tiaichima 每天发布三毛猫的照片,也喜欢在“热门”中寻找拍摄的灵感. “四个员工撑起九百万用户”的公司,终于发布了 Instagram 2.0 版本,真是期待已久. 在升级之前,我要提醒一下大家,请确保你的 iPhone 版本在 iOS 4.2.1 以上,这才能享受到完整的体验.

选股票的体会

- - 张化桥的 Blog
12月17日在股票分析师午餐会上发言:. (1) 一定不要被自己的行业所限制. 如果你对其它行业的某个股票有特别的兴趣,或者有特别强烈的感觉,管它什么行业. (2)绝大多数股票,如果未来有15%或者20%的上升空间,不要浪费时间写报告. 这证明你没有强烈的感觉,也许你完全错了. 也许这个股票可以上升3倍,只是你完全没有看到而已.

做基础产品的体会

- BTK 4eVeR - BlogJava-庄周梦蝶
      一个公司大了,总有部分人要去做一些通用的东西给大家用,我这里说的基础产品就是这类通用性质的东西,不一定高科技,但是一定很多人依赖你的东西来完成各种各样的功能. 做这样的东西,有些体会可以说下.     首先,能集中存储的,就不要分布存储,数据集中存储有单点的危险,但是比之分布式存储带来的复杂度不可同日而语.

做商业产品的一点体会

- Kang - 互联网的那点事...
很多人问我是不是做电子商务或社会化网络的,呵呵,还真不是,而且完全不搭边. 我是做商业产品的,做的是平台项目,性质偏向于整合和贯通. 所以常羡慕做用户产品的同学,能更多的关注用户体验、交互设计,有机会使用自己设计的产品,可以听到周围最真实的反馈. 商业产品则功利和直接许多,关注的也不大相同,今天就简单的说说工作体会吧.

时间管理的十条体会

- Freeman - Xiaoxiao's Weblog
  接受了一个邀请,再次把三年前的PPT讲了一遍,还好. 前天晚上认真思考了一下,我认为以下是时间管理最重要的十点,分别解释一下:. 没有目标或不以结果导向,单纯的做时间管理没有意义. 小王说每天计划打一次篮球,但总是有种种事情把打球的时间给耽搁了. 大家都觉得时间不够用,都想找一个万全的方法解决时间的问题,为什么打篮球总是没有,不如仔细想想为什么要把打篮球列在每日的Todolist里.

Java源码阅读的真实体会

- wangjia - ITeye论坛最新精华讨论帖
刚才在论坛不经意间,看到有关源码阅读的帖子. 回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C++,一开始去啃《Core Java》,你是很难从中吸收到营养的,特别是《深入Java虚拟机》这类书,别人觉得好,未必适合现在的你.