はじめに どのような人に聞いてほしいか PostgreSQLを使っている人 PostgreSQLの可用性を上げたいと思っている人 可用性構成は難しそうだと思っている人 とりあえずPostgreSQLの高可用性構成を構築する手順 について説明 とりあえず 細かいことは置いておく スプリットブレイン S

Similar documents
はじめに どのような人に聞いてほしいか PostgreSQLを使っている人 PostgreSQLの可用性を上げたいと思っている人 可用性構成は難しそうだと思っている人 PostgreSQLの高可用性構成の構築手順を説明 インストールについては概要だけにしておく とりあえず 細かいことは置いておく 4

SRA OSS, Inc. ホワイトペーパー IBM Power Systems (Linux) における PaceMaker/DRBD/PostgreSQL/pgpool-II 動作検証 2011 年 10 月 1 日 SRA OSS,Inc. 日本支社 Copyright 2011SRA OSS

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

100123SLES11HA.pptx

目次 1 はじめに 利用ソフトウェア 用語について 本書について SoftLayer 構成 構成図 OS/ ソフトウェア情報 SoftLayer 環境 SoftLayer 設定

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

目次 1 はじめに 対象読者 想定するサーバ環境 注意事項 OS 環境の準備 CentOS 6.2 のインストールと初期設定 Thirdware Linux-HA クラスタスタックのインストール...2 RH

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

まずは、Pacemakerを使ってみよう!

Pacemakerでかんたんクラスタリング体験してみよう

挑戦!Pacemakerで自由自在にHAクラスタリング

実演!Pacemakerで楽々クラスタリング

Pacemaker + KVMで仮想化クラスタリング ~仮想化連携機能のご紹介~ OSC2011Tokyo/Fall

防災マップ作成システムの開発業務基本設計書

Microsoft Word - HAクラスタ構築手順書.doc

最も一般的な手法: ファイアウォールによってノード間の MPI 通信がブロックされた場合の対応方法

PostgreSQLによる データベースサーバ構築技法

実演!Pacemakerで楽々クラスタリング OSC2011Tokyo/Spring

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

1 1 CentOS Java JDK(JavaSE Development Kit)......

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

ql tar.gz の展 9 開 # su - $ cd /usr/local/src/ $ tar xvzf ql tar.gz PostgreSQL(9.2.4) のインストール $ ls -l /usr/local/src/ drwxrwxr-x 月

PostgreSQLのセキュリティを極める

Microsoft Word - qtsi_120246jp_rhev.doc

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

A : kerl kerl Erlang/OTP Erlang/OTP 2 2 Elixir/Phoenix URL 2 PDF A.2 Bash macos.bash_profile exp

2

スライド 1

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

Nagios XI - SNMPでのLinux監視

POSTGRESQL 9.2 /POSTGIS (WINDOWS 版 ) 導入 設定手順書 (VER. 1) June 20, 2014

gworksctl コマンドマニュアル 2019/6/17 株式会社 GDEP アドバンス 本書は GDEP Advance gworksctl コマンドマニュアルです G-Works G-Works Deep Learning Distribution for Linux( 以下 G-Works)

ロードバランサー配下のシボレス IdP 環境設定に関する検証実験 2009 年 12 月 22 日国立情報学研究所学術ネットワーク研究開発センター山地一禎, 中村素典

Alibaba Cloud [ ナレッジドキュメント ] AWS EC2 から Alibaba Cloud ECS へのマイグレーション手順 (Linux_PostgreSQL 版 ) AWS EC2 から Alibaba Cloud ECS への マイグレーション手順 (Linux_Postgre

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

OSSTechドキュメント

Microsoft Word - nvsi_090196_r1_vaultdr_offline_rhel_dualpath.doc

Microsoft iSCSI Software Targetを使用したクラスタへの共有ディスク・リソースの提供

1_postgis(2.2.1) のインストール No 概要 対象 ユーザ コマンド 確認 ( 確認コマンド等 ) 備考 # yum install gcc # gcc -v - 組み込み spec を使用しています COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/

Xen入門 ppt

Xen入門 ppt

ジオコーディングサーバインストールマニュアル

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

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

HAクラスタをフェイルオーバ失敗から救おう!

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

平成22年度「技報」原稿の執筆について

スライド 0

CLUSTERPRO for Linux PostgreSQL HowTo

How to Install and Configure Panorama Panorama のインストールと設定 Panorama は Palo Alto Networks のサポートサイトからダウンロード可能な VMware イメージです 本書は Panorama のインストールと Panora

Installation Guide for Linux

TOMOYO Linuxを体験しよう

HP Device Manager4.7インストール・アップデート手順書

はじめに 本書は Express5800/ft サーバに Red Hat Enterprise Linux 6 Server 及び ft Server Control Software がインストールされており OS がインストールされている内蔵ディス クに空き容量がある場合に 追加でボリュームを作

改版履歴 本書の改版履歴は以下のとおりです 日付 改版理由 変更箇所 版数 2014/09/04 初版発行 版 2015/03/30 第 1.1 版に改訂 対象 OS 追加 1.1 版 2015/07/10 第 1.2 版に改訂 対象 OS 追加 1.2 版 2015/09/04 第 1

HAクラスタでPostgreSQLを高可用化(前編)

Helix Swarm2018.1アップグレード手順

Microsoft Word - nvsi_060132jp_datadomain_restoreDRAFT4.doc

ドライバインストールガイド

DIRECTIONS

VNX ファイル ストレージの管理

Symantec AntiVirus の設定

付録

D-STAR Xchange (dxchange) インストール方法 JARL D-STAR 委員会平成 28 年 5 月 19 日 V00.19 本システム ( 以下 dxchange と呼ぶ ) は D-PRS 信号を受信する局 (I-GATE 局 ) をレピータのサービスエリア内に設置すること

PostgreSQL Plus 管理者ガイド

Microsoft Word - Win-Outlook.docx

Lets移行プラットホーム

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

Microsoft Word - LM A_SNMP_Cacti_ConfigureV5.doc

ログインおよび設定

VPN 接続の設定

ftServerでのログの取得方法の概要

R80.10_FireWall_Config_Guide_Rev1

Microsoft Word - VPN...[.U.K.C.hLinux doc

第一章 LPC2478 ボードの概要...3 第二章 uclinux の初体験 SD カードのテスト USB メモリのテスト USB Devices のテスト network のテスト...6 第三章 uclinux のコンパイル...

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

Transcription:

DRBDはLINBIT Information Technologies GmbHの登録商標です 入門 PostgreSQL Pacemaker DRBDで 高可用性構成を構築してみよう オープンソースカンファレンス2014 Tokyo/Spring 2014年2月28日 SRA OSS, Inc. 日本支社 佐藤 友章 sato@sraoss.co.jp 1

はじめに どのような人に聞いてほしいか PostgreSQLを使っている人 PostgreSQLの可用性を上げたいと思っている人 可用性構成は難しそうだと思っている人 とりあえずPostgreSQLの高可用性構成を構築する手順 について説明 とりあえず 細かいことは置いておく スプリットブレイン STONITHなど Pacemaker HeartbeatについてはLinux-HA Japan Project DRBDについてはサードウェアにも話を聞こう PostgreSQLについてはSRA OSSも忘れないで 2

高可用性とは システムをいかに止めずに動かし続けられるかの度合 い 可用性が高いこと HA High Availabilityとも言う 可用性は稼働率や停止時間で計られる カーネルのアッ プデートでサー バを再起動 0 00 サーバの障害に 気づいて復旧を 開始 12 00 サーバの障害が 発生 24 00 サーバの復旧が 完了 稼働率は 18 18 6 75 停止時間は 6時間 日 91.25日 年 日単位の停止時間を年単位に換算するのには無理があるが 3

PostgreSQLのHA構成 PostgreSQL高可用性構成の選択肢とトレンド http://www.sraoss.co.jp/event_seminar/2013/20130212_pgha_seminar_sraoss.pdf 4

Pacemakerとは 5

DRBDとは 6

システム構成 PostgreSQL高可用性構成の選択肢とトレンド http://www.sraoss.co.jp/event_seminar/2013/20130212_pgha_seminar_sraoss.pdf 7

インストール 8

PostgreSQLのインストール SBY PGDGのリポジトリでPostgreSQLをインストール PGDGとは PostgreSQL Global Development Group PostgreSQLの開発コミュニティ http://www.postgresql.org/ 1. リポジトリのパッケージをインストール ## yum yum -y -y install install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdghttp://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdgcentos93-9.3-1.noarch.rpm centos93-9.3-1.noarch.rpm 省略 省略 Complete! Complete! CentOS 6 x64以外については以下のurlを参照 http://yum.postgresql.org/repopackages.php 2. PostgreSQLのパッケージをインストール ## yum yum -y -y groupinstall groupinstall "PostgreSQL "PostgreSQL Database Database Server Server 9.3 9.3 PGDG" PGDG" 省略 省略 Complete! Complete! 9

PacemakerとHeartbeatのインストール 1 Linux-HA Japanリポジトリのダウンロード SBY Linux-HA JapanのローカルリポジトリでPacemakerをイ ンストール Linux-HA Japanとは LinuxでHAクラスタを実現するソフトに関する日本のコミュニティ http://linux-ha.sourceforge.jp/ 1. ローカルリポジトリをダウンロード 最新リリース情報 からOS に応じた Pacemakerリポジ トリパッケージ を選ぶ メニューの ダウンロード インストール から LINUXHA JAPAN提供パッケージ 一覧 を選ぶ RHEL 6系 x64 pacemaker-1.0.13-1.2.el6.x86_64.repo.tar.gz RHEL 6系 x86 pacemaker-1.0.13-1.2.el6.i686.repo.tar.gz RHEL 5系 x64 pacemaker-1.0.13-1.2.el5.x86_64.repo.tar.gz RHEL 5系 x86 pacemaker-1.0.13-1.2.el5.i386.repo.tar.gz OSのアーキテクチャに応じ たローカルリポジトリのファ イルを選んでダウンロード 10

PacemakerとHeartbeatのインストール 2 Linux-HA Japanリポジトリの設定 SBY 2. ローカルリポジトリを/tmpディレクトリに展開 ## cd cd /tmp /tmp ## tar tar -xzf -xzf ~/Downloads/pacemaker-1.0.13-1.2.el6.x86_64.repo.tar.gz ~/Downloads/pacemaker-1.0.13-1.2.el6.x86_64.repo.tar.gz ほかのディレクトリに展開した場合には 展開先のディレクトリ に合わせてリポジトリの設定を変更 ## vim vim./pacemaker-1.0.13-1.2.el6.x86_64.repo/pacemaker.repo./pacemaker-1.0.13-1.2.el6.x86_64.repo/pacemaker.repo [pacemaker] [pacemaker] name=pacemaker name=pacemaker baseurl=file:///tmp/pacemaker-1.0.13-1.2.el6.x86_64.repo/ baseurl=file:///tmp/pacemaker-1.0.13-1.2.el6.x86_64.repo/ 3. OS標準のリポジトリからPacemaker関連のパッケージ がインストールされないようにリポジトリの設定を変更 ## vim vim /etc/yum.repos.d/centos-base.repo /etc/yum.repos.d/centos-base.repo [base] [base] 省略 省略 exclude=cluster-glue* exclude=cluster-glue* corosync* corosync* pacemaker* pacemaker* resource-agents* resource-agents* [updates] [updates] 省略 省略 exclude=cluster-glue* exclude=cluster-glue* corosync* corosync* pacemaker* pacemaker* resource-agents* resource-agents*

PacemakerとHeartbeatのインストール 3 PacemakerとHeartbeatパッケージのインストール SBY 4. PacemakerとHeartbeatのパッケージをインストール ## cd cd /tmp/pacemaker-1.0.13-1.2.el6.x86_64.repo /tmp/pacemaker-1.0.13-1.2.el6.x86_64.repo ## yum yum -c -c pacemaker.repo pacemaker.repo -y -y install install pacemaker pacemaker heartbeat heartbeat 省略 省略 Complete! Complete! リポジトリに含まれるそのほかのパッケージ パッケージ名 説明 Excelなどの表計算ソフトで編集したCSVファイルからPacemakerの設 定ファイルを生成するツール ディスクにアクセスして読み取りを行うことでディスクの監視を行うリ ソースエージェント pm_crmgen pm_diskd pm_extras NetVault Backupクライアント用のリソースエージェント NVclient 仮 想IPアドレスの排他制御によるスプリットブレイン防止用のリソースエー ジェント VIPcheck ハートビート通信用のネットワークインタフェース の状態を表示する機能 ifcheckd STONITH実行時に停止するノード を判断するSTONITHモジュール stonith-helper pm_kvm_tools KVM上のPacemakerと仮想マシン上のPacemakerを連携する機能 pm_logconv-hb Pacemaker Heartbeatのログメッセージを読みやすく変換する機能 vm-ctl 仮想マシンリソースを制御するツール 12

DRBDのインストール 1 ELRepoリポジトリの設定 SBY ELRepoのリポジトリでDRBDをインストール ELRepoとは RHEL系のOS向けに標準でないパッケージを提供するプロジェクト http://elrepo.org/ 1. 公開キーをインポート ## rpm rpm --import --import http://www.elrepo.org/rpm-gpg-key-elrepo.org http://www.elrepo.org/rpm-gpg-key-elrepo.org パッケージの署名をチェックするのに使う 2. リポジトリのパッケージをインストール ## rpm rpm -ivh -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm を取得中 を取得中 準備中... ########################################### 準備中... ########################################### [100%] [100%] 1:elrepo-release ########################################### 1:elrepo-release ########################################### [100%] [100%] RHEL 6系 elrepo-release-6-6.el6.elrepo.noarch.rpm RHEL 5系 elrepo-release-5-5.el5.elrepo.noarch.rpm 13

DRBDのインストール 2 DRBDパッケージのインストール SBY 3. DRBDのパッケージをインストール ## yum yum -y -y kmod-drbd84 kmod-drbd84 drbd84-utils drbd84-utils 省略 省略 Complete! Complete! 4. DRBDはPacemakerによって起動されるので OSの起 動時に自動的に起動されないように設定を変更 ## chkconfig chkconfig $$ chkconfig chkconfig drbd drbd drbd drbd off off --list --list drbd drbd 0:off 0:off 1:off 1:off 2:off 2:off 3:off 3:off 4:off 4:off 5:off 5:off 6:off 6:off 14

OSの設定 15

OSの設定 1 ファイアウォールの設定 SBY PostgreSQL Heartbeat DRBD で使うポートを開く PostgreSQL 5432 TCP Heartbeat 694 UDP 1. ファイアウォールの設定を行う DRBD 7788 TCP サービス名 ポート プロトコル ## vim vim /etc/sysconfig/iptables /etc/sysconfig/iptables -A -A INPUT INPUT -p -p icmp icmp -j -j ACCEPT ACCEPT -A -A INPUT INPUT -i -i lo lo -j -j ACCEPT ACCEPT -A INPUT -m state --state -A INPUT -m state --state NEW NEW -m -m tcp tcp -p -p tcp tcp --dport --dport 22 22 -j -j ACCEPT ACCEPT -A -A INPUT INPUT -m -m state state --state --state NEW NEW -m -m tcp tcp -p -p tcp tcp --dport --dport 5432 5432 -j -j ACCEPT ACCEPT -A -A INPUT INPUT -m -m state state --state --state NEW NEW -m -m udp udp -p -p udp udp --dport --dport 694 694 -j -j ACCEPT ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 7788 -j -A INPUT -m state --state NEW -m tcp -p tcp --dport 7788 -j ACCEPT ACCEPT -A -A INPUT INPUT -j -j REJECT REJECT --reject-with --reject-with icmp-host-prohibited icmp-host-prohibited -A FORWARD -j REJECT --reject-with -A FORWARD -j REJECT --reject-with icmp-host-prohibited icmp-host-prohibited COMMIT COMMIT 2. ファイアウォールを再起動 ## service service iptables: iptables: iptables: iptables: iptables: iptables: iptables: iptables: iptables iptables restart restart ファイアウォールルールを消去中: ファイアウォールルールを消去中: チェインをポリシー チェインをポリシー ACCEPT ACCEPT へ設定中filter へ設定中filter モジュールを取り外し中: モジュールを取り外し中: ファイアウォールルールを適用中: ファイアウォールルールを適用中: 直接ファイルを編集せずに system-config-firewallを 使ってもOK [[ [[ [[ [[ OK OK OK OK OK OK OK OK ]] ]] ]] ]] 16

OSの設定 2 SELinuxの設定 SBY SELinuxの設定は難しいので無効にする 無効にしないと動かないわけではないが ちゃんと設定してあ げないと動かないこともある 1. SELinuxによるアクセス制御を一時的に無効にする ## setenforce setenforce 00 2. OSの起動時に完全に無効になるようにSELinuxの設定 を変更 ## vim vim /etc/selinux/config /etc/selinux/config ## SELINUX= SELINUX= can can take take one one of of these these three three values: values: ## enforcing enforcing -- SELinux SELinux security security policy policy is is enforced. enforced. ## permissive SELinux prints warnings instead permissive - SELinux prints warnings instead of of enforcing. enforcing. ## disabled disabled -- No No SELinux SELinux policy policy is is loaded. loaded. SELINUX=disabled SELINUX=disabled アクセス制御自体は無効になっているので OSを再起動しなく てもOK 17

OSの設定 3 Syslogの設定 SBY PostgreSQL Pacemaker DRBDのログが専用のファ イルに出力されるようにSyslog rsyslog の設定を行う Syslogの設定を行う ## vim vim /etc/rsyslog.conf /etc/rsyslog.conf #### #### RULES RULES #### #### local0.* local0.* && ~~ :msg, :msg, contains, contains, "drbd" "drbd" && ~~ 省略 省略 *.info;mail.none;authpriv.none;cron.none *.info;mail.none;authpriv.none;cron.none /var/log/ha-log /var/log/ha-log /var/log/ha-log /var/log/ha-log /var/log/messages /var/log/messages ファシリティがlocal0のログと drbd を含むログを取得 Syslogを再起動 ## service service rsyslog rsyslog restart restart システムロガーを停止中: システムロガーを停止中: システムロガーを起動中: システムロガーを起動中: [[ OK OK ]] [[ OK OK ]] 18

Heartbeatの設定 19

Heartbeatの設定 1 Heartbeatの設定 テンプレートをコピーして設定ファイルを編集 ## ## cp cp /usr/share/doc/heartbeat-3.0.5/ha.cf /usr/share/doc/heartbeat-3.0.5/ha.cf /etc/ha.d /etc/ha.d vim vim /etc/ha.d/ha.cf /etc/ha.d/ha.cf pacemaker pacemaker respawn respawn logfacility logfacility local0 local0 #udpport #udpport 694 694 ucast ## alice ucast eth0 eth0 192.168.137.101 192.168.137.101 alice ucast eth0 192.168.137.102 # bob ucast eth0 192.168.137.102 # bob node node alice alice node node bob bob 抜粋 抜粋 おもなパラメータ # 番号記号 から行末ま ではコメント pacemaker respawn Pacemakerといっしょに動かすかどうか 動かすならrespawn を指定 テンプレートに書かれていないのでパラメータ自体を追加 log_facility local0 Syslogファシリティを指定 udpport 694 ハートビート通信に使うポートを指定 20

Heartbeatの設定 2 Heartbeatのおもなパラメータ おもなパラメータ 続き ucast eth0 192.168.137.101 ucast eth0 192.168.137.102 # alice # bob ユニキャストによるハートビート通信の設定としてデバイスと相手のIPア ドレスを指定 自分のIPアドレスを指定する必要はないが ノード間で設定ファイルを同 じにしておいたほうが管理しやすい マルチキャスト mcast ブロードキャスト bcast でも指定できる node alice node bob クラスタに加えるノードを指定 ノード名は uname -n で返ってくるホスト名と同じでなければならない そのほかのパラメータについてはテンプレートのコメント や man ha.cf でマニュアルを参照 21

Heartbeatの設定 3 認証用キーの設定 ハートビート通信でノードの認証に使うキーの設定を行う 1. 認証用キーファイルのテンプレートをコピー ## cp cp /usr/share/doc/heartbeat-3.0.5/authkeys /usr/share/doc/heartbeat-3.0.5/authkeys /etc/ha.d /etc/ha.d 2.rootユーザにしか読めないようにアクセス権を変更 ## chmod chmod 0600 0600 /etc/ha.d/authkeys /etc/ha.d/authkeys 3. 認証用キーファイルを編集 ## vim vim /etc/ha.d/authkeys /etc/ha.d/authkeys auth auth 11 11 sha1 sha1 1d55b4aa7fe26469aee71baacd6f8e26e51b7d5c 1d55b4aa7fe26469aee71baacd6f8e26e51b7d5c authの後にどの設定を使うかの番号を指定 設定には番号 ハッシュ化方式 認証用キーを指定 認証用キーは推測しにくいものであればOK ## head head -c -c 8k 8k /dev/urandom /dev/urandom sha1sum sha1sum d04675e6abdcb49913a0f94a08d760953cbd9430 d04675e6abdcb49913a0f94a08d760953cbd9430-22

Heartbeatの設定 4 Heartbeatの起動 設定ファイルを待機系ノードにコピーし 両方のノードで Heartbeatを起動 SBY ## scp scp /etc/ha.d/ha.cf /etc/ha.d/ha.cf /etc/ha.d/authkeys /etc/ha.d/authkeys bob:/etc/ha.d bob:/etc/ha.d root@bob's root@bob's password: password: パスワードを入力 パスワードを入力 ha.cf 100% ha.cf 100% 10KB 10KB 10.4KB/s 10.4KB/s authkeys 100% 0.7KB/s authkeys 100% 700 700 0.7KB/s 00:00 00:00 00:00 00:00 ## service service heartbeat heartbeat start start Starting Starting High-Availability High-Availability services: services: Done. Done. Heartbeatが起動していることを確認 ## crm_mon crm_mon Version: しばらく待って Online の Version: 1.0.13-30bb726 1.0.13-30bb726 後にすべてのノードが表示 22 Nodes expected Nodes configured, configured, unknown unknown expected votes votes されればOK 00 Resources configured. Resources configured. ============ ============ Online: Online: [[ alice alice bob bob ]] Ctrl Cで終了 Ctrl Cで終了 23

DRBDの設定 24

DRBDの設定 1 DRBD用パーティションの準備 SBY DRBD用のパーティションを準備 ディスクまたはパーティション /dev/sdb1など とりあえず試してみたいだけなら ループバックデバイス /dev/loop0など でもOK ## mkdir mkdir /srv/images /srv/images ## dd dd if=/dev/zero if=/dev/zero of=/srv/images/pgsql-data.img of=/srv/images/pgsql-data.img bs=1m bs=1m count=1024 count=1024 1024+0 1024+0 records records in in 1024+0 records out 1024+0 records out 1073741824 1073741824 bytes bytes (1.1 (1.1 GB) GB) copied, copied, 5.30452 5.30452 s, s, 202 202 MB/s MB/s ## losetup losetup /dev/loop0 /dev/loop0 /srv/images/pgsql-data.img /srv/images/pgsql-data.img ## vim /etc/rc.local vim /etc/rc.local touch touch /var/lock/subsys/local /var/lock/subsys/local losetup losetup /dev/loop0 /dev/loop0 /srv/images/pgsql-data.img /srv/images/pgsql-data.img 25

DRBDの設定 2 DRBDリソースの設定 DRBDリソースの設定ファイルを作成し 待機系ノードに コピー ## vim vim /etc/drbd.d/pgsql.res /etc/drbd.d/pgsql.res resource resource pgsql pgsql {{ protocol protocol C; C; meta-disk meta-disk internal; internal; disk disk {{ resync-rate resync-rate 40M; 40M; }} on on alice alice {{ device device /dev/drbd0; /dev/drbd0; disk disk /dev/loop0; /dev/loop0; address address 192.168.137.101:7788; 192.168.137.101:7788; }} on on bob bob {{ device device /dev/drbd0; /dev/drbd0; disk disk /dev/loop0; /dev/loop0; address address 192.168.137.102:7788; 192.168.137.102:7788; }} }} ## scp scp /etc/drbd.d/pgsql.res /etc/drbd.d/pgsql.res bob:/etc/drbd.d bob:/etc/drbd.d root@bob's root@bob's password: password: パスワードを入力 パスワードを入力 pgsql.res 100% pgsql.res 100% 321 321 0.3KB/s 0.3KB/s 00:00 00:00

DRBDの設定 3 DRBDリソースの起動とデータの初期同期 メタデータを作成し DRBDリソースを起動 SBY ## drbdadm drbdadm create-md create-md pgsql pgsql Writing Writing meta meta data... data... initializing initializing activity activity log log NOT initializing bitmap NOT initializing bitmap New New drbd drbd meta meta data data block block successfully successfully created. created. success success ## drbdadm drbdadm up up pgsql pgsql データの初期同期を行う ## drbdadm drbdadm disk-options disk-options --resync-rate=110m --resync-rate=110m pgsql pgsql ## drbd-overview drbd-overview 0:pgsql/0 0:pgsql/0 Connected Connected Secondary/Secondary Secondary/Secondary Inconsistent/Inconsistent Inconsistent/Inconsistent CC r----r----## drbdadm drbdadm primary primary --force --force pgsql pgsql ## drbd-overview drbd-overview 0:pgsql/0 0:pgsql/0 SyncSource SyncSource Primary/Secondary Primary/Secondary UpToDate/Inconsistent UpToDate/Inconsistent CC r----r----[=========>...] sync'ed: 50.4% (524092/1048508)K [=========>...] sync'ed: 50.4% (524092/1048508)K ## drbd-overview drbd-overview 0:pgsql/0 0:pgsql/0 Connected Connected Primary/Secondary Primary/Secondary UpToDate/UpToDate UpToDate/UpToDate CC r----r----## drbdadm adjust pgsql drbdadm adjust pgsql 27

DRBDの設定 4 ファイルシステムの作成とマウント DRBDデバイスにファイルシステムを作成し マウント ## mkfs.ext4 mkfs.ext4 /dev/drbd0 /dev/drbd0 mke2fs mke2fs 1.41.12 1.41.12 (17-May-2010) (17-May-2010) Discarding Discarding device device blocks: blocks: done done Filesystem label= Filesystem label= 省略 省略 This This filesystem filesystem will will be be automatically automatically checked checked every every 21 21 mounts mounts or or 180 180 days, days, whichever whichever comes comes first. first. Use Use tune2fs tune2fs -c -c or or -i -i to to override. override. ## mkdir mkdir /mnt/pgsql-data /mnt/pgsql-data ## mount -t mount -t ext4 ext4 /dev/drbd0 /dev/drbd0 /mnt/pgsql-data /mnt/pgsql-data ## df df Filesystem 1K-ブロック 使用 Filesystem 1K-ブロック 使用 使用可 使用可 使用% 使用% マウント位置 マウント位置 /dev/mapper/volgroup-lv_root /dev/mapper/volgroup-lv_root 14006192 14006192 5254108 5254108 8040612 8040612 40% 40% // tmpfs 506208 72 506136 tmpfs 506208 72 506136 1% 1% /dev/shm /dev/shm /dev/sda1 495844 73912 396332 /dev/sda1 495844 73912 396332 16% 16% /boot /boot /dev/drbd0 1032020 17668 961928 /dev/drbd0 1032020 17668 961928 2% 2% /mnt/pgsql-data /mnt/pgsql-data 28

PostgreSQLの設定 29

PostgreSQLの設定 1 データベースクラスタの作成 DRBDデバイス上のファイルシステムにデータベースク ラスタを作成 ## mkdir mkdir /mnt/pgsql-data/data /mnt/pgsql-data/data ## chmod chmod 0700 0700 /mnt/pgsql-data/data /mnt/pgsql-data/data ## chown postgres:postgres chown postgres:postgres /mnt/pgsql-data/data /mnt/pgsql-data/data ## su su postgres postgres $$ /usr/pgsql-9.3/bin/initdb /usr/pgsql-9.3/bin/initdb -A -A md5 md5 -D -D /mnt/pgsql-data/data /mnt/pgsql-data/data -E -E UTF8 UTF8 \\ >> --locale=c --locale=c -W -W 省略 省略 新しいスーパーユーザのパスワードを入力してください: 新しいスーパーユーザのパスワードを入力してください: パスワードを入力 パスワードを入力 再入力してください: 再入力してください: もう一度パスワードを入力 もう一度パスワードを入力 省略 省略 成功しました 以下を使用してデータベースサーバを起動することができます 成功しました 以下を使用してデータベースサーバを起動することができます /usr/pgsql-9.3/bin/postmaster /usr/pgsql-9.3/bin/postmaster -D -D /mnt/pgsql-data/data /mnt/pgsql-data/data または または /usr/pgsql-9.3/bin/pg_ctl /usr/pgsql-9.3/bin/pg_ctl -D -D /mnt/pgsql-data/data /mnt/pgsql-data/data -l -l logfile logfile start start $$ ls ls /mnt/pgsql-data/data /mnt/pgsql-data/data PG_VERSION PG_VERSION pg_hba.conf pg_hba.conf base pg_ident.conf base pg_ident.conf global pg_multixact global pg_multixact pg_clog pg_notify pg_clog pg_notify pg_serial pg_serial pg_snapshots pg_snapshots pg_stat pg_stat pg_stat_tmp pg_stat_tmp pg_subtrans pg_subtrans postgresql.conf postgresql.conf pg_tblspc pg_tblspc pg_twophase pg_twophase pg_xlog pg_xlog 30

PostgreSQLの設定 2 PostgreSQLの設定 リモートホストからの接続を監視し Syslogでログを取得 するようにPostgreSQLの設定を変更 $$ vim vim /mnt/pgsql-data/data/postgresql.conf /mnt/pgsql-data/data/postgresql.conf listen_addresses ## what listen_addresses == '*' '*' what IP IP address(es) address(es) to to listen listen on; on; #port ## (change #port == 5432 5432 (change requires requires restart) restart) log_destination ## Valid log_destination == 'syslog' 'syslog' Valid values values are are combinations combinations of of logging_collector ## Enable logging_collector == off off Enable capturing capturing of of stderr stderr and and csvlog csvlog #syslog_facility #syslog_facility == 'LOCAL0' 'LOCAL0' log_line_prefix = '' ## special log_line_prefix = '' special values: values: 抜粋 抜粋 同じネットワーク内から接続できるようにクライアント認証 の設定を変更 $$ vim vim /mnt/pgsql-data/data/pg_hba.conf /mnt/pgsql-data/data/pg_hba.conf ## TYPE USER TYPE DATABASE DATABASE USER host all all host all all ADDRESS ADDRESS 192.168.137.0/24 192.168.137.0/24 ## "local" "local" is is for for Unix Unix domain domain socket socket connections connections only only local all all local all all METHOD METHOD md5 md5 md5 md5 31

PostgreSQLの設定 3 PostgreSQLの起動と停止 PostgreSQLを起動し ネットワーク越しに接続できるこ とを確認し 停止 $$ /usr/pgsql-9.3/bin/pg_ctl /usr/pgsql-9.3/bin/pg_ctl start start -w -w -D -D /mnt/pgsql-data/data /mnt/pgsql-data/data サーバの起動完了を待っています...LOG: サーバの起動完了を待っています...LOG: ending ending log log output output to to stderr stderr HINT: Future log output will go to log destination "syslog". HINT: Future log output will go to log destination "syslog". 完了 完了 サーバ起動完了 サーバ起動完了 $$ psql psql -h -h alice alice パスワード: パスワード: パスワードを入力 パスワードを入力 psql psql (9.3.3) (9.3.3) "help" "help" でヘルプを表示します. でヘルプを表示します. =# =# \q \q $$ /usr/pgsql-9.3/bin/pg_ctl /usr/pgsql-9.3/bin/pg_ctl stop stop -D -D /mnt/pgsql-data/data /mnt/pgsql-data/data サーバ停止処理の完了を待っています...完了 サーバ停止処理の完了を待っています...完了 サーバは停止しました サーバは停止しました $$ exit exit 32

Pacemakerの設定 33

Pacemakerの設定 1 Pacemakerの設定 Pacemakerとリソースのデフォルト値の設定を行う ## vim vim pgsql.crm pgsql.crm property property \\ no-quorum-policy="ignore" no-quorum-policy="ignore" \\ stonith-enabled="false" stonith-enabled="false" \\ startup-fencing="false" startup-fencing="false" rsc_defaults rsc_defaults \\ resource-stickiness="infinity" resource-stickiness="infinity" \\ migration-threshold="2" migration-threshold="2" \\ failure-timeout="60s" failure-timeout="60s" 次のページに続く 次のページに続く 34

Pacemakerの設定 2 DRBDマスタスレーブリソースの設定 DRBDマスタスレーブリソースを作成 primitive primitive drbd drbd ocf:linbit:drbd ocf:linbit:drbd \\ params params \\ drbd_resource="pgsql" drbd_resource="pgsql" \\ op op start start timeout="240s" timeout="240s" \\ op op stop stop timeout="100s" timeout="100s" \\ op op monitor monitor interval="20s" interval="20s" timeout="20s" timeout="20s" op monitor interval="10s" timeout="20s" op monitor interval="10s" timeout="20s" role="master" role="master" \\ op op promote promote timeout="90s" timeout="90s" \\ op op demote demote timeout="90s" timeout="90s" on_fail="restart" on_fail="restart" on_fail="restart" on_fail="restart" \\ \\ ms ms ms_drbd ms_drbd drbd drbd \\ meta meta \\ master-max="1" master-max="1" \\ master-node-max="1" master-node-max="1" \\ clone-max="2" clone-max="2" \\ clone-node-max="1" clone-node-max="1" \\ notify="true" notify="true" 次のページに続く 次のページに続く 35

Pacemakerの設定 3 ファイルシステムと仮想IPアドレスリソースの設定 ファイルシステムと仮想IPアドレスリソースを作成 primitive primitive filesystem filesystem ocf:heartbeat:filesystem ocf:heartbeat:filesystem \\ params params \\ device="/dev/drbd0" device="/dev/drbd0" \\ directory="/mnt/pgsql-data" directory="/mnt/pgsql-data" \\ fstype="ext4" fstype="ext4" \\ op op start start timeout="60s" timeout="60s" \\ op op stop stop timeout="60s" timeout="60s" \\ op op monitor monitor interval="20s" interval="20s" timeout="40s" timeout="40s" on_fail="restart" on_fail="restart" primitive primitive ipaddr ipaddr ocf:heartbeat:ipaddr2 ocf:heartbeat:ipaddr2 \\ params params \\ ip="192.168.137.201" ip="192.168.137.201" \\ nic="eth0" nic="eth0" \\ cidr_netmask="24" cidr_netmask="24" \\ op op start start timeout="20s" timeout="20s" \\ op op stop stop timeout="20s" timeout="20s" \\ op op monitor monitor interval="10s" interval="10s" timeout="20s" timeout="20s" on_fail="restart" on_fail="restart" 次のページに続く 次のページに続く 36

Pacemakerの設定 4 PostgreSQLグループリソースの設定 PostgreSQLグループリソースを作成 primitive primitive pgsql pgsql ocf:heartbeat:pgsql ocf:heartbeat:pgsql \\ params params \\ pgctl="/usr/pgsql-9.3/bin/pg_ctl" pgctl="/usr/pgsql-9.3/bin/pg_ctl" \\ start_opt="-p start_opt="-p 5432" 5432" \\ psql="/usr/bin/psql" psql="/usr/bin/psql" \\ pgdba="postgres" pgdba="postgres" \\ pgdata="/mnt/pgsql-data/data" pgdata="/mnt/pgsql-data/data" \\ pgport="5432" pgport="5432" \\ monitor_user="postgres" monitor_user="postgres" \\ monitor_password="password" monitor_password="password" \\ op op start start timeout="120s" timeout="120s" \\ op op stop stop timeout="120s" timeout="120s" \\ op op monitor monitor interval="30s" interval="30s" timeout="30s" timeout="30s" on_fail="restart" on_fail="restart" group group group_pgsql group_pgsql \\ filesystem filesystem ipaddr ipaddr pgsql pgsql colocation colocation group_pgsql_and_ms_drbd_master group_pgsql_and_ms_drbd_master \\ inf: inf: group_pgsql group_pgsql ms_drbd:master ms_drbd:master order order ms_drbd_promote_before_group_pgsql_start ms_drbd_promote_before_group_pgsql_start \\ inf: inf: ms_drbd:promote ms_drbd:promote group_pgsql:start group_pgsql:start 37

Pacemakerの設定 5 設定のロード ファイルから設定をロードしてリソースを作成 ## crm crm configure configure load load replace replace pgsql.crm pgsql.crm crm_verify[2199]: crm_verify[2199]: 2014/02/27_14:50:29 2014/02/27_14:50:29 WARN: WARN: unpack_nodes: unpack_nodes: Blind Blind faith: faith: not fencing unseen nodes not fencing unseen nodes ## crm_mon crm_mon -r -r ============ ============ Last Last updated: updated: Thu Thu Feb Feb 27 27 14:51:25 14:51:25 2014 2014 Stack: Heartbeat Stack: Heartbeat Current Current DC: DC: bob bob (e6cb12d9-acdc-45c7-ab3c-6f969e9d1665) (e6cb12d9-acdc-45c7-ab3c-6f969e9d1665) -- partition partition with with quorum quorum Version: Version: 1.0.13-30bb726 1.0.13-30bb726 22 Nodes Nodes configured, configured, unknown unknown expected expected votes votes 22 Resources Resources configured. configured. ============ ============ Online: Online: [[ alice alice bob bob ]] Resource Resource Group: Group: group_pgsql group_pgsql filesystem (ocf::heartbeat:filesystem): filesystem (ocf::heartbeat:filesystem): ipaddr (ocf::heartbeat:ipaddr2): ipaddr (ocf::heartbeat:ipaddr2): pgsql (ocf::heartbeat:pgsql): pgsql (ocf::heartbeat:pgsql): Started Started Master/Slave Master/Slave Set: Set: ms_drbd ms_drbd Masters: Masters: [[ bob bob ]] Slaves: Slaves: [[ alice alice ]] Started Started Started Started bob bob bob bob bob bob

動作確認 39

PowerGres HA Pacemaker版 PowerGresでPostgreSQLの信頼性をより高めよう http://www.sraoss.co.jp/event_seminar/2013/20131127_powergres-plus-and-ha.pdf 40

オープンソースとともに 41