pgpool 之四 2 pgpool + 2 postgresql 的 stream replication 模式
os: ubuntu 16.04
db: postgresql 9.6.8
pgpool: pgpool-II-3.7.7
pgpool 簡介
準確的名字是Pgpool-II,這里簡稱為pgpool。pgpool 是介于postgresql 服務(wù)和 postgresql 客戶端的中間件。它提供如下功能:
1、連接池
2、復(fù)制
3、負載均衡
4、限制超過限度的連接
5、并行查詢
具有如下工作模式:
1、原始模式
2、連接池模式
3、復(fù)制模式
4、主/備模式
5、并行模式
雖然看上去功能強大,但是配置相對繁瑣。
本次實驗為 node1、node2 兩臺機器,每個節(jié)點上均安裝了 postgresql 和 pgpool ,vip 為 192.168.56.100
規(guī)劃如下:
192.168.56.100 nodevip #vip,pgpool的高可用連接 192.168.56.92 node1 #postgresql 9.6.8,pgpool 192.168.56.90 node2 #postgresql 9.6.8,pgpool安裝 postgresql 9.6.8
使用 apt install 方式安裝 postgresql 9.6.8,并配置好 stream replication。
參考<<ubuntu 16.04 安裝 postgresql 的優(yōu)化設(shè)置>>,<<ubuntu 16.04 + apt/make + postgresql 11>>,<<pg_basebackup 配置 stream replication 異步/同步>>
os 設(shè)置
/etc/hosts
# vi /etc/hosts 192.168.56.100 nodevip 192.168.56.92 node1 192.168.56.90 node2postgres 用戶 ssh 免密登錄,參考<<linux 配置ssh信任>>
$ ssh-keygen -t rsa $ ssh-copy-id postgres@192.168.56.92 $ ssh-copy-id postgres@192.168.56.90apt install
# apt install make gcc libssl-dev libpam0g libpam0g-dev arping watchdogsudo,參考<<sudo sudoer 配置>>
# vi /etc/sudoers postgres ALL=(ALL:ALL) NOPASSWD:ALL # chmod +s /sbin/ifconfig; chmod +s /sbin/ip; chmod +s /usr/sbin/arping;mkdir -p /usr/pgpool-3.7.7; chown -R postgres:postgres /usr/pgpool-3.7.7; mkdir -p /var/run/pgpool; chown -R postgres:postgres /var/run/pgpool; mkdir -p /var/log/pgpool; chown -R postgres:postgres /var/log/pgpool;# echo "mkdir -p /var/run/pgpool" >> /etc/rc.local ; echo "chown -R postgres:postgres /var/run/pgpool" >> /etc/rc.local ;安裝 pgpool
# su - postgres $ cd ~ $ wget http://www.pgpool.net/download.php?f=pgpool-II-3.7.7.tar.gz $ tar -zxvf ./download.php\?f\=pgpool-II-3.7.7.tar.gz $ cd pgpool-II-3.7.7$ ./configure --prefix=/usr/pgpool-3.7.7 -with-pgsql=/usr/lib/postgresql/9.6 \ --with-pgsql-includedir=/usr/include/postgresql \ --with-pgsql-libdir=/usr/lib/postgresql/9.6/lib \ --with-openssl --with-pam $ make $ make install需要在所有的 postgresql server 節(jié)點上安裝必要的 extension。
由于使用的是 apt install 方式,所以需要 root 權(quán)限 make install
如果有額外的缺少包錯誤提示,按照錯誤提示安裝就行了。
$ ls -l /usr/lib/postgresql/9.6/lib |grep -i pool -rwxr-xr-x 1 root root 66672 Jan 2 11:23 pgpool_adm.so -rwxr-xr-x 1 root root 46448 Jan 2 11:23 pgpool-recovery.so -rwxr-xr-x 1 root root 30328 Jan 2 11:23 pgpool-regclass.so$ ls -l /usr/share/postgresql/9.6/extension/ |grep -i pool -rw-r--r-- 1 root root 2574 Jan 2 11:23 pgpool_adm--1.0.sql -rw-r--r-- 1 root root 146 Jan 2 11:23 pgpool_adm.control -rw-r--r-- 1 root root 407 Jan 2 11:23 pgpool_recovery--1.0--1.1.sql -rw-r--r-- 1 root root 791 Jan 2 11:23 pgpool_recovery--1.0.sql -rw-r--r-- 1 root root 1002 Jan 2 11:23 pgpool_recovery--1.1.sql -rw-r--r-- 1 root root 178 Jan 2 11:23 pgpool_recovery.control -rw-r--r-- 1 root root 557 Jan 2 11:23 pgpool-recovery.sql -rw-r--r-- 1 root root 283 Jan 2 11:23 pgpool_regclass--1.0.sql -rw-r--r-- 1 root root 152 Jan 2 11:23 pgpool_regclass.control -rw-r--r-- 1 root root 142 Jan 2 11:23 pgpool-regclass.sqlpgpool 函數(shù)非必需安裝,但強烈建議安裝 pgpool_adm, pgpool_regclass, pgpool_recovery 函數(shù) 。
官方文檔是這樣說的 pgpool_adm is an extension and should be installed on all PostgreSQL servers
在 master 節(jié)點的 template1 數(shù)據(jù)庫上創(chuàng)建 extension,這樣以后新建的數(shù)據(jù)庫都會有這些 pgpool 的擴展。
postgres=# select * from pg_available_extensions where name like '%pool%';name | default_version | installed_version | comment -----------------+-----------------+-------------------+----------------------------------------------------pgpool_recovery | 1.1 | | recovery functions for pgpool-II for V3.4 or laterpgpool_adm | 1.0 | | Administrative functions for pgPoolpgpool_regclass | 1.0 | | replacement for regclass (3 rows)postgres=# \c template1template1=# create extension pgpool_adm; create extension pgpool_regclass; create extension pgpool_recovery;pgpool 的配置
有幾個關(guān)鍵的配置文件
pool_passwd 用于保存相應(yīng)客戶端登錄帳號名及md5密碼。
pcp.conf 用于管理查、看節(jié)點信息,如加入新節(jié)點。該文件主要是存儲用戶名及md5形式的密碼。
pool_hba.conf 用于認證用戶登錄方式,如客戶端IP限制等,類似于postgresql的pg_hba.conf文件。
pgpool.conf 用于設(shè)置pgpool的模式,主次數(shù)據(jù)庫的相關(guān)信息等。
pool_passwd
pool_passwd 用于保存 postgresql 用戶名及md5密碼。
$ cd /usr/pgpool-3.7.7/etc $ ../bin/pg_md5 -p -m -u postgres pool_passwdpcp.conf
pcp.conf 用于管理查、看節(jié)點信息,如加入新節(jié)點。該文件主要是存儲管理員的用戶名及md5形式的密碼。
$ cd /usr/pgpool-3.7.7/etc $ cp pcp.conf.sample pcp.conf $ ../bin/pg_md5 -u pgpool -p password: b4b8daf4b8ea9d39568719e1e320076f $ ../bin/pg_md5 -u postgres -p password: 7f5b916619bfc00bf19709bcfe544962$ vi pcp.conf pgpool:b4b8daf4b8ea9d39568719e1e320076f postgres:7f5b916619bfc00bf19709bcfe544962pool_hba.conf
pool_hba.conf 用于認證用戶登錄方式,如客戶端IP限制等,類似于postgresql的pg_hba.conf文件。
$ cd /usr/pgpool-3.7.7/etc $ cp pool_hba.conf.sample pool_hba.conf $ vi 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 ::1/128 trusthost all all 192.168.56.1/32 md5 host all all 192.168.56.90/32 md5 host all all 192.168.56.92/32 md5 host all all 192.168.56.100/32 md5最后幾條是手動添加的。
pgpool.conf
pgpool.conf 用于設(shè)置pgpool的模式,主次數(shù)據(jù)庫的相關(guān)信息等。
功能/模式 原始模式(*3) 復(fù)制模式 主/備模式 并行查詢模式 連接池 X O O O 復(fù)制 X O X (*1) 負載均衡 X O O (*1) 故障恢復(fù) O O O X 在線恢復(fù) X O (*2) X 并行查詢 X X X O 需要的 服務(wù)器數(shù) 1 或更多 2 或更多 2 或更多 2 或更多 是否需要 系統(tǒng)數(shù)據(jù)庫 否 否 否 是O 意味著“可用”, X 意味著“不可用 (*1) 并行查詢模式需要同時打開復(fù)制和負載均衡,但是復(fù)制和負載均衡無法用于并行查詢模式中的分布式表。 (*2) 在線恢復(fù)可以和流復(fù)制同時使用。 (*3) 客戶端僅僅是通過 pgpool-II 連接到 PostgreSQL 服務(wù)器。這種模式僅僅用于限制到服務(wù)器的連接數(shù),或者在多臺機器上啟用故障恢復(fù)。 $ cd /usr/pgpool-3.7.7/etc $ cp pgpool.conf.sample-stream pgpool.conf $ vi pgpool.conf參考<<pgpool 之十一 參數(shù)文件 pgpool.conf>>
另外一個節(jié)點的 pgpool.conf 相應(yīng)改動
pgpool 環(huán)境變量
# vi /etc/profile PATH=/usr/pgpool-3.7.7/bin:$PATH至此,安裝完畢。
啟動時需要先啟動 postgresql ,再啟動 pgpool
# /etc/init.d/postgresql start # su - postgres $ pgpool -f /usr/pgpool-3.7.7/etc/pgpool.conf \ -F /usr/pgpool-3.7.7/etc/pcp.conf \ -a /usr/pgpool-3.7.7/etc/pool_hba.conf -n -D 2>&1 &參考:
http://www.pgpool.net/mediawiki/index.php/Downloads
http://www.pgpool.net/docs/latest/en/html/index.html
總結(jié)
以上是生活随笔為你收集整理的pgpool 之四 2 pgpool + 2 postgresql 的 stream replication 模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32CubeMX 读取DS18B2
- 下一篇: jQuery中如何判断checkbox是