日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pgpool安装部署(亲测可用)

發布時間:2023/12/31 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pgpool安装部署(亲测可用) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Pgpool安裝部署指導

1、 環境準備
1.1軟件
? CentOS 7.6
? PGPool 3.5
? PostgreSQL11.2
1.2節點
? node1 172.16.8.7(主庫)
? node2 172.16.8.6(從庫)
? node3 172.16.8.5(從庫)
? vip 172.16.5.9(虛擬ip)
1.3配置
? PostgreSQL Port:18083
? 復制賬號:replica/replica-vcredit
? 管理賬號:app1/********

2、 建立ssh互信
參考我的另一篇文章:https://blog.csdn.net/liwangcuihua/article/details/94720057

3、 PostgreSql一主二從配置
參考我的另一篇文章:https://blog.csdn.net/liwangcuihua/article/details/94720459

4、 Pgpool集群安裝部署
注意:postgreSql及pgpool相關文件及文件夾需將操作權限配給當前(我的是app1)賬號,否則更改文件內容及啟動會出現沒有權限的問題。
4.1 pgpool-II安裝

  • 在三個節點下載并安裝pgpool-II和其擴展函數
    sudo yum install pgpool-II-11.x86_64
    sudo yum install pgpool-II-11-extensions.x86_64

  • 在主服務器上安裝擴展函數
    (a) 安裝pgpool-regclass函數,此函數可解決在不同的 schema 中處理相同的表名出現的問題(臨時表不會出問題)。
    psql -h 172.16.8.7 -p 5432 -d gisdb #連接主庫
    gisdb=# CREATE EXTENSION pgpool_regclass;
    CREATE EXTENSION
    (b) 安裝C語言函數 pgpool-recovery,用于在線恢復節點。
    gisdb=# CREATE EXTENSION pgpool_ recovery;
    CREATE EXTENSION
    (c) 建立insert_lock 表,該表主要用與解決 pgpool-Ⅱ和 VACUUM 表鎖的互斥問題。
    psql -f /usr/pgpool-11/share/pgpool-II/insert_lock.sql -h 172.16.8.7 -p 18083 -U app1 gisdb
    4.2 服務器配置pgpool-II
    復制pgpool-Ⅱ 模板文件:
    cd etc/pgpool-II-11
    cp pcp.conf.sample pcp.conf
    cp pgpool.conf.sample pgpool.conf
    cp pool_hba.conf.sample pool_hba.conf
    4.2.1 配置pgpool.conf文件
    這里只對目前應用到的參數進行配置講解。下面是在三個環境上配置pgpool.conf文件。
    4.2.1.1 連接

    listen_addresses = ‘’ #指定pgpool-II 將接受 TCP/IP 連接的主機名或者IP地址
    port = 18999 # pgpool-II 監聽 TCP/IP 連接的端口號
    socket_dir = ‘/var/run’ # pgpool-II 建立用于建立接受 UNIX 域套接字連接的目錄。
    pcp_listen_addresses = '’ #指定 pcp 進程接收 TCP/IP 連接的主機名或IP地址。
    pcp_port = 18898 # PCP 進程接受連接的端口號。
    pcp_socket_dir = ‘/var/run’ #PCP 進程用于建立接受 UNIX 域套接字連接的目錄。

  • 4.2.1.2 后端(postgreSql服務)

    backend_hostname0 = '172.16.8.7' #指出連接到 PostgreSQL 后臺程序的地址。0為主數據庫 backend_port0 = 18083 #指定后臺程序的端口號。 backend_weight0 = 1 #指定后臺程序的負載均衡權重。 backend_data_directory0 = '/data/pgsql11/data' #指定后臺的數據庫實例的目錄。 backend_flag0 = 'ALLOW_TO_FAILOVER' #允許故障切換或者從后臺程序斷開。backend_hostname1 = '172.16.8.6' backend_port1 = 18083 backend_weight1 = 1000 backend_data_directory1 = '/data/pgsql11/data' backend_flag1 = 'ALLOW_TO_FAILOVER'backend_hostname2 = '172.16.8.5' backend_port2 = 18083 backend_weight2 = 1000 backend_data_directory2 = '/data/pgsql11/data' backend_flag2 = 'ALLOW_TO_FAILOVER'

    4.2.1.3 客戶端認證

    enable_pool_hba = on #如果為 on,則使用 pgpool_hba.conf 來進行客戶端認證。 pool_passwd = 'pool_passwd' #指定用于 md5 認證的文件名。默認值為"pool_passwd"。"" 表示禁用。

    4.2.1.4 日志

    log_line_prefix = '%t: pid %p: ' #輸出到每行日志開頭的打印樣式字符串,默認值打印時間戳和進程號 log_connections = off #如果為 on,進入的連接將被打印到日志中。 log_hostname = off #如果為 on,ps 命令將顯示客戶端的主機名而不是 IP 地址。 log_statement = off當設置為 on 時生成 SQL 日志消息。 log_per_node_statement = on #針對每個 DB 節點產生日志,要知道一個 SELECT 的結果是不是從查詢緩存獲得,需要啟用它 pid_file_name = '/var/run/pgpool-II-11/pgpool.pid' #到包含 pgpool-II 進程 ID 的文件的完整路徑名。 logdir = '/data/pgsql11/log' #保存日志文件的目錄。

    4.2.1.5 主備模式下開啟負載均衡

    replication_mode = off#設置為 on 以啟用復制模式,在主/備模式中, replication_mode 必須被設置為 off,并且 master_slave_mode 為 on load_balance_mode = on # 當設置為 on時,SELECT 查詢將被分發到每個后臺程序上用于負載均衡。 master_slave_mode = on # 主備模式 master_slave_sub_mode = 'stream' # 使用 PostgreSQL 內置的復制系統(基于流復制)時被設置sr_check_period = 10 #本參數指出基于流復制的延遲檢查的間隔,單位為秒 sr_check_user = 'pgpool1' #執行基于流復制檢查的用戶名。用戶必須存在于所有的 PostgreSQL 后端上,否則,檢查將出錯。 sr_check_password = 'pgpool1' #執行流復制檢測的用戶的密碼。 sr_check_database = 'gisdb' #執行流復制延遲檢測的數據庫。 delay_threshold = 10000000 #指定能夠容忍的備機上相對于主服務器上的 WAL 的復制延遲,單位為字節。 如果延遲到達了 delay_threshold,pgpool-II 不再發送 SELECT 查詢到備機。 所有的東西都被發送到主服務器,即使啟用了負載均衡模式,直到備機追趕上來。

    4.2.1.6 健康檢查

    health_check_period = 10 # 本參數指出健康檢查的間隔,單位為秒。 health_check_timeout = 20 # 本參數用于避免健康檢查在例如網線斷開等情況下等待很長時間。 health_check_user = 'pgpool1' #用于執行健康檢查的用戶。用戶必須存在于 PostgreSQL 后臺中。 health_check_password = 'pgpool1' #用于執行健康檢查的用戶的密碼。 health_check_database = 'gisdb' #執行健康檢查的數據庫名。

    4.2.1.7 配置看門狗

    use_watchdog = on #如果為 on,則激活看門狗。 wd_hostname = '172.16.3.7' #指定 pgpool-II 的主機名或者IP地址,設置本節點的節點名 wd_port = 19998 #指定看門狗的通信端口。 wd_priority = 1 #本參數用于設定在主看門狗節點選舉時本地看門狗節點的優先權。 在集群啟動的時候或者舊的看門狗故障的時候,wd_priority 值較高的節點會被選為主看門狗節點。 wd_ipc_socket_dir = '/var/run' #建立 pgpool-II 看門狗 IPC 連接的本地域套接字建立的目錄。

    4.2.1.8 虛擬IP控制

    delegate_IP = '172.16.5.9' #指定客戶端的服務(例如應用服務等)連接到的 pgpool-II 的虛擬 IP (VIP) 地址。 當一個 pgpool-II 從備節點切換為激活節點時,pgpool-II 接管這個 VIP。 if_cmd_path = '/sbin' #本參數指定用于切換 IP 地址的命令的所在路徑。 if_up_cmd = 'ifconfig ens192:0 inet $_IP_$ netmask 255.255.255.0' #本參數指定一個命令用以啟用虛擬 IP。設置命令和參數,例如 "ip addr add $_IP_$/24 dev eth0 label eth0:0"。 參數 $_IP_$ 會被 delegate_IP 設置的值替換。ens192根據現場機器改掉。 if_down_cmd = 'ifconfig ens192:0 down' #本參數指定一個命令用以停用虛擬 IP 注:ifconfig ens192:0 inet $_IP_$ netmask 255.255.255.0'為給網卡配置ip的命令,ens192:0表示虛擬網絡接口,給單個網卡配置多個ip時可設置為eth192:x (x是0-255),netmask 255.255.255.0 配置的是子網掩碼,我們可以通過ifconfig命令查看本機網卡,如圖所示:

    ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190705105555151.png

    4.2.1.9 心跳模式

    wd_lifecheck_method = 'heartbeat' #本參數指定存活檢查的模式。 wd_interval = 10 #本參數指定 pgpool-II 進行存活檢查的間隔,單位為秒wd_heartbeat_port = 9694 #本選項指定接收心跳信號的端口號。默認為 9694 。 wd_heartbeat_keepalive = 2 #本選項指定發送心跳信號的間隔(秒)。默認值為 2。 wd_heartbeat_deadtime = 30 #如果本選項指定的時間周期內沒有收到心跳信號,則看門狗認為遠端的 pgpool-II 發生故障。 heartbeat_destination0 = '172.16.8.6' #本選項指定心跳信號發送的目標,可以是 IP 地址或主機名。設置其它PostgreSQL節點的節點名 heartbeat_destination_port0 = 9694 #本選項指定由 heartbeat_destinationX 指定的心跳信號目標的端口號。這個值通常等于 wd_heartbeat_port。 heartbeat_device0 = 'ens192' #本選項指定用于發送心跳信號到由 heartbeat_destinationX指定的目標的設備名。 heartbeat_destination1 = '172.16.8.5' #設置其它PostgreSQL節點的節點名 heartbeat_destination_port1 = 9694 heartbeat_device1 = 'ens192'

    4.2.1.10 服務監控

    other_pgpool_hostname0 = '172.16.8.6' #指定需要監控的 pgpool-II 服務器主機。這用于發送/接收查詢和數據包,同時也是看門狗的標識。 設置其它Pgpool節點的節點名 other_pgpool_port0 = 18999 # 指定需要監控的 pgpool-II 服務器的 pgpool 服務的端口。 other_wd_port0 = 19998 # 指定需要監控的 pgpool-II 服務器的看門狗的端口。 other_pgpool_hostname1 = '172.16.8.5' other_pgpool_port1 = 18999 other_wd_port1 = 19998

    4.2.2 配置pool_hba.config文件(權限配置)
    4.2.2.1 配置pcp命令
    pgpool-II 有一個用于管理功能的接口,用于通過網絡獲取數據庫節點信息、關閉 pgpool-II 等。要使用 PCP 命令,必須進行用戶認證。這需要在 pcp.conf 文件中定義一個用戶和密碼。(pcp具體命令可參考網址http://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#memcached_params)。

  • 使用pg_md5命令加密
  • 編寫pcp.config文件
    vi /etc/pgpool-II-11/pcp.conf
    app1: f92ea1839dc16d7396db358365da7066
  • 編寫用于md5認證的文件pool_passwd
    cd /etc/pgpool-II-11
    vim pool_passwd
    app1: f92ea1839dc16d7396db358365da7066
    4.2.2.2 配置pool_hba.conf
    pgpool可以按照和PostgreSQL的hba.conf類似的方式配置自己的主機認證,所有連接到pgpool上的客戶端連接將接受認證,這解決了后端PostgreSQL無法直接對前端主機進行IP地址限制的問題。
  • 4.3 pgpool的啟動與測試
    4.3.1 pgpool的啟動

  • 啟動。注意:所有后端服務(sql、緩存)都必須在啟動 pgpool-II 之前啟動。
    sudo pgpool -n #前端啟動命令,退出后會自動關閉
    sudo pgpool -n > /data/pgpool/logfile/pgpool.log 2>&1 & #后端啟動命令,先啟動主服務器,再啟動從服務器,啟動日志在pgpool.log查看
  • 連接。可以通過命令行或者navicat客戶端進行連接測試。
    psql -h 172.16.8.7 -p 18999 -d gisdb #連接主pgpool
    psql -h 172.16.8.6 -p 18999 -d gisdb #連接從pgpool
    psql -h 172.16.8.5 -p 18999 -d gisdb #連接從pgpool
    在172.16.8.7環境上,連接vip:
    psql -h 172.16.5.9 -p 18999 -d gisdb #通過虛擬ip連接pgpool
    通過 show pool_nodes;命令查看集群狀態:
  • 4.3.2 pgpool的停止
    sudo pgpool stop #停止命令,如果還有客戶端連接著, pgpool-II 等待它們斷開連接,然后才結束運行。可用以下命令:
    sudo pgpool -m fast stop #快速停止命令
    若以上均不能停止pgpool,則需kill掉pgpool的所有進程:
    sudo killall -9 pgpool
    刪除所占端口文件
    sudo rm -rf /run/.s.PGSQL.18898
    sudo rm -rf /run/.s.PGSQL.18999
    4.3.3 HA測試

  • 模擬master端pgpool宕機
    sudo pgpool -m fast stop

  • psql -h 172.16.5.9 -p 18999 -d gisdb #通過虛擬ip連接pgpool
    通過 show pool_nodes;命令查看集群狀態
    4.4 配置使用memcached
    4.4.1 安裝memcached

  • 安裝
    sudo yum install libevent libevent-devel
    sudo yum install Memcached

  • 啟動
    /usr/bin/memcached -p 11211 -m 64m -d
    4.4.2 配置pgpool.config緩存參數

    memory_cache_enabled = on #要啟用基于內存的查詢緩存,設置以下選項為 on
    memqcache_method = ‘memcached’ #你可以選擇一個緩存策略:共享內存或者 memcached(不能同時使用)。
    memqcache_memcached_host = ‘172.16.8.7’ #指定 memcached 工作的主機的主機名或 IP 地址。
    memqcache_memcached_port = 11211 #指定 memcached 的端口。默認為 11211。
    memqcache_total_size = 67108864 #指定用于緩存的共享內存的大小,單位為字節。
    memqcache_max_num_cache = 1000000 #制定緩存的項目數。這用于定義緩存管理空間的大小。
    memqcache_expire = 0 #查詢緩存的生命周期,默認為 0。0 表示沒有緩存超時,而且緩存被啟用直到表被更新。
    memqcache_auto_cache_invalidation = on #如果為 on,則在表被更新的時候自動刪除相關的緩存。
    memqcache_maxcache = 40960000 #select結果集的大小最大現在
    memqcache_oiddir = ‘/data/pgpool/oiddir’ #用于 SELECT 的存儲表的 OID 的目錄的完整路徑。
    white_memqcache_table_list = ‘’ #指定一個以逗號分隔的表名的列表,用于使 SELECT 的結果被緩存
    black_memqcache_table_list = ‘’ #指定一個以逗號分隔的表名的列表,用于使 SELECT 的結果不被緩存

  • 4.4.3 測試memcached
    通過jmeter構建壓力測試,查詢某條數據,查看日志,日志如下,表示從緩存中查詢:

    4.5 參考資料
    http://www.pgpool.net/docs/pgpool-II-3.5.4/doc/pgpool-zh_cn.html#memcached_params

    總結

    以上是生活随笔為你收集整理的Pgpool安装部署(亲测可用)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。