pgpool mysql_PGPool-II+PG流复制实现HA主备切换

基于PG的流复制能实现热备切换,但是是要手动建立触发文件实现,对于一些HA场景来说,需要当主机down了后,备机自动切换,经查询资料知道pgpool-II可以实现这种功能。本文基于PG流复制基础上 ,以pgpool-II实现主备切换。在配置pgpool之前需分别在两台规划机上安装好pg数据库,且配置好了流复制环境,关于流复制配置参考前文:http://www.jianshu.com/p/12bc931ebba3。

ef183d0a9213

pgpool双机集群架构图.png

基于PGPool的双机集群如上图所示:pg主节点和备节点实现流复制热备,pgpool1,pgpool2作为中间件,将主备pg节点加入集群,实现读写分离,负载均衡和HA故障自动切换。两pgpool节点可以委托一个虚拟ip节点作为应用程序访问的地址,两节点之间通过watchdog进行监控,当pgpool1宕机时,pgpool2会自动接管虚拟ip继续对外提供不间断服务。

一 主机规划

主机名 | IP | 角色 | 端口

:----:|:----:|:----:|:----:|:----:|:----:

master| 192.168.0.108 |PGMaster|5432

| 192.168.0.108|pgpool1|9999

slave|192.168.0.109|PGSlave|5432

| 192.168.0.109|pgpool2|9999

vip|192.168.0.150|虚拟ip|9999

建立好主机规划之后,在master,slave上两台机器设置下host

[root@localhost ~]# vi .bashrc

#编辑内容如下:

192.168.0.108 master

192.168.0.109 slave

192.168.0.150 vip

二 配置ssh秘钥

在master,slave机器上都生成ssh如下:

[root@localhost ~]# su - postgres

[postgres@localhost ~]$ ssh-keygen -t rsa

[postgres@localhost ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

[postgres@localhost ~]$ chmod 600 ~/.ssh/authorized_keys

分别将master的公钥复制到slave,slave的公钥复制到master。

#master端

[postgres@localhost ~]$ scp ~/.ssh/authorized_keys postgres@slave:~/.ssh/

#slave端

[postgres@localhost ~]$ scp ~/.ssh/authorized_keys postgres@master:~/.ssh/

验证下ssh配置是否成功

#master端

[postgres@slave ~]$ ssh postgres@slave

Last login: Tue Dec 20 21:22:50 2016 from master

#slave端

[postgres@slave ~]$ ssh postgres@master

Last login: Tue Dec 20 21:22:50 2016 from slave

证明ssh信任关系配置成功。

三 安装pgpool

# 下载pgpool

[root@master opt]# wget http://www.pgpool.net/mediawiki/images/pgpool-II-3.6.0.tar.gz

# 解压

[root@master opt]# tar -zxvf pgpool-II-3.6.0.tar.gz

# 文件权限设置为postgres(其实并非一定装在postgres账户,只不过之前ssh设置都在postgres下,为了方便)

[root@master opt]# chown -R postgres.postgres /opt/pgpool-II-3.6.0

[root@master ~]# su - postgres

[postgres@master opt]$ cd pgpool-II-3.6.0

[postgres@master pgpool-II-3.6.0]$ ./configure –prefix=/opt/pgpool -with-pgsql=path -with-pgsql=/home/postgres

[postgres@master pgpool-II-3.6.0]$ make

[postgres@master pgpool-II-3.6.0]$ make install

安装pgpool相关函数,并非强制,可选安装,为了系统稳定,建议安装

安装pg_reclass,pg_recovery

[postgres@master pgpool-II-3.6.0]$ cd src/sql

[postgres@master sql]$ make

[postgres@master sql]$ make install

[postgres@master sql]$ psql -f insert_lock.sql

安装全部结束。

四 配置pgpool

4.1 配置pgpool环境变量

pgpool装在了postgres账户下,在该账户中添加环境变量,master,slave节点都执行。

[postgres@master ~]$ cd /home/postgres

[postgres@master ~]$ vim .bashrc

#编辑内容如下

PGPOOLHOME=/opt/pgpool

export PGPOOLHOME

PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin:$PGPOOLHOME/bin

export PATH

4.2 配置pool_hba.conf

pool_hba.conf是对登录用户进行验证的,要和pg的pg_hba.conf保持一致,要么都是trust,要么都是md5验证方式,这里采用了md5验证方式如下设置:

[postgres@master ~]$ cd /opt/pgpool/etc

[postgres@etc~]$ cp pool_hba.conf.sample pool_hba.conf

[postgres@etc~]$ vim pool_hba.conf

#编辑内容如下

# "local" is for Unix domain socket connections only

local all all md5

# IPv4 local connections:

host all all 0.0.0.0/0 md5

host all all 0/0 md5

4.3 配置pcp.conf

pcp.conf配置用于pgpool自己登陆管理使用的,一些操作pgpool的工具会要求提供密码等,配置如下:

[postgres@master ~]$ cd /opt/pgpool/etc

[postgres@etc~]$ cp pcp.conf.sample pcp.conf

# 使用pg_md5生成配置的用户名密码

[postgres@etc~]$ pg_md5 nariadmin

6b07583ba8af8e03043a1163147faf6a

#pcp.conf是pgpool管理器自己的用户名和密码,用于管理集群。

[postgres@etc~]$ vim pcp.conf

#编辑内容如下

postgres:6b07583ba8af8e03043a1163147faf6a

#保存退出!

#在pgpool中添加pg数据库的用户名和密码

[postgres@etc~]$ pg_md5 -p -m -u postgres pool_passwd

#数据库登录用户是postgres,这里输入登录密码,不能出错

#输入密码后,在pgpool/etc目录下会生成一个pool_passwd文件

4.4 配置系统命令权限

配置 ifconfig, arping 执行权限 ,执行failover_stream.sh需要用到,可以让其他普通用户执行。

[root@master ~]# chmod u+s /sbin/ifconfig

[root@master ~]# chmod u+s /usr/sbin

4.5 配置pgpool.conf

查看本机网卡,配置后面的delegate_IP需要

[postgres@etc~]$ ifconfig

ef183d0a9213

网卡名称.png

配置master上的pgpool.conf:

[postgres@master ~]$ cd /opt/pgpool/etc

[postgres@etc~]$ cp pgpool.conf.sample pgpool.conf

[postgres@etc~]$ vim pgpool.conf

编辑内容如下:

# CONNECTIONS

listen_addresses = '*'

port = 9999

pcp_listen_addresses = '*'

pcp_port = 9898

# - Backend Connection Settings -

backend_hostname0 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值