Más contenido relacionado
La actualidad más candente (20)
Similar a 痛い目にあってわかる HAクラスタのありがたさ (20)
痛い目にあってわかる HAクラスタのありがたさ
- 5. さらにHAクラスタ
クラスタというと
High Availability = 高可用性
壊れにくさ
つまり
一台のコンピュータでは得られない
一台のコンピュータでは得られない
高い信頼性を狙うために、
高い信頼性を狙うために、
複数のコンピュータを結合し、
複数のコンピュータを結合し、
ひとまとまりとしたシステムのこと
ひとまとまりとしたシステムのこと
Linux-HA Japan Project
5
- 25. リソース制御部 : Pacemaker
Heartbeat2
Heartbeat2
リソース制御部
Tengine
CRM Pengine
クラスタ制御部
CCM
CRM:
Tengine:
Pengine:
CCM:
RA:
RA
他のクラスタソフトウェア間とのコン
ポーネントの共通化のために、
Heartbeat2のリソース制御部が
Pacemakerとして切り出されました
Pacemaker
Cluster Resource Manager
※リソース制御機能は主にこの
Transition Engine
Policy engine
コンポーネントに含まれる
Cluster Consensus Membership
Linux-HA Japan Project
Resource Agent
25
- 27. クラスタ制御部 候補1 : Heartbeat3
Heartbeat2
リソース制御部
Tengine
CRM Pengine
クラスタ制御部
CCM
Heartbeat2の
クラスタ制御部が、
Heartbeat3 として切り
出されました
RA
Heartbeat3
※ノード監視は主にこちらのコンポーネント
に含まれる
Linux-HA Japan Project
27
- 28. クラスタ制御部 候補2 : Corosync
OpenAIS
リソース制御部
“OpenAIS”というオープンソースの
HAクラスタがあり、
このクラスタ制御部が
Corosyncとして切り出されました
クラスタ制御部
Corosync
Linux-HA Japan Project
28
- 35. インストール方法の種類
1.
yum を使ってネットワークインストール
Pacemaker本家(clusterlabs) の yumのリポジトリを使用
インターネット接続必須
2.
ローカルリポジトリ + yum を使ってインストール
Linux-HA Japan 提供のローカルリポジトリを使用
Linux-HA Japan オリジナルパッケージ含む
インターネット接続は必須ではない
3.
rpm を手動でインストール
rpmを個別にダウンロードする必要あり。少し手間がかかる。
4.
ソースからインストール
最新の機能をいち早く試せます
コンポーネントが多いので、コンパイルは結構面倒
Linux-HA Japan Project
35
- 36. Pacemaker rpmパッケージ
2010年11月19日現在公開されているHAクラスタを構築するのに
必要なRHEL5, CentOS5 x86_64用のrpmパッケージ 計9個
pacemaker-1.0.10-1.4.el5.x86_64.rpm
pacemaker-libs-1.0.10-1.4.el5.x86_64.rpm
corosync-1.2.7-1.1.el5.x86_64.rpm
corosynclib-1.2.7-1.1.el5.x86_64.rpm
cluster-glue-1.0.6-1.el5.x86_64.rpm
cluster-glue-libs-1.0.6-1.el5.x86_64.rpm
resource-agents-1.0.3-2.6.el5.x86_64.rpm
heartbeat-3.0.3-2.3.el5.x86_64.rpm
heartbeat-libs-3.0.3-2.3.el5.x86_64.rpm
Linux-HA Japan Project
11/12 に 1.0.10 が
11/12 に 1.0.10 が
リリースされました!
リリースされました!
Corosync、Heartbeat3ど
Corosync、Heartbeat3ど
Corosync、Heartbeat3ど
Corosync、Heartbeat3ど
ちらのクラスタ制御部を
ちらのクラスタ制御部を
使用する場合でも、
使用する場合でも、
インストールするrpm パッ
rpmパッ
インストールするrpmパッ
インストールするrpm
rpmパッ
インストールするrpm
ケージは同じです
ケージは同じです
36
- 37. インストール方法 その1
~ yum を使ってネットワークインストール ~
(インターネット接続環境必須)
1 . epel yumリポジトリを設定
CentOS付属のパッケージに足らないrpmパッケージを補うために
Fedoraプロジェクトで提供しているyumレポジトリを設定
# wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel# wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epelrelease-5-4.noarch.rpm
release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm
Linux-HA Japan Project
37
- 38. ~ yum を使ってネットワークインストール ~
2. Pacemaker本家のyumリポジトリを設定
clusterlabs.org からyumの設定ファイルであるrepoファイルを
ダウンロード、配置
# cd /etc/yum.repo.d
← yum設定用ディレクトリ
# cd /etc/yum.repo.d
← yum設定用ディレクトリ
# wget http://clusterlabs.org/rpm/epel-5/clusterlabs.repo
# wget http://clusterlabs.org/rpm/epel-5/clusterlabs.repo
Linux-HA Japan Project
38
- 39. ~ yum を使ってネットワークインストール ~
3. インストール
これだけでインストール
これだけでインストール
は完了!
は完了!
# yum install pacemaker.x86_64
# yum install pacemaker.x86_64
rpmの依存関係で以下のパッケージもダウンロード・自動的にインストールされます。
pacemaker-libs (clusterlabs)
corosync
(clusterlabs)
corosynclib
(clusterlabs)
cluster-glue
(clusterlabs)
cluster-glue-libs (clusterlabs)
resource-agents (clusterlabs)
heartbeat
(clusterlabs)
heartbeat-libs
(clusterlabs)
libesmtp
(epel)
Linux-HA Japan Project
39
- 40. インストール方法 その2
~ ローカルリポジトリ + yum を使ってインストール ~
(サーバにインターネット接続環境がなくてもOK)
1. Pacemaker ローカルリポジトリをダウンロード
Linux-HA Japan 提供の Pacemaker ローカルリポジトリを
ダウンロードします。
pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz
をダウンロード
Pacemaker-1.0.10 版は
Pacemaker-1.0.10 版は
昨日(11/26) リリース
昨日
昨日(11/26) リリース
昨日
Linux-HA Japan Project
40
- 41. ~ ローカルリポジトリ + yum を使ってインストール ~
2. Pacemaker リポジトリパッケージを展開
# cd /tmp
← /tmp に展開にすることを前提にローカルリポジトリを作っています
# cd /tmp
← /tmp に展開にすることを前提にローカルリポジトリを作っています
# tar zxvf /・・・/・・・/pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz
# tar zxvf /・・・/・・・/pacemaker-1.0.10-1.4.1.el5.x86_64.repo.tar.gz
3. yumでローカルからインストール!
# cd pacemaker-1.0.10-1.4.1.el5.x86_64.repo
# cd pacemaker-1.0.10-1.4.1.el5.x86_64.repo
# yum –c pacemaker.repo install pacemaker
# yum –c pacemaker.repo install pacemaker
※Linux-HA Japan オリジナルパッケージは別途yumで指
定してインストールしてください
pm_crmgen-1.0-1.el5.noarch.rpm
・・・ crm用設定ファイル編集ツール
pm_diskd-1.0-1.el5.x86_64.rpm
・・・ ディスク監視アプリとRA
pm_logconv-hb-1.0-1.el5.noarch.rpm ・・・ ログ変換ツール
pm_extras-1.0-1.el5.x86_64.rpm Linux-HA Japan その他オリジナルRA 等
・・・ Project
41
- 42. 注意
RHEL 5.5 や CentOS 5.5 に付属している
libxml2 ではタイミングによってPacemakerが
正常に動作しないバグがありました。
libxml2-2.6.26-2.1.2.8.el5_5.1
修正されているので、
で修正されているので、
アップデートすることをお勧めします。
詳細 : https://rhn.redhat.com/errata/RHBA-2010-0764.html
Linux-HA Japan Project
42
- 45. クラスタ制御部の設定
/etc/ha.d/ha.cf
クラスタ制御部の基本設定ファイル
クラスタ内の全ノードに同じ内容のファイルを設置
pacemaker on
pacemaker on
debug 0
debug 0
udpport 694
udpport 694
keepalive 2
keepalive 2
warntime 20
warntime 20
deadtime 24
deadtime 24
initdead 48
initdead 48
logfacility local1
logfacility local1
基本的に Heartbeat2 の
基本的に Heartbeat2 の
ha.cfと設定は同じ
ha.cfと設定は同じ
従来の「crm on」から「pacemaker on」に
変更となります
bcast eth1
bcast eth1
bcast eth3
bcast eth3
eth1
node pm01
node pm01
node pm02
node pm02
watchdog /dev/watchdog
watchdog /dev/watchdog
eth3
pm01
Linux-HA Japan Project
pm02
45
- 49. 起動確認
Pacemakerの状態表示コマンド
crm_monコマンドを利用
# crm_mon
# crm_mon
============
============
Last updated: Wed Nov 10 14:28:55 2010
Last updated: Wed Nov 10 14:28:55 2010
Stack: Heartbeat
Stack: Heartbeat
Current DC: pm02 (a59a9306-d6e7-4357-bb0c-a5aea0615e61) --partition
Current DC: pm02 (a59a9306-d6e7-4357-bb0c-a5aea0615e61) partition
with quorum
with quorum
Version: 1.0.10-89bd754939df5150de7cd76835f98fe90851b677
Version: 1.0.10-89bd754939df5150de7cd76835f98fe90851b677
2 Nodes configured, unknown expected votes
2 Nodes configured, unknown expected votes
0 Resources configured.
0 Resources configured.
============
============
Online: [ [pm02 pm01 ] ]
Online: pm02 pm01
クラスタに組み込まれている
クラスタに組み込まれている
ノード名(ホスト名)が表示されます
ノード名(ホスト名)が表示されます
Linux-HA Japan Project
Linux-HA Japan Project
49
49
- 55. リソース制御部の設定
crmコマンド : 実行
crmコマンドを起動し、リソース設定モードに入り
ます
# crm
# crm
crm(live)# configure
crm(live)# configure
crm(live)configure#
crm(live)configure#
← ここから設定を入力していく
← ここから設定を入力していく
サブコマンドを同時に指定することで、
一気にリソース設定モードに入ることも可能
# crm configure
# crm configure
crm(live)configure#
crm(live)configure#
Linux-HA Japan Project
55
- 56. リソース制御部の設定
crm コマンド : 基本動作設定
クォーラムの設定
2ノードでは基本的にignoreを設定
STONITH設定
今回は設定例を簡単にするために無効(false)に設定
商用環境では有効にし、STONITHを設定することを
推奨
crm(live)configure# property no-quorum-policy="ignore" ¥
crm(live)configure# property no-quorum-policy="ignore" ¥
stonith-enabled="false" ¥
stonith-enabled="false" ¥
startup-fencing="false"
startup-fencing="false"
Linux-HA Japan Project
56
- 57. リソース制御部の設定
crm コマンド : 仮想IPアドレス設定
仮想IPアドレスを制御するリソースエージェント
「IPaddr2」のリソース設定を行います
仮想IPのリソースIDを
「MyIp」とします (任意の文字列)
crm(live)configure# primitive MyIp ocf:heartbeat:IPaddr2 ¥
crm(live)configure# primitive MyIp ocf:heartbeat:IPaddr2 ¥
params ¥
params ¥
ip="172.20.24.110""¥
ip="172.20.24.110 ¥
IPaddr2に渡す
nic="eth0" ¥
nic="eth0" ¥
パラメータ
cidr_netmask="24” ¥
cidr_netmask="24” ¥
op start interval="0s" timeout="60s" on-fail="restart" ¥
監視間隔や
op start interval="0s" timeout="60s" on-fail="restart" ¥
op monitor interval="10s" timeout="60s" on-fail="restart" ¥
タイムアウト
op monitor interval="10s" timeout="60s" on-fail="restart" ¥
故障時の動作
op stop interval="0s" timeout="60s" on-fail="block"
op stop interval="0s" timeout="60s" on-fail="block"
Linux-HA Japan Project
57
- 59. リソース制御部の設定
crm コマンド : Apache設定
「apache」リソースエージェントを使用し、Apache
のリソース設定を行います
Apache設定のリソースIDを
「MyApache」とします(任意の文字列)
crm(live)configure# primitive MyApache ocf:heartbeat:apache ¥
crm(live)configure# primitive MyApache ocf:heartbeat:apache ¥
params ¥
params ¥
statusurl="http://localhost/test.html" ¥
apacheに渡す
testregex="hogehoge" ¥
パラメータ
httpd="/usr/sbin/httpd" ¥
httpd="/usr/sbin/httpd" ¥
configfile="/etc/httpd/conf/httpd.conf" ¥
configfile="/etc/httpd/conf/httpd.conf" ¥
op start interval="0s" timeout="60s" on-fail="restart" ¥
監視間隔や
op start interval="0s" timeout="60s" on-fail="restart" ¥
タイムアウト
op monitor interval="10s" timeout="60s" on-fail="restart" ¥
op monitor interval="10s" timeout="60s" on-fail="restart" ¥
故障時の動作
op stop interval="0s" timeout="60s" on-fail="block""
op stop interval="0s" timeout="60s" on-fail="block
※Apacheの監視URLに指定したファイルを作成する必要あり
# echo "hogehoge" > /var/www/html/test.html
Linux-HA Japan Project
# echo "hogehoge" > /var/www/html/test.html
59
- 60. リソース制御部の設定
crm コマンド : リソースのグループ化
設定した「IPaddr2」「apache」リソースの
グループ化を行います
グループIDを「MyGrp」とし
ます(任意の文字列)
crm(live)configure# group MyGrp MyIp MyApache
crm(live)configure# group MyGrp MyIp MyApache
グループ化??
グループ内のどれか1つでも壊れたら
グループ全体がフェイルオーバ
グループ化の順番でリソースを起動
Linux-HA Japan Project
60
- 61. リソース制御部の設定
crm コマンド : 設定の確認
crm(live)configure# show
crm(live)configure# show
node $id="a0dacbcf-346f-4003-ab5b-15422e0e4697" pm01
node $id="a0dacbcf-346f-4003-ab5b-15422e0e4697" pm01
node $id="fe705a39-541a-4b10-af22-de27d4c72d23" pm02
node $id="fe705a39-541a-4b10-af22-de27d4c72d23" pm02
apache設定
primitive MyApache ocf:heartbeat:apache ¥¥
primitive MyApache ocf:heartbeat:apache
params statusurl="http://localhost/test.html" testregex="hogehoge"
params statusurl="http://localhost/test.html" testregex="hogehoge"
httpd="/usr/sbin/httpd" configfile="/etc/httpd/conf/httpd.conf" ¥¥
httpd="/usr/sbin/httpd" configfile="/etc/httpd/conf/httpd.conf"
op start interval="0s" timeout="60s" on-fail="restart" ¥¥
op start interval="0s" timeout="60s" on-fail="restart"
op monitor interval="10s" timeout="60s" on-fail="restart" ¥¥
op monitor interval="10s" timeout="60s" on-fail="restart"
op stop interval="0s" timeout="60s" on-fail="block"
op stop interval="0s" timeout="60s" on-fail="block"
仮想IP設定
primitive MyIp ocf:heartbeat:IPaddr2 ¥¥
primitive MyIp ocf:heartbeat:IPaddr2
params ip="172.20.24.110" nic="eth0" cidr_netmask="24" ¥¥
params ip="172.20.24.110" nic="eth0" cidr_netmask="24"
op start interval="0s" timeout="60s" on-fail="restart" ¥¥
op start interval="0s" timeout="60s" on-fail="restart"
op monitor interval="10s" timeout="60s" on-fail="restart" ¥¥
op monitor interval="10s" timeout="60s" on-fail="restart"
op stop interval="0s" timeout="60s" on-fail="block"
op stop interval="0s" timeout="60s" on-fail="block"
グループ設定
共通設定
group MyGrp MyIp MyApache
group MyGrp MyIp MyApache
property $id="cib-bootstrap-options" ¥¥
property $id="cib-bootstrap-options"
dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677" ¥¥
dc-version="1.0.9-89bd754939df5150de7cd76835f98fe90851b677"
cluster-infrastructure="Heartbeat" ¥¥
cluster-infrastructure="Heartbeat"
no-quorum-policy="ignore" ¥¥
no-quorum-policy="ignore"
stonith-enabled="false" ¥¥
stonith-enabled="false"
startup-fencing="false" Linux-HA Japan Project
startup-fencing="false"
61
- 62. リソース制御部の設定
crm コマンド : 設定の反映
commitを実行すると設定が反映され、リソースが
起動されます
crm(live)configure# commit
crm(live)configure# commit
設定は外部ファイルに保存もできます
crm(live)configure# save /root/config.crm
crm(live)configure# save /root/config.crm
保存した設定は読み込めます
設定を全て破棄したい場合は、
Pacemakerを停止後、
/var/lib/heartbeat/crm/ 内の
ファイルを全て削除します
crm(live)configure# load update /root/config.crm
crm(live)configure# load update /root/config.crm
Linux-HA Japan Project
62
- 63. リソース制御部の設定
リソース起動の確認
crm_mon コマンドでリソース起動を確認
# crm_mon
# crm_mon
============
============
~省略~
~省略~
============
============
仮想IPとApacheが
pm02で起動
Online: [ [pm02 pm01 ] ]
Online: pm02 pm01
Resource Group: MyGrp
Resource Group: MyGrp
MyIp
(ocf::heartbeat:IPaddr2):
MyIp
(ocf::heartbeat:IPaddr2):
MyApache (ocf::heartbeat:apache):
MyApache (ocf::heartbeat:apache):
Linux-HA Japan Project
Started pm02
Started pm02
Started pm02
Started pm02
63
- 65. リソース制御部の設定
ノード故障時の状態表示
============
============
~ 省略 ~
~ 省略 ~
============
============
Online: [ [pm01 ] ]
Online: pm01
OFFLINE: [ [pm02 ] ]
OFFLINE: pm02
ノードpm01からはノードpm02が
ノードpm01からはノードpm02が
見えなくなったので「OFFLINE」と表示
見えなくなったので「OFFLINE」と表示
Resource Group: MyGrp
Resource Group: MyGrp
MyIp
(ocf::heartbeat:IPaddr2):
MyIp
(ocf::heartbeat:IPaddr2):
MyApache
MyApache (ocf::heartbeat:apache):
(ocf::heartbeat:apache):
Started pm01
Started pm01
Started pm01
Started pm01
pm01にフェイルオーバ
pm01にフェイルオーバ
Linux-HA Japan Project
65
- 67. リソース制御部の設定
リソース故障時の状態表示
============
============
~ 省略 ~
~ 省略 ~
============
============
pm0 1にフェイルオーバ
pm01にフェイルオーバ
pm0
pm0
Online: [ [pm02 pm01 ] ]
Online: pm02 pm01
Resource Group: MyGrp
Resource Group: MyGrp
MyIp
(ocf::heartbeat:IPaddr2):
MyIp
(ocf::heartbeat:IPaddr2):
MyApache (ocf::heartbeat:apache):
MyApache (ocf::heartbeat:apache):
Started pm01
Started pm01
Started pm01
Started pm01
リソース故障状況が表示
リソース故障状況が表示
されます
されます
ノードpm02
pm02で
※ノードpm02で
ノードpm02
pm02で
※ノードpm02で
Apacheが
Apacheが
Apacheが
Apacheが
monitor, start 故障
monitor, start 故障
Failed actions:
Failed actions:
MyApache_monitor_10000 (node=pm02, call=13, rc=1, status=complete): unknown error
MyApache_monitor_10000 (node=pm02, call=13, rc=1, status=complete): unknown error
MyApache_start_0 (node=pm02, call=15, rc=1, status=complete): unknown error
MyApache_start_0 (node=pm02, call=15, rc=1, status=complete): unknown error
Linux-HA Japan Project
67