您的位置:首页 > 数据库

Pgpool使用心得体会

2014-04-25 18:27 543 查看
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端口才能实现复制模式或者其他模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息