centos7展開し、高可用性クラスタのPostgreSQL patroni patroni記事の+ etcd

実験環境:centos7.4純粋なバージョン

Postgresのバージョン:9.6.15

etcdバージョン:3.3.11

patroniバージョン:

IP計画

192.168.216.130ノード1マスター

192.168.216.132のノード2スレーブ

192.168.216.134のノード3のスレーブ

etcdクラスタ展開は以前の記事を参照してくださいます。https://www.cnblogs.com/caidingyu/p/11408389.html

Postgresは参照記事を展開します。https://www.cnblogs.com/virtulreal/p/9921978.html

ノード1は、postgresql.confの以下の設定を変更します

MAX_CONNECTIONS = '100'の
max_wal_sendersの= '10' 
ポート= '5432' 
のlisten_addressesの= '0.0.0.0' 
synchronous_commit =上
full_page_writesを=に
wal_log_hints =上
synchronous_standby_names = '*' 
max_replication_slots = 10 
wal_level =レプリカ

ノード1は、pg_hba.confの以下の設定を変更します

[ルート@ localhostのデータ]#以上のpg_hba.conf |グレップの-v ^#| grepの-v ^ $ 
現地すべてすべてのピア
のホストすべてすべて127.0.0.1/32 MD5の
ホストすべてのpostgres 127.0.0.1/32 md5のは
、すべてのすべての192.168をホストします。 216.0 / 24 MD5 
すべてすべて:: 1/128 md5のホスト
ローカル複製レプリケータピア
ホスト複製レプリケータ127.0.0.1/32 md5の
ホスト複製レプリケータ:: 1/128 MD5 
ホスト複製レプリケータ192.168.216.130/32 MD5を
ホスト複製レプリケータ192.168.216.132/32 MD5 
ホスト複製レプリケータ192.168.216.134/32 MD5

 

 

node1でコピースロットを作成し、重要な、patroniはこのようなものを使用します

postgresの=#ユーザーレプリケータ複製ログイン暗号化されたパスワード「1qaz2wsx」を作成します。
postgresの=#パスワードでpostgresユーザを変更する'1qaz2wsx'; 
postgresの= pg_create_physical_replication_slot( 'pgsql96_node1')から#を選択*; 
postgresの= pg_create_physical_replication_slot( 'pgsql96_node2')から#を選択*; 
postgresの= pg_create_physical_replication_slot( 'pgsql96_node3')から#を選択*;

 ノード2ストリームのレプリケーション構成

systemctl停止にpostgresql-9.6 
SU - Postgresの
CD /var/lib/pgsql/9.6/data 
RM -rf ./* 
/usr/pgsql-9.6/bin/pg_basebackup -h 192.168.216.130 -D /var/lib/pgsql/9.6 /データ-Uレプリケータ-v -P -R 

VI recovery.confの
recovery_target_timeline = '最新の' 
standby_mode = 'on'に
primary_conninfo = 'ホスト= 192.168.216.130ポート= 5432ユーザー=レプリケータパスワード= 1qaz2wsx' 
primary_slot_name = 'pgsql96_node2' 
trigger_file = '/tmp/postgresql.trigger.5432' 

执行終了返回ルート用户が
開始systemctlのpostgresql-9.6

  

 ノード3ストリームのレプリケーション構成 

systemctl停止にpostgresql-9.6 
SU - Postgresの
CD /var/lib/pgsql/9.6/data 
RM -rf ./* 
/usr/pgsql-9.6/bin/pg_basebackup -h 192.168.216.130 -D /var/lib/pgsql/9.6 /データ-Uレプリケータ-v -P -R 

VI recovery.confの
recovery_target_timeline = '最新の' 
standby_mode = 'on'に
primary_conninfo = 'ホスト= 192.168.216.130ポート= 5432ユーザー=レプリケータパスワード= 1qaz2wsx' 
primary_slot_name = 'pgsql96_node3' 
trigger_file = '/tmp/postgresql.trigger.5432' 

执行終了返回ルート用户が
開始systemctlのpostgresql-9.6

 レプリケーションのステータスを表示する、ノード1上のデータベースに接続します

pg_stat_replicationからreplay_delayとしてflush_delay、pg_xlog_location_diff(sent_location、replay_location)としてWRITE_DELAY、pg_xlog_location_diff(sent_location、flush_location)として選択CLIENT_ADDR、pg_xlog_location_diff(sent_location、write_location)。

、patroniをダウンロード、インストール、ネットワークの問題の場合には、数回ピップピップをインストールして実行することができ、または別のソースに切り替え

yumをインストールGCC 
のyumのpython-devel.x86_64インストール
CDを/ tmpの
カールhttps://bootstrap.pypa.io/get-pip.py -o get-pip.py 
のpython get-pip.py 
psycopg2-バイナリインストールPIP 
PIPがpatroniをインストール[etcd、領事]

 インストールが成功したことを確認します

これpatroni 
patroni --help

 

node1でpatroni設定ファイルを手動で設定ファイルを作成する必要が次の

ます。mkdir -pは/ usr / patroni / confに
 CDの/ usr / patroni / confに/ 
猫/usr/patroni/conf/patroni_postgresql.yml 
範囲:pgsql96 
名前空間:/ pgsqlの/ 
名:pgsql96_node1 

restapi:
  聞く:192.168.216.130:8008 
  connect_address: 192.168.216.130:8008 

etcd:
  ホスト:192.168.216.130:2379 

ブートストラップ:
  #は、このセクションでは、etcdに書き込まれます:/ <名前空間> / <スコープ> / configの新しいクラスタの初期化した後
  #としてそれを使用する他のすべてのクラスタメンバーを`グローバルconfiguration`の
  DCS:
    TTL:30 
    loop_wait:10 
    retry_timeout:10 
    maximum_lag_on_failover:1048576 
    master_start_timeout:300
    synchronous_mode:偽
    のpostgresql:
      use_pg_rewind:真
      use_slots:真
      のパラメータ:
        のlisten_addresses: "0.0.0.0" 
        ポート:5432 
        wal_level:論理
        hot_standby: "オン" 
        wal_keep_segments:1000 
        max_wal_senders:10 
        max_replication_slots:10 
        wal_log_hints: "オン" 
#1にarchive_mode:「に「
#archive_timeoutを:1800年代
#1にarchive_command:gzipの<%P> /data/backup/pgwalarchive/%f.gz 
#のrecovery_conf: 行うrestore_command:gunzipは</data/backup/pgwalarchive/%f.gz>の%p 

のpostgresql:
  聞く:0.0.0.0:5432 
  connect_address:192.168.216.130 :5432
  DATA_DIR:/var/lib/pgsql/9.6/data 
  /usr/pgsql-9.6/bin:このBin_dir 
#1 CONFIG_DIR:/etc/postgresql/9.6/main 
  認証:
    複製:
      ユーザ名:レプリケータの
      パスワード:1qaz2wsx 
    スーパーユーザ:
      ユーザ名:Postgresの
      パスワード: 1qaz2wsx 

#watchdog: モード:自動#可能な値:オフ、自動、必要な
#デバイス:は/ dev /ウォッチドッグ
#のsafety_margin:5個の

タグ:
    NOFAILOVER:偽
    noloadbalance:偽
    clonefrom:偽
    NOSYNC:偽

 ノード2のpatroniプロファイルは、以下の

[ルート@ localhostのetcd]#猫/usr/patroni/conf/patroni_postgresql.yml 
スコープ:pgsql96の
名前空間:/ pgsqlの/ 
名:pgsql96_node2 

restapiは:
  聞く:192.168.216.132:8008 
  connect_address:192.168.216.132:8008 

etcd:
  ホスト:192.168 .216.132:2379 

ブートストラップ:
  このセクションはEtcdに書き込まれます。#:/ <名前空間> / <スコープ> / configの新しいクラスタの初期化した後
  #と`グローバルconfiguration`のようにそれを使用する他のすべてのクラスタ・メンバー
  :DCS 
    TTL:30 
    loop_waitを:10 
    retry_timeout:10 
    maximum_lag_on_failover:1048576 
    master_start_timeout:300 
    synchronous_mode:偽 
    のpostgresql:
      use_pg_rewind:真
      use_slots:真
      のパラメータ:
        のlisten_addresses: "0.0.0.0" 
        ポート:5432 
        wal_level:論理
        hot_standby: "オン" 
        wal_keep_segments:1000 
        max_wal_senders:10 
        max_replication_slots:10 
        wal_log_hints: "オン" 
#1にarchive_mode: "オン" 
#1のarchive_timeout:1800年代
#1にarchive_command:gzipの<%P> /data/backup/pgwalarchive/%f.gz 
#のrecovery_conf: 行うrestore_command:gunzipは</data/backup/pgwalarchive/%f.gz>の%p 

のpostgresql:
  聞く:0.0.0.0:5432  
  connect_address:192.168.216.132:5432
  DATA_DIR:は/ var / libに/ pgsqlで/ 9。6 /データ
  このBin_dir:/usr/pgsql-9.6/bin 
#1 CONFIG_DIR:/etc/postgresql/9.6/main 
  認証:
    複製:
      ユーザ名:レプリケータの
      パスワード:1qaz2wsx 
    スーパーユーザ:
      ユーザ名:Postgresの
      パスワード:1qaz2wsx 

#watchdog:
モード:自動#可能な値: 、自動、必要なオフ
の/ dev /ウォッチドッグ:#デバイス
#1 safety_margin:5個の

タグ:
    NOFAILOVER:偽
    noloadbalance:偽
    clonefrom:偽
    NOSYNC:偽

ノード3のpatroniプロファイルは、以下の

スコープ:pgsql96 
名前空間:/ pgsqlの/ 
名:pgsql96_node3 

restapi:
  聞く:192.168.216.134:8008 
  connect_address:192.168.216.134:8008 

etcd:
  ホスト:192.168.216.134:2379 

ブートストラップ:
  #は、このセクションでは、Etcdに書き込まれます:/ <名前空間新しいクラスタの初期化した後> / <スコープ> / configに
  #と`グローバルconfiguration`のようにそれを使用する他のすべてのクラスタ・メンバー
  DCSを:
    TTL:30 
    loop_wait:10 
    retry_timeout:10 
    maximum_lag_on_failover:1048576 
    master_start_timeout:300 
    synchronous_mode:偽
    のpostgresql:
      use_pg_rewind:真
      use_slots:真
      パラメータ:
        のlisten_addresses: "0.0.0.0" 
        ポート:5432 
        wal_level:論理
        hot_standby: "オン" 
        wal_keep_segments:1000 
        max_wal_senders:10 
        max_replication_slots:10 
        wal_log_hints: "オン" 
"オン":#1にarchive_mode 
#1のarchive_timeout:1800年代の
#1にarchive_command:gzipの<% P> /data/backup/pgwalarchive/%f.gz 
#のrecovery_conf: 行うrestore_command:gunzipは</data/backup/pgwalarchive/%f.gz>の%p 

のpostgresql:
  聞く:0.0.0.0:5432 
  connect_address:192.168.216.134: 5432 
  DATA_DIR:/var/lib/pgsql/9.6/data 
  このBin_dir:/usr/pgsql-9.6/bin
#1 CONFIG_DIR:/etc/postgresql/9.6/main 
  認証:
    複製:
      ユーザ名:レプリケータの
      パスワード:1qaz2wsx 
    スーパーユーザ:
      ユーザ名:postgresの
      パスワード:1qaz2wsx 

#watchdog: モード:自動#可能な値:オフ、自動、必要な
#デバイス:/ devの/ウォッチドッグ
#のsafety_margin:5個の

タグ:
    NOFAILOVER:偽
    noloadbalance:偽
    clonefrom:偽
    NOSYNC:偽

手動patroniを開始

ノード1、ノード2、ノード3の3つのノード起動します

雇用/usr/patroni/conf/patroni_postgresql.yml

ビューpatroniクラスタのステータス 

patronictl -c /usr/patroni/conf/patroni_postgresql.ymlリストを実行し、ウィンドウのクローニング

情報を確認してくださいetcd

 etcdctl LS / pgsqlの/ pgsql96

etcdctl GET / pgsqlの/ pgsql96 /メンバー/ pgsql96_node1

、最初からそのように構成さpatroni.serviceをブートを容易にするために、3番目のノードが設定する必要があります

[ルート@ localhostのデータ]#viの/etc/systemd/system/patroni.service 
[ルート@ localhostのデータ]#猫の/etc/systemd/system/patroni.service 
[単位] 
説明= patroni -高可用性PostgreSQLの
ドキュメント= https://patroni.readthedocs.io/en/latest/index.html 
後= syslog.target network.target etcd.target 
ウォンツ= network-online.target 

[サービス] 
=単純型
ユーザー= postgresの
グループ= postgresのを
PermissionsStartOnly =真
ExecStart =は/ usr / binに/ patroni /usr/patroni/conf/patroni_postgresql.yml 
ExecReload = / binに/殺す-HUP $ MAINPID 
LimitNOFILE = 65536 
KillMode =プロセス
KillSignal = SIGINT 
を再起動=オン異常
RestartSec = 30代
TimeoutSec = 0 

[インストール] 
WantedBy = multi-user.target

PostgreSQLは、PostgreSQLのpatroniが管理し、最初から禁止します

systemctlステータスpatroniは
patroni開始systemctl 
systemctl patroni有効

systemctl状況PostgreSQLの
systemctl無効にpostgresqlを

systemctl状態etcd 
etcdを有効systemctl

リーダーを切り替える方法

実行patronictl -c /usr/patroni/conf/patroni_postgresql.yml切り替え

 複数の実行patronictl -c /usr/patroni/conf/patroni_postgresql.ymlリストが更新され、あなたはリーダーがnode1にノード2から切り替えて見ることができます

 

 

 

  

おすすめ

転載: www.cnblogs.com/caidingyu/p/11408502.html