HAクラスタで PostgreSQLを高可用化 (後編) ~ レプリケーション編 ~

Similar documents
目次 Pacemaker ってなに? Pacemaker の設定とは? Pacemaker のリソース設定 リソース定義 パラメータ設定 リソース種類選択 リソース制約 クラスタ設定 さいごに Linux-HA Japan の紹介 Linux-HA Japan Project 2

別紙 : 検証環境の構築手順 ( 章 ) 1. サーバ設定 1.1 IP アドレス設定 サーバは以下の 6 台を用いる pgpool-ii サーバ 2 台 DB サーバ 3 台 上位サーバ 1 台 OS は全サーバで CentOS 6.4 x86_64 とする pgpool-ii のサー

HAクラスタで PostgreSQLを高可用化 (後編) ~ レプリケーション編 ~

CLUSTERPRO for Linux PostgreSQL HowTo

HAクラスタで PostgreSQLを高可用化 (後編) ~ レプリケーション編 ~

<506F C392E30838C A B E E2E2E>

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド

<MW-400k > InterSec/MW400k アップデート適用手順書 2017 年 8 月 1 版

WebARENA SuiteX V2 EC-CUBE 2.13 インストールマニュアル ( 標準 MySQL+ 非 SSL ) 作成 :2014 年 2 月 Ver.1.1

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド

改訂履歴 版改訂日変更内容 /4/25 新規作成 ライセンス 本作品は CC-BY ライセンスによって許諾されています ライセンスの内容を知りたい方は でご確認ください 文書の内容 表記に関

はじめに 1. 概要本書では SuitePRO V3 にて提供している迷惑メールフィルタのバージョンアップ手順について案内しています なお この手順につきましては 迷惑メールフィルタ機能について オンラインマニュアルの内容通りに設定されていることを前提条件とします

クラスタ構築手順書

マニュアル訂正連絡票

Microsoft Word JA_revH.doc

PostgreSQL 9.0 のレプリケーションを使ってみよう SRA OSS, Inc. 日本支社佐藤友章 2010/12/11 Copyright 2010 SRA OSS, Inc. Japan All rights reserved. 1

Microsoft Word - XOOPS インストールマニュアルv12.doc

PostgreSQL Plus 管理者ガイド

無線LAN JRL-710/720シリーズ ファームウェアバージョンアップマニュアル 第2.1版

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

DBMSリポジトリへの移行マニュアル

改版履歴 Ver. 日付履歴 1.0 版 2014/5/30 目次 0 はじめに 本文中の記号について Windows Server Failover Cluster をインストールするための準備 Windows Server Failover

3 検証結果 3.1 ソフトウェアのインストール Red Hat Enterprise Linux 5.7 は最小構成でインストールし 最新バージョンにアップデートした Thirdware Linux-HA を構成するパッケージ (DRBD Heartbeat Pacemaker) は LINBIT

ICLT 操作マニュアル (2011 年 05 月版 ) Copyright 2011NE 東京株式会社 All Rights Reserved

スライド 1

AGT10(Android (TM) 2.3) ファームウェア更新方法

SAMBA Stunnel(Windows) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxx 部分は会社様によって異なります xxxxx 2 Windows 版ダウンロード ボ

アジェンダ はクラウド上でも十分使えます 1. の概要 とは の導入事例 で利用される構成 2. をクラウドで使う クラウドサービスの分類 Amazon Web Services による構成例 2

図 2 インストールウイザード画面 図 3 のような画面が表示されるので 使用許諾契約の全項目に同意します (A) にチェックを入れ て 次へ (N)> をクリックしてください 図 3 使用許諾契約の画面 図 4 のような画面が表示されるので 次へ (N) をクリックしてください インストール先を変

ServerView Resource Orchestrator V3.0 ネットワーク構成情報ファイルツール(Excel形式)の利用方法

自己紹介 名前 所属 飯田雄介 ( いいだゆうすけ ) 主な活動 Linux-HA Japan プロジェクト Pacemaker 本体の機能改善や 外部ツールの開発を行っています Linux-HA Japan から pm_logconv や pm_crmgen といったツールを提供しています 2

共有フォルダ接続手順 1 共有フォルダ接続ツールのダウンロード 展開 CSVEX のトップページから共有フォルダ接続ツールの zip ファイルをダウンロードします ダウンロードした zip ファイルを右クリックして すべて展開 を選択します (Windows 環境では zip ファイルを解凍しなくて

クラスタ連携ガイド MSCS/MSFC 編

Microsoft Word - tutorial3-dbreverse.docx

目次 1. はじめに 本文書の目的 前提条件 略語 事前準備 ホスト名の名前解決 Linux 版パッケージ システム要件 ソフトウェア要件 パッケージ構成

MxLogonサーバサイドツールキット用UI

Confidential

[Unifinity]運用マニュアル

メール利用マニュアル (Web ブラウザ編 ) 1

スライド 1

目次 1. 動作環境チェック 動作必要環境 Java のインストール Java のインストール Firebird のインストール Firebird のインストール Adobe Reader のインストール

HULFT8 for Windows/UNIX/Linux/zLinux の機能で発生する不具合について

Red Hat Enterprise Linuxのcron(8)デーモンにデフォルト定義されたtmpwatch命令の動作による、WebOTXのトラブル対処方法

VG シリーズ用ローカルファームアップ / 自動ファームウェア更新設定手順書 VG400aⅡ ローカルファームアップ / 自動ファームウェア更新設定手順書

レプリケーションについて レプリケーション元に設定したメイン機の共有フォルダーと レプリケーション先に指定した予備機の共有フォルダーを同期し 同じ状態に保ちます (LAN 環境により遅延が発生します ) 遠隔地へのレプリケーションにより メイン機側での災害 事故によるデータ損失のリスク低減ができます

V-CUBE One

PowerPoint プレゼンテーション

目次 1. 改版履歴 概要 WEB 版薬剤在庫管理システムのインストール 事前準備 インストール アプリケーションのセットアップ WEB 版薬剤在庫管理システムの初期設定

クラスタ環境でのデータベースのアップグレード手順

WinXp-Rmenu

1. はじめに (1) 本書の位置づけ 本書ではベジフルネット Ver4 の導入に関連した次の事項について記載する ベジフルネット Ver4 で改善された機能について 新機能の操作に関する概要説明 ベジフルネット Ver4 プログラムのインストールについて Ver4 のインストール手順についての説明

通信確保と衛星電話実習 ( 業務調整員 ) 参考資料 ワイドスター Ⅱ を活用したデータ通信に関する簡易説明書 第 1.0 版 平成 2 4 年 3 月株式会社 NTTドコモ関西支社法人営業部ソリューションビジネス部 Copyright 2012 NTT docomo Inc. All Rights

PGECons技術ドキュメントテンプレート Ver.3

Cuoreテンプレート

Microsoft Word - nvsi_090200jp_r1_nvbsvr_mscs.doc

Microsoft Word - GoNET-MIS_評価環境構築マニュアル_ver docx

CLUSTERPRO MC RootDiskMonitor 1.0 for Windows FAQ 集 2013(Mar) NEC Corporation 導入に関する質問 運用に関する質問 動作環境に関する質問

SAMBA Stunnel(Mac) 編 1. インストール 1 セキュア SAMBA の URL にアクセスし ログインを行います xxxxx 部分は会社様によって異なります xxxxx 2 Mac OS 版ダウンロー

演習に必要な

クラスタ環境でのデータベースのアップグレード

SecureAssist Enterprise Portal アップグレードガイド Version 対応版 パッケージのダウンロード アップグレード全体の流れ アップグレード作業の詳細手順

BIGLOBE クラウドホスティングネットワーク設定パッチインストール手順 (CentOS6) 1.1 版 (2017 年 12 月 11 日 ) ビッグローブ株式会社

Cisco Unity 8.x サーバの名前の変更または 別のドメインへの Cisco Unity 8.x サーバの 移動

プリンタードライバーのインストール 本機では Linux 用プリンタードライバーをコンピューターにインストールするためのインストーラー (RPM パッケージ ) を用意しています このインストーラーを使用して プリンタードライバーのインストール およびアップグレードができます プリンタードライバーイ

PowerPoint プレゼンテーション

1. 概要 この章では HDE Controller X LG Edition をお使いの方に向けて LGWAN 接続に特化した設定の説明をします HDE Controller X LG Edition 以外の製品をご利用のお客様はこの章で解説する機能をお使いになれませんのでご注意ください 452

新環境への移行手順書

Cisco Unified Communications Manager サーバ アドレスとユーザ名の自動的な入力

Zabbix で PostgreSQL を監視! pg_monz のご紹介 Zabbix Conference Japan 年 11 月 20 日 SRA OSS, Inc. 日本支社マーケティング部

目次 1. 教育ネットひむかファイル転送サービスについて ファイル転送サービスの利用方法 ファイル転送サービスを利用する ( ひむか内 ) ファイル転送サービスへのログイン ひむか内 PCでファイルを送受信する

改版履歴 版数 改版日付 改版内容 /03/14 新規作成 2013/03まで製品サイトで公開していた WebSAM DeploymentManager Ver6.1 SQL Server 2012 製品版のデータベース構築手順書 ( 第 1 版 ) を本 書に統合しました 2

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Sep) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

Microsoft Word - SE第14回.doc

AN424 Modbus/TCP クイックスタートガイド CIE-H14

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

RICOH Device Manager Pro バックアップ/バージョンアップ作業手順書

Acronis Backup 12.5 Advanced NetAppスナップショット連携

PC にソフトをインストールすることによって OpenVPN でセキュア SAMBA へ接続することができます 注意 OpenVPN 接続は仮想 IP を使用します ローカル環境にて IP 設定が被らない事をご確認下さい 万が一仮想 IP とローカル環境 IP が被るとローカル環境内接続が行えなくな

FTP 共有を有効にする あらかじめ作成済みの共有フォルダーを FTP 共有可能にする設定を説明します 共有フォルダーの作成方法は 画面で見るマニュアル をご覧ください ファイル数の多い共有フォルダーを変更すると 変更が完了するまでに時間がかかる場合があります また 変更が完了するまで共有フォルダー

2)PostgresSQL を他のパソコンからもアクセス出来るように設定する PostgreSQL をインストールしたパソコンの C:\Program Files\PostgreSQL\9.3\data\pg_hba.conf の下部で host all all /32 md5 と

マイクロソフト IT アカデミー E ラーニングセントラル簡単マニュアル ( 管理者用 ) 2014 年 11 月

FTPサーバーへのアクセス権限設定

「MT-3_2-ja

サービス内容 サービス内容 ドメインサービス Web サービスのサービス内容についてご案内します このたびは ドメイン /Web サービスをお申し込みいただきまして 誠にありがとうございます 本冊子は ドメイン /Web サービスの運用を管理される方向けの内容で構成されております お客様のご利用環境

UNIVERGE SG3000 から SG3600 Ver.6.2(2012 年モデル ) への 移行手順 All Rights Reserved, Copyright(C) NEC Corporation 2017 年 11 月 4 版

DHCPサーバのクラスタ化

2 1 事前準備する バージョンアップ操作を行う前に 次の準備を行います (1-1) ひかり電話対応 VoIP アダプタ (AD-200NE) にログインするための パスワード を用意します ひかり電話対応 VoIP アダプタ (AD-200NE) に初めてログインする場合 パスワード設定を行う必要

NFS On CLUSTERPRO for Linux

CLUSTERPRO for Linux MySQL HowTo

HULFT の通信をよりセキュアに HULFT と SSH Tectia を組み合わせたセキュアで強力なファイル転送 Compatibility Note 2008 年 9 月 株式会社セゾン情報システムズの企業内 企業間通信ミドルウェアである HULFT は ファイル転送のアプリケーションとして

VB実用Ⅲ⑩ フリーデータベースⅡ

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Apr) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H

ごあいさつ このたびは ESMPRO/AC Advance マルチサーバオプション Ver3.6(1 ライセンス ) をお買い上げ頂き 誠にありがとうございます 本書は お買い上げ頂きましたセットの内容確認 セットアップの内容 注意事項を中心に構成されています ESMPRO/AC Advance マ

CRA 2.2(1)の ICD の設定方法

Microsoft PowerPoint ï½žéł»å�’å–¥æœ�ㇷㇹㅃㅀ㇤ㅳㇹㅋㅼㅫ曉逃.ppt [äº™æ‘łã…¢ã…¼ã…›]

Base によるアプリケーション開発とサポート 鎌滝雅久 /OpenOffice.org 日本ユーザー会 OSC2007 Hokkaido 2007 年 6 月 30 日土曜日 10:55-11:40 北海道大学学術交流会館第 4 会議室

ログ取得についてのお願い お客様のご都合でログの内容を修正してご提供いただいた場合には 正確な調査ができかねる場合が ございます ログの内容は修正をせずにそのままお送りいただけますようお願い致します LifeKeeper ログ取得方法 ログ採取にはサーバへの多少の負荷が予想されますので 比較的に負荷

Transcription:

試して覚える Pacemaker 入門 PG-REX 構築 (Pacemaker+PostgreSQL によるシェアードナッシング構成構築 ) Linux-HA Japan

さっそくですが PG-REX とは 2

PG-REX とは構成モデルの名称である! PG-REX とは PostgreSQL と Pacemaker と PG-REX 運用補助ツールを組み合わせてシェアードナッシング構成の HA クラスタを実現した構成モデルです SQL 発行 クライアント データ同期 PG-REX 運用 PG-REX 運用補助ツール ノード #1 補助ツールノード #2 保守 運用者 3

PostgreSQL の HA クラスタ構成 PostgreSQL の HA クラスタを構築する場合 以下の 2 パターンが考えられます シェアードディスク構成 シェアードナッシング構成 故障 SQL 発行 SQL 発行更新更新 ノード #1 ノード #2 DB データ シェアードディスク 故障 Master 更新ノード #1 ノード #2 DB データ ローカルディスク SQL 発行 SQL 発行 データ同期 Slave Master DB データ 更新 ローカルディスク PG-REX ではこちらの構成を実現します 4

セミナー概要 本セミナーでは PG-REX の構築方法を紹介します PG-REX 構成では PostgreSQL や Pacemaker に特殊な設定が必要で シェアードディスク構成より構築が難しくなっているため 本セミナーで分かりやすく説明します シェアードディスク構成の構築方法は以下のセミナー資料で紹介しているため こちらをご参照ください 試して覚える Pacemaker 入門リソース設定編 http://linux-ha.osdn.jp/wp/archives/4532 5

PG-REX の概要 PG-REX では PostgreSQL の機能を使用してデータを同期し Pacemaker と PG-REX 運用補助ツールにより自動化しています SQL 発行 クライアント Master アプリケーション自動管理 PG-REX 運用補助ツール 一括制御 データ同期 Slave アプリケーション自動管理 PG-REX 運用補助ツール 一括制御 ノード #1 ノード #2 PG-REX ではこの 3 つが組み合わさりシェアードナッシング構成を実現しています PostgreSQL による データ同期 Pacemaker による アプリケーション自動管理 PG-REX 運用補助ツールによる 一括制御 保守 運用者 6

PostgreSQL による データ同期 データ同期は PostgreSQL の同期レプリケーション機能によって実現します SQL 発行 クライアント PostgreSQL は更新されたデータをディスクに永続化する際に WAL ファイルとして書き出します ノード #1 Master WAL 更新 データ同期 WAL Slave ノード #2 WAL 更新 同期レプリケーション機能はこの WAL ファイルを対向ノードへ同期書き込みする機能になります DB データ ローカルディスク DB データ ローカルディスク 7

Pacemaker による アプリケーション自動管理 故障発生時に PostgreSQL の Master/Slave 切替 ( フェイルオーバ ) などは Pacemaker によって自動管理します SQL 発行 クライアント SQL 発行 故障 Master 故障監視 Master Slave 故障監視 Master へ昇格 ノード #1 ノード #2 8

PG-REX 運用補助ツールによる 一括制御 PG-REX 運用補助ツールとはPG-REX 構成における保守操作を簡易化するスクリプトです Master SQL 発行 一括制御 PG-REX 運用補助ツール クライアント ノード #1 ノード #2 保守 運用者 Slave 一括制御 PG-REX 運用補助ツール PG-REX 運用補助ツールは PG-REX の保守時に必要となる操作を簡易に実行できるようにします PG-REX 起動 PG-REX 停止 Master/Slave 手動系切替 PostgreSQL アーカイブログの整理 Pacemaker と PostgreSQL のコマンドをラッピングし 操作する上で必要となる複数の手順を一括実行できるようにします 9

本セミナーの流れ 以降では以下の順で PG-REX 構築手順とその勘所を紹介します PostgreSQL の同期レプリケーション設定方法と PostgreSQL 単体で HA クラスタを組む場合に必要な手順について紹介 Pacemaker PG-REX 運用補助ツール設定方法と導入する事で自動化できることについて紹介 設定 構築方法のみをお求めの場合は以下のサイトで配布されているマニュアルをご参照ください PG-REX プロジェクト https://ja.osdn.net/projects/pg-rex/ 10

さっそく PostgreSQL の同期レプリケーション設定 の紹介 11

PostgreSQL の同期レプリケーション設定の流れ 1. DB 初期化 $ initdb -D /dbfp/pgdata/data -X /dbfp/pgxlog/pg_xlog --encoding=utf-8 --no-locale --data-checksums 2. レプリケーションユーザ作成 $ psql -c "CREATE ROLE repuser REPLICATION LOGIN PASSWORD 'reppasswd'" 3. レプリケーションユーザのアクセス許可設定 $ vi $PGDATA/pg_hba.conf 4. パスワードファイル設定 $ vi ~/.pgpass 5. 同期レプリケーション設定 $ vi $PGDATA/postgresql.conf PostgreSQL のインストール等は両ノードとも完了し 使用可能であることを前提としています 12

1. DB 初期化 各 DB ファイルを格納するディレクトリを作成します [ ノード 1 ノード 2] # mkdir -p /dbfp/pgdata $PGDATA ディレクトリ # mkdir -p /dbfp/pgxlog WAL 格納ディレクトリ ( 同期レプリケーションではこの WAL を転送します ) # mkdir -p /dbfp/pgarch/arc1 アーカイブログディレクトリ # chown -R postgres:postgres /dbfp 以下のコマンドで DB を初期化します [ ノード 1 のみ ] ( ノード 2 は設定完了後 DB 起動前にノード 1 からベースバックアップでコピーします ) $ initdb -D /dbfp/pgdata/data -X /dbfp/pgxlog/pg_xlog --encoding=utf-8 --no-locale --data-checksums 13

2. レプリケーションユーザ作成 レプリケーションユーザを作成します [ ノード 1 のみ ] クライアント SQL 発行データ同期 Master Slave ノード #1 ノード #2 ユーザ情報を DB に入力するため PostgreSQL を起動します $ pg_ctl -w start ここで使用するユーザ ユーザ情報を入力します ( 例 : ユーザ名 ="repuser" パスワード ="reppasswd") $ psql -c "CREATE ROLE repuser REPLICATION LOGIN PASSWORD 'reppasswd'" ユーザ作成後 DB を停止します $ pg_ctl stop 14

3. レプリケーションユーザのアクセス許可設定 レプリケーションユーザが DB にアクセスすることを許可する設定をします [ ノード 1 のみ ] $ vi $PGDATA/pg_hba.conf (: 省略 ) host replication repuser 192.168.2.1/32 md5 host replication repuser 192.168.2.2/32 md5 replication データベースに対してレプリケーションユーザの設定をします IP アドレスはノード 1 ノード 2 両系の値を設定します クライアント ノード #1 Master データ同期 このネットワークの IP アドレスを指定 Slave ノード #2 15

4. パスワードファイル設定 postgres ユーザの $HOME 配下にパスワードファイル (.pgpass) を作成し 設定します [ ノード 1 ノード 2] ( ノード 1 の設定 ) $ vi ~/.pgpass 192.168.2.3:5432:replication:repuser:reppasswd 192.168.2.2:5432:replication:repuser:reppasswd $ chmod 600 ~/.pgpass ( ノード 2 の設定 ) $ vi ~/.pgpass 192.168.2.3:5432:replication:repuser:reppasswd 192.168.2.1:5432:replication:repuser:reppasswd $ chmod 600 ~/.pgpass Master データ同期 (192.168.2.0/24).1.2 クライアント Slave 仮想 IP ノード #1.3 ノード #2 Pacemaker で管理する際の処理の都合により Master 側のノードに仮想 IP を割り当てます ( 仮想 IP の割当は Pacemaker により行います ) 16

5. 同期レプリケーション設定 同期レプリケーションの設定をします [ ノード 1 のみ ] $ vi $PGDATA/postgresql.conf (: 省略 ) listen_addresses = '*' hot_standby = on wal_level = hot_standby WALに書き込み情報量 hot_standby_feedback = on max_wal_senders = 4 WALを送信するためのプロセス数 wal_sender_timeout = 20s wal_receiver_status_interval = 5s wal_keep_segments = 32 WALを確保しておく量 max_standby_streaming_delay = -1 max_standby_archive_delay = -1 synchronous_commit = on WAL 書き込みが完了してからレスポンスを返す archive_mode = on archive_command = '/bin/cp %p /dbfp/pgarch/arc1/%f' restart_after_crash = off クラッシュ時の自動再起動の有効 / 無効 上記設定は全て必要ですが ポイントだけここで紹介します 尚 同期レプリケーションの送信側 受信側の指定は起動時に別途実施します 17

PostgreSQL 同期レプリケーション 設定完了! PostgreSQL 単体で HA クラスタを組むと思わぬ落とし穴が!! 18

PostgreSQL 同期レプリケーション起動停止方法 (1/2) PostgreSQL の同期レプリケーションを有効にした起動方法を紹介します HA クラスタでは同期レプリケーションの送信側 (Master) と受信側 (Slave) は適宜入れ替わることが想定されるため その都度設定を変更する必要があります ノード 1 の PostgreSQL を起動します [ ノード 1 のみ ] $ pg_ctl -w start ノード 1 からノード 2 へ $PGDATA をベースバックアップします [ ノード 2 のみ ] $ pg_basebackup -h 192.168.2.1 -U repuser -D $PGDATA -xlogdir=/dbfp/pgxlog/pg_xlog -X stream -P ノード 2 を Slave として起動するための設定をします [ ノード 2 のみ ] $ vi $PGDATA/recovery.conf standby_mode = 'on' primary_conninfo = 'user=repuser host=192.168.2.1 port=5432 application_name=node02' restore_command = '/bin/cp /dbfp/pgarch/arc1/%f %p' recovery_target_timeline = 'latest' 19

PostgreSQL 同期レプリケーション起動停止方法 (2/2) ノード 2 を Slave として起動します [ ノード 2 のみ ] $ pg_ctl -w start ノード 1 からノード 2 への同期レプリケーションを開始します [ ノード 1 のみ ] $ vi $PGDATA/postgresql.conf (: 省略 ) synchronous_standby_names = 'node2' $ pg_ctl reload PostgreSQL 停止する際は Slave 側から停止する必要があります Slave の PostgreSQL を停止します [ ノード 2 のみ ] $ pg_ctl stop $ rm $PGDATA/recovery.conf $ rm -rf $PGDATA/data /dbfp/pgxlog/pg_xlog /dbfp/pgarch/arc1/* Master の PostgreSQL を停止します [ ノード 1 のみ ] $ pg_ctl stop $ vi $PGDATA/postgresql.conf (: 省略 ) # synchronous_standby_names = 'node2' 設定削除 20

PostgreSQL 同期レプリケーション故障時の設定変更 同期レプリケーションしている状態で DB やノード等が故障した際は以下の様に設定を変える必要があります (Slave 故障時 ) データ同期 Master 故障 Slave ノード #1 ノード #2 Slave への送信設定削除 [ ノード 1 のみ ] $ vi $PGDATA/postgresql.conf (: 省略 ) # synchronous_standby_names = 'node2' 設定削除 $ pg_ctl reload (Master 故障時 ) 故障 Master データ同期 Slave Master へ昇格 [ ノード 2 のみ ] $ pg_ctl promote recovery.conf は自動的にファイル名変更 (recovery.done) され 無視されます ノード #1 ノード #2 21

PostgreSQL 同期レプリケーション故障時の設定変更 同期レプリケーションしている状態でDBやノード等が故障した際は以下の様に設定を変える必要があります 起動の毎にベースバックアップを行い (Slave 故障時 ) MasterとSlaveはそれぞれ別々の設定をし Master データ同期 Slave ノード #1 ノード #2 Master データ同期 故障 故障時はまた設定を変えるの?! (Master 人類にはまだ 故障時 ) 早過ぎたんだ!! 故障 Slave ノード #1 ノード #2 Slave への送信設定削除 [ ノード 1 のみ ] $ vi $PGDATA/postgresql.conf (: 省略 ) # synchronous_standby_names = 'node2' 設定削除 $ pg_ctl reload Master へ昇格 [ ノード 2 のみ ] $ pg_ctl promote recovery.conf は自動的にファイル名変更 (recovery.done) され 無視されます 22

PostgreSQL 同期レプリケーション故障時の設定変更 同期レプリケーションしている状態でDBやノード等が故障した際は以下の様に設定を変える必要があります 起動の毎にベースバックアップを行い (Slave 故障時 ) MasterとSlaveはそれぞれ別々の設定をし Master データ同期 Slave ノード #1 ノード #2 私が自動実行人類にはまだ (Master 故障時 ) 故障 Master 故障 するもの データ同期 Slave ノード #1 ノード #2 大丈夫 故障時はまた設定を変えるの?! 早過ぎたんだ!! Slave への送信設定削除 [ ノード 1 のみ ] $ vi $PGDATA/postgresql.conf (: 省略 ) # synchronous_standby_names = 'node2' 設定削除 $ pg_ctl reload Master へ昇格 [ ノード 2 のみ ] $ pg_ctl promote recovery.confは自動的にファイル名変更 (recovery.done) され 無視されます 23

この PostgreSQL の管理の難しさ Pacemaker と PG-REX 運用補助ツールにより 解決します! 24

Pacemaker と PG-REX 運用補助ツールを使用した操作 (1/4) Pacemaker と PG-REX 運用補助ツールを使用した場合 以下のコマンドを使用して保守に必要な操作を実行します Master 起動 # pg-rex_master_start Slave 起動 # pg-rex_slave_start PG-REX 停止 # pg-rex_stop Master/Slave 手動系切替 # pg-rex_switchover アーカイブログの整理 ( 不要となったアーカイブログを削除 ) # pg-rex_archivefile_delete 25

Pacemaker と PG-REX 運用補助ツールを使用した操作 (2/4) Pacemaker と PG-REX 運用補助ツールを使用した場合 起動手順は以下の様になります ノード1(Master) 1. PostgreSQL 起動 5. synchronous_standby_names 設定ノード1(Master) 1. Master 起動 (# pg-rex_master_start) 起動時 ノード 2(Slave) 2. ベースバックアップ 3. recovery.conf 設定 4. PostgreSQL 起動 PacemakerとPG-REXを導入すると ノード2(Slave) 2. Slave 起動 (# pg-rex_slave_start) 26

Pacemaker と PG-REX 運用補助ツールを使用した操作 (3/4) Pacemaker と PG-REX 運用補助ツールを使用した場合 停止手順は以下の様になります ノード1(Master) 3. PostgreSQL 停止 4. synchronous_standby_names 削除ノード1(Master) 2. PG-REX 停止 (# pg-rex_stop) 停止時 ノード 2(Slave) 1. PostgreSQL 停止 2. recovery.conf 削除 PacemakerとPG-REXを導入すると ノード2(Slave) 1. PG-REX 停止 (# pg-rex_stop) 27

Pacemaker と PG-REX 運用補助ツールを使用した操作 (4/4) 故障時に必要だった以下の手順は全て自動で行うため 操作不要になります (Slave 故障時 ) データ同期 Master 故障 Slave ノード #1 ノード #2 Slave への送信設定削除 [ ノード 1 のみ ] $ vi $PGDATA/postgresql.conf (: 省略 ) # synchronous_standby_names = 'node2' 設定削除 $ pg_ctl reload (Master 故障時 ) 故障 Master データ同期 Slave Master へ昇格 [ ノード 2 のみ ] $ pg_ctl promote ノード #1 ノード #2 28

これらを実現するには アプリケーションの管理方法を 設定する必要があります 29

まずは Pacemaker から Pacemaker のインストールや基本設定は以下をご参照ください 試して覚える Pacemaker 入門リソース設定編 http://linux-ha.osdn.jp/wp/archives/4532 30

Pacemaker のリソース管理設定の流れ Pacemaker のリソース ( アプリケーション ) 管理は CRM ファイルと呼ばれるファイルを作成して設定します CRM ファイルは以下の手順で作成できます ファイル転送 Linux 端末 Pacemaker インストール時に配置される以下のファイルを Windows 端末に転送 # ls /usr/share/pacemaker/pm_crmgen/pm_crmgen_env.xls pm_crmgen_env.xls にリソース構成や管理方法を入力 ファイル転送 Windows 端末 Linux 端末 Excel のシートを CSV ファイルで保存し Linux 端末に転送 Pacemaker のツールコマンドを使用して CRM ファイルに変換 # pm_crmgen -o CRM ファイル名 CSV ファイル名 31

Pacemaker のリソース管理設定 pm_crmgen_env.xls は以下の様な表が記述されており 青の枠線の中を埋めて設定します # pm_crmgen 環境定義書ファイル形式バージョン : 2.2 # 表 1-1 クラスタ設定 クラスタ ノード属性 NODE uname ntype ptype name value # ノード名 ノード種別 パラメータ種別 項目 設定内容 備考 # 表 2-1 クラスタ設定 クラスタ プロパティ PROPERTY name value # 項目 設定内容 概要 備考 no-quorum-policy ノード数によるリソース割当て stonith-enabled 障害ノード対処 (STONITH 制御 ) startup-fencing 起動時に状態不明ノードへSTONITH 詳細については以下の OSC セミナー資料で説明しているのでご参照ください 試して覚える Pacemaker 入門リソース設定編 http://linux-ha.osdn.jp/wp/archives/4532 32

PG-REX リソース管理設定 PG-REX の場合は以下のサイトから設定済みの pm_crmgen_env.xls が入手できるため こちらを修正するのが簡単です PG-REX プロジェクト : https://ja.osdn.net/projects/pg-rex/ 以下の橙色で塗りつぶされているセルを環境に合わせて修正してください # 表 7-1-1 クラスタ設定 Primitive リソース (id=vip-master) # PRIMITIVE P A type # パラメータ種別項目設定内容概要 O id class provider type リソース ID vip-master params type # オペレーションタイムアウト値監視間隔 on_fail( 障害時の動作 ) 起動前待機時間 start monitor stop name class provider type ocf heartbeat IPaddr2 value ip 192.168.0.10 PostgreSQL(Master) 接続用仮想 IP アドレス nic bond0 同デバイス名 cidr_netmask 24 同ネットマスク timeout interval on-fail start-delay 60s 0s restart 60s 10s restart 60s 0s block 概要 PostgreSQL(Master) 接続用仮想 IP 割当 備考 pm_crmgen_env.xls は STONITH 構成と NoSTONITH 構成のものが用意されてあります 運用環境では STONITH 構成を推奨しますが 動作確認用であれば NoSTONITH 構成が環境の制約もなく構築しやすいです 33

PostgreSQL の Slave へのデータベース接続 PostgreSQL は Slave でも DB を参照することが可能です PG-REX 用設定済み pm_crmgen_env.xls では DB 更新 / 参照用の仮想 IP とは別に DB 参照専用の仮想 IP を割り当てて 上記機能を活用できるようにしています DB 更新 / 参照 DB 参照 仮想 IP ( 更新 / 参照 ) データ同期 仮想 IP ( 参照 ) Master Slave ノード #1 更新 / 参照 ノード #2 参照 DB データ ローカルディスク DB データ ローカルディスク 34

PG-REX における仮想 IP の管理 PG-REX にて Pacemaker が割り当てる仮想 IP は合計で以下の 3 つであり それぞれ vip-master vip-slave vip-rep と名称しています DB 更新 / 参照 vip-master: DB を更新 / 参照する際にアクセスするための仮想 IP サービス LAN 上に割り当てる vip-slave: DB を参照する際にアクセスするための仮想 IP サービス LAN 上に割り当てる vip-rep: データレプリケーションする際に Master にアクセスするための仮想 IP データ転送用 LAN 上に割り当てる DB 参照 DB 更新 / 参照 DB 参照 vip-master 故障 Master データ同期 vip-rep vip-slave Slave 故障 Master vip-master vip-slave vip-rep Master ノード #1 ノード #2 ノード #1 ノード #2 35

( 参考 ) PG-REX で Pacemaker が管理するリソース構成 シェアードディスク構成 PostgreSQL 仮想 IP(S-LAN) Filesystem シェアードディスク排他制御 リソースグループとして一括制御 制約 PG-REX ( シェアードナッシング構成 ) 仮想 IP(S-LAN) 仮想 IP(D-LAN) PostgreSQL (Master) 制約 リソースグループとして一括制御 Master/Slave リソースとして制御 PostgreSQL (Slave) ハードウェア監視など ハードウェア監視など ハードウェア監視など 制約 ハードウェア監視など 起動 / 停止 / 監視 起動 / 停止 / 監視 起動 / 停止 / 監視 起動 / 停止 / 監視 Pacemaker Pacemaker Pacemaker Pacemaker ノード #1 ノード #2 ノード #1 ノード #2 試して覚える Pacemaker 入門リソース設定編 ではこの構成を構築しています 上記では以下の様な略称で記述しています サービスLAN S-LAN データ転送用 LAN D-LAN 36

続いて PG-REX 運用補助ツール 37

PG-REX 運用補助ツールのインストール 設定 (1/2) PG-REX 運用補助ツールも先ほどの pm_crmgen_env.xls と同様に以下から入手できます PG-REX プロジェクト : https://ja.osdn.net/projects/pg-rex/ 必要となるパッケージ ( バージョンは入手時の最新のものを選択してください ) Net_OpenSSH-*.rpm IO_Tty-*.rpm pg-rex_operation_tools_script-*.rpm ダウンロードしたパッケージを以下の順にインストールします [ ノード 1 ノード 2] # rpm -ivh Net_OpenSSH-*.rpm # rpm -ivh IO_Tty-*.rpm # rpm -ivh pg-rex_operation_tools_script-*.rpm 38

PG-REX 運用補助ツールのインストール 設定 (2/2) インストールすると以下のファイルが配置されます /usr/local/bin pg-rex_master_start pg-rex_slave_start pg-rex_stop pg-rex_switchover pg-rex_archivefile_delete /etc pg-rex_tools.conf PG-REX 運用補助ツールの設定ファイルを修正します [ ノード 1 ノード 2] # vi /etc/pg-rex_tools.conf D-LAN_IPAddress = 192.168.2.1, 192.168.2.2 Archive_dir = /dbfp/pgarch/arc1 STONITH = disable VIP_SLAVE = enable (: 省略 ) MasterノードとしてPacemakerを起動するコマンド SlaveノードとしてPacemakerを起動するコマンド 自ノードのPacemakerを停止するコマンド MasterとSlaveを系切替するコマンド 不要なアーカイブログを選定して削除するコマンド PG-REX 運用補助ツールの設定ファイル ( その他 /usr/local/share/perl5/pgrex 等に common ファイル等が配置されます ) 両系のデータ転送用 LANのIP アーカイブログディレクトリ STONITHの使用有無 仮想 IP vip-slaveの使用有無 39

PG-REX 完成!! 40

PG-REX の動作確認方法 (1/3) PG-REX は Master を先に起動し 起動完了後に Slave を起動します Master を起動します [ ノード 1 のみ ] # rm /var/lib/pgsql/tmp/pgsql.lock 前起動時に正常停止できなかった場合に残存される起動禁止フラグです # pg-rex_master_start PG-REX9.6_pm_crmgen_env.crm pm_crmgen_env.xls から生成した CRM ファイル名を指定します 上記 Master 起動完了を確認後 Slave を起動します [ ノード 2 のみ ] # rm /var/lib/pgsql/tmp/pgsql.lock # pg-rex_slave_start 41

PG-REX の動作確認方法 (2/3) 動作確認用の DB とユーザ テーブルを作成します [ ノード 1 のみ ] $ createdb testdb $ createuser user1 $ psql -d testdb -U user1 -c "CREATE TABLE bar (id int, name varchar)" $ psql -d testdb -U user1 -c "INSERT INTO bar VALUES (1, 'apple')" $ psql -d testdb -U user1 -c "SELECT * FROM bar" id name ----+------- 1 apple ノード 2 で入力したテーブルが参照できることを確認します [ ノード 2 のみ ] $ psql -d testdb -U user1 -c "SELECT * FROM bar" id name ----+------- 1 apple 42

PG-REX の動作確認方法 (3/3) 停止時は以下のコマンドを使用してSlaveから順に停止します Slaveを停止します [ ノード2] # pg-rex_stop Master を停止します [ ノード 1] # pg-rex_stop 43

Linux-HA Japan のブースにて PG-REX のデモ環境を用意しています 是非お越しください!! 44

さいごに ( 宣伝 1) Linux-HA Japan URL http://linux-ha.osdn.jp/ https://ja.osdn.net/projects/linux-ha/ Pacemaker 関連の最新情報を日本語で発信 Pacemaker のダウンロードもこちらからどうぞ ( インストールが楽なリポジトリパッケージを公開しています ) 45

さいごに ( 宣伝 2) 日本における HA クラスタについての活発な意見交換の場として Linux-HA Japan 日本語メーリングリスト も開設しています Linux-HA-Japan ML では Pacemaker Heartbeat3 Corosync DRBD など HA クラスタに関連する話題は歓迎! ML 登録用 URL http://linux-ha.osdn.jp/ の メーリングリスト をクリック ML アドレス linux-ha-japan@lists.osdn.me スパム防止のために 登録者以外の投稿は許可制です 46

さいごに ( 宣伝 3) PG-REX URL https://ja.osdn.net/projects/pg-rex/ PG-REX の構築手順書や pm_crmgen_env.xls PG-REX 運用補助ツールを提供しています 本セミナーでは説明できなかった詳細内容も上記手順書に詳しく書いてあるので是非読んでください! 47

ご清聴 ありがとうございました 48