Index ソフト・ハード | Pg-Rex 導入 |
機能・要件 構成・方式 タスク 導入 ダウンロード インストール PGインストール DBバックアップ ディレクトリ削除 追加インストール PMインストール corosync.conf CS認証設定 PM追加設定 CS_Unitファイル PM_Unitファイル ログの出力 ログメッセージ ログローテーション プロセス起動 PostgreSQL設定 repユーザ作成 一般ユーザ作成 pg_hba.conf .pgpass作成 pg-rex_tools.conf NW接続登録 ssh接続 リソースの設定 crmファイル作成 pg-rexスタート OS設定 |
Pg-Rexダウンロード ・pg-rexダウンロード先 ・同梱されている「利用マニュアル」に沿って、構築・運用する。 Pg-Rexインストール ・両系にPG-REX補助ツールをインストール 解凍した Pg-Rexダウンロードファイルをホームデレク取りへ Net_OpenSSH、IO_Tty、pg-rex_operation_tools_scriptをインストール $ sudo -s # yum install Net_OpenSSH-0.62-1.el7.x86_64.rpm # yum install IO_Tty-1.11-1.el7.x86_64.rpm # yum install pg-rex_operation_tools_script-11.2-1.el7.noarch.rpm・両系のディレクトリ構成は同一にする。(確認) ・必要なら、yumのキャッシュを削除 # yum clean all # rm -rf /var/cache/yumPostgreSQLインストール ・両系にPostgreSQLが正常にインストールされている(db01、db02) PostgreSQLの「公式リポジトリ」を追加
確認 PostgreSQLのインストール
確認 ・確認
# systemctl list-unit-files --type=service
postgresql-11.service disabled
DBバックアップ(db01、db02) ・既存DBを確認 $ sudo -s # su - postgres $ pwd "/var/lib/pgsql/.pgpass" がグループや他のユーザから読める状態なら「600」に変える。 既存DBのユーザ(ロール名)確認 $ pg_ctl -w start $ psql -c "\du" 既存DBのOwner(所有者)確認 $ psql -l ・必要な場合、バックアップする。 ・DBクラスタバックアップ(db01、db02) $ pg_ctl stop $ exit # tar cvf /var/lib/pgsql.tar /var/lib/pgsql # gzip /var/lib/pgsql.tar # ls -l /var/lib/pgsql.tar.gz # cp /var/lib/pgsql.tar.gz /home/xxxx DBバックアップ(db01、db02) # su - postgres $ pg_ctl -w start ダンプ $ pg_ctl stop $ exit 所定の場所に保存ディレクトリ削除 ・両系にPostgreSQLが正常にインストールされている。 クラスタ化前のDBのバックアップが終わったら「/var/lib/pgsql/11」を削除 # cd /var/lib/pgsql # rm -rf 11 「/var/lib/pgsql」にドットファイルは残る。追加インストール(db01、db02) ・両系に追加インストール(contrib、docs) # yum install postgresql11-contrib-11.5-1PGDG.rhel7.x86_64 # yum install postgresql11-docs-11.5-1PGDG.rhel7.x86_64・インストール済パッケージ # rpm -qa | grep postgres postgresql11-libs-11.5-1PGDG.rhel7.x86_64 postgresql11-11.5-1PGDG.rhel7.x86_64 postgresql11-server-11.5-1PGDG.rhel7.x86_64 postgresql11-contrib-11.5-1PGDG.rhel7.x86_64 postgresql11-docs-11.5-1PGDG.rhel7.x86_64Pacemakerインストール ・両系にPacemaker、Corosyncが正常にインストールされている(db01、db02) OSに応じた「Pacemakerリポジトリ」を選択、インストール
確認 自動起動の無効化(未だなら実施) # systemctl disable corosync # systemctl disable pacemaker ハードウェアwatchdogのモジュールを停止 HP社のハードウェアを使用環境は、hpwdtモジュールを停止 # dmesg | grep "hpwdt" (確認) OS起動時にiTCO_wdtモジュールがロードされている場合も停止 # dmesg | grep "iTCO_wdt" (確認)クラスタ(Pacemaker、Corosync)の基本設定(db01、db02) ・ corosync.conf サンプル ・設計した ネットワーク構成 に基づき設定 ・corosync.conf 例
# Please read the corosync.conf.5 manual page
totem {
version: 2
rrp_mode:active
interface {
ringnumber: 0
bindnetaddr: 192.168.x1.0
mcastaddr: 239.255.1.1
mcastport: 5405
}
interface {
ringnumber: 1
bindnetaddr: 192.168.x2.0
mcastaddr: 239.255.1.2
mcastport: 5405
}
}
logging {
syslog_facility: local1
debug: off
}
quorum {
provider: corosync_votequorum
expected_votes: 2
}
・corosync.conf のパーミッション ls -l /etc/corosync/corosync.conf 644クラスタ(Corosync)認証設定ファイルの生成(authkey) ・両系に クラスタ(Corosync)認証設定ファイル を生成する。 設定ファイル(Pacemaker)の追加設定(db01、db02) ・ /etc/sysconfig/pacemaker に追加 PCMK_logfile=none PCMK_logfacility=local1 PCMK_logpriority=info PCMK_fail_fast=yesCorosync用Unitファイルの修正(db01、db02) ・ corosyncプロセスが故障 したときにcorosyncのwatchdogを効かせたい場合(corosync.service) ・ softdogを使用する場合 (db01、db02) Pacemaker用Unitファイルの修正(db01、db02) ・ Pacemaker (pacemaker.service) ログの出力設定 (rsyslog.conf) ・ログの出力先を/etc/rsyslog.confに設定 確認 ログメッセージ制御機能設定(pm_logconv.conf) ・基本設定部([Setting]セクション)を編集 確認 ログローテーションの追加設定(syslog) ・Pacemaker用ログファイル(/var/log/ha-log)のローテーション設定 確認 pm_logconvプロセス、ifcheckdプロセスの起動 ・プロセス起動 確認 PostgreSQLの設定 ・PostgreSQL Global Development Group(db01、db02両方) ・PGDGのパッケージはインストール済 ・インストール済ファイルとディレクトリ ・ユーザ(Linux)確認 パスワード設定・環境変数の設定(db01、db02両方) 「/var/lib/pgsql/.bash_profile」の環境変数をpostgresユーザで設定 # su - postgres $ vi ~/.bash_profile (略) export PATH=/usr/pgsql-11/bin:$PATH export PGDATA=/dbfp/pgdata/data $ source /var/lib/pgsql/.bash_profile $ env・DBクラスタ用ディレクトリをrootユーザで作成(db01、db02両方)
# mkdir -p /dbfp/pgdata # mkdir -p /dbfp/pgwal/pg_wal # mkdir -p /dbfp/pgarch/arc1 # chown -R postgres:postgres /dbfp・DBクラスタの初期化(db01のみ) # su - postgres $ initdb -D /dbfp/pgdata/data -X /dbfp/pgwal/pg_wal --encoding=UTF-8 --no-locale --data-checksums・「postgresql.conf」の編集をpostgresユーザで行う(db01のみ) cd $PGDATA/ cp postgresql.conf postgresql.conf.org 参考 listen_addresses = '*' 推奨値固定、PG-REXでは、接続を待ち受けるアドレスを個別に設定しない。 wal_level = replica 推奨値固定、logicalを指定することも可能 synchronous_commit = on 推奨値固定 archive_mode = always always必須 archive_command = '/bin/cp %p /dbfp/pgarch/arc1/%f' PG-REXでは、cpを使用することを推奨する。 max_wal_senders = 10 PG-REXでは、レプリケーション機能を利用するため1以上を指定 wal_keep_segments = 32 推奨値固定 wal_sender_timeout = 20s Slaveの故障や両系間の通信断をMasterがすぐに検知できるようにする。 synchronous_standby_names = '' PG-REX RAが自動的に必要な設定を行う。 hot_standby = on on必須 max_standby_archive_delay = -1 キャンセルを無効 max_standby_streaming_delay = -1 キャンセルを無効 wal_receiver_status_interval = 5s 0より大きく、wal_sender_timeoutより小さい値 hot_standby_feedback = on on必須 restart_after_crash = off Pacemakerによる状態管理の整合性が崩れる。 max_replication_slots = 10 pg_basebackupによるバックアップ取得などに備え、余裕を持たせて指定レプリケーションユーザ作成 ・PostgreSQL起動(db01(Master)でのみ行う。) $ pg_ctl -w start・レプリケーションユーザを作成 $ psql -c "CREATE ROLE repuser REPLICATION LOGIN PASSWORD 'reppasswd'"・レプリケーション権限付与確認 $ psql -c "\du repuser"・PostgreSQL停止 $ pg_ctl stop一般ユーザ作成 ・PostgreSQL起動(db01(Master)でのみ行う。) $ pg_ctl -w start・一般ユーザを作成 $ psql -c "CREATE ROLE 一般ユーザ CREATEDB" ログイン属性の追加はALTERで行う。 $ psql -c "\du repuser"・PostgreSQL停止 $ pg_ctl stoppg_hba.confへの追加(db01(Master)でのみ行う。) ・TYPE DATABASE USER ADDRESS METHOD ・Master側Pacemakerを起動しリソースを設定 $ cd $PGDATA $ cp pg_hba.conf pg_hba.conf.org $ vi pg_hba.conf host replication repuser 192.168.xxx.xx1/32 md5 host replication repuser 192.168.xxx.xx2/32 md5.pgpass作成 ・Master側レプリケーション受付用の仮想IPアドレスと、相手ノードのD-LANのIPアドレスを指定 $ vi ~/.pgpass 192.168.xxx.xx2:5432:replication:repuser:reppasswd 192.168.xxx.xx0:5432:replication:repuser:reppasswd・Slave側 $ vi ~/.pgpass 192.168.xxx.xx1:5432:replication:repuser:reppasswd 192.168.xxx.xx0:5432:replication:repuser:reppasswdpg-rex_tools.confの設定 ・D-LAN_IPAddress に両系のD-LAN IPアドレスを指定 ・Archive_dir にアーカイブディレクトリの絶対パスを指定 # vi /etc/pg-rex_tools.conf D-LAN_IPAddress = 192.168.xxx.xx1 , 192.168.xxx.xx2 Archive_dir = /dbfp/pgarch/arc1 STONITH = disable VIP_SLAVE = disable PEER_NODE_SSH_PASS_MODE = nopass BACKUP_NODE_SSH_PASS_MODE = nopass DISKD_ResourceID = clnDiskd1, clnDiskd2 (略)ネットワーク接続登録(db01、db02両方) ・PG-REX運用補助ツールでは両系の状態確認にネットワークの通信を用いる。 rootユーザの「.ssh/known_hosts」に 相手先のD-LANのIPアドレスに対する接続登録をする。・Masterで実行 # ssh 192.168.xxx.xx2 Are you sure you want to continue connecting (yes/no)? Yes・Slaveで実行 # ssh 192.168.xxx.xx1 Are you sure you want to continue connecting (yes/no)? Yespg-rexのssh接続(db01、db02両方) ・手順ではmaster-slave間のsshのroot接続が必要 ・sshのパスワード実行なしで実行可能にする。確認 PEER_NODE_SSH_PASS_MODE = nopass BACKUP_NODE_SSH_PASS_MODE = nopass・rootユーザからの認証許可 # vi /etc/ssh/sshd_config PermitRootLogin yes のコメントアウトを外す。 PasswordAuthentication yes のコメントアウトを外す。・スタート時にパスワードを要求される。 ・パスワード入力を無くしたい場合 ssh-keygenでrsa鍵を作成する場合、passphrase入力でEnter(パスワードなし) db01で鍵作成( 確認 ) db02へ秘密鍵移動( 確認 ) db02で鍵作成( 確認 ) db01へ秘密鍵移動( 確認 )リソースの設定(pm_crmgen環境定義書) ・PG-REX用の「PG-REX11_pm_crmgen.xls」を編集 確認 ダウンロードに同梱のExcelシートを編集 クラスタ内のリソース構成、動作条件、パラメータ、配置制約などcrmファイル作成 ・ExcelのシートをCSVファイルで保存し、db01へ転送 ・db01上でpm_crmgenコマンドを使用して、csvファイルをcrmファイルに変換 # pm_crmgen -o xxxx.crm xxxx.csv # ls -l /root/pg-rexスタート ・スタートシェル動作には lsof が必要(最小構成ではインストールされない。) # yum info lsof・以前正常終了が出来ずロックが掛かっている場合(PGSQL.lock) # rm /var/lib/pgsql/tmp/PGSQL.lockOSの設定 ・ファイアウォールの設定
無効にしたほうが無難 |
All Rights Reserved. Copyright (C) ITCL |