しおり
CentOS6.5でDRBD8.4を使ってみる - vol.0 準備編
CentOS6.5でDRBD8.4を使ってみる - vol.1 インストール編
CentOS6.5でDRBD8.4を使ってみる - vol.2 Corosync設定編
CentOS6.5でDRBD8.4を使ってみる - vol.3 DRBD初期設定編
CentOS6.5でDRBD8.4を使ってみる - vol.4 CRM設定編
注意事項
ここで使用しているLinux-HA Japan配布のPacemakerは古いバージョンです。
Pacemaker 1.1.12が2015年3月現在の最新で、corosync.conf
の設定項目が変更されていたりSysVinitではなくUpstartを使用するように変更されていたりします。
http://linux-ha.sourceforge.jp/wp/ をご確認の上、適宜設定をお願い致します。
Corosyncの設定
corosync.confの設定
/etc/corosync/corosync.conf
を次のように編集します。
compatibility: whitetank
aisexec {
user: root
group: root
}
service {
name: pacemaker
ver: 0
use_mgmtd: yes
}
amf {
mode: disabled
}
totem {
version: 2
secauth: off
threads: 0
rrp_mode: none
clear_node_high_bit: yes
token: 4000
censensus: 7000
join: 60
interface {
member {
memberaddr: 192.168.128.15
}
member {
memberaddr: 192.168.128.16
}
ringnumber: 0
bindnetaddr: 192.168.128.0
mcastport: 5405
ttl: 1
}
transport: udpu
}
logging {
fileline: off
to_logfile: yes
to_syslog: no
logfile: /var/log/cluster/corosync.log
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
}
}
quorum {
provider: corosync_votequorum
expected_votes: 2
two_node: 1
}
totem
セクションのinterface
についてはHeartbeatをやりとりするインターフェイス(インターコネクト)の数だけ用意します。
ringnumber
はインクリメントします。
インターコネクトは複数用意するのが望ましいのですが、ここは1つだけ使っています。
複数用意する場合はbonding(Active/Backup)を使用するか、別々のインターフェイスでinterface
を定義し、rrp_mode: active
を設定します。
bondingを使用する場合にはinterface
は1つで良いです。
logging
についてですが、to_logfile: yes
とto_syslog: yes
を同時に設定してしまうと、ログが重複して出力されてしまうためどちらか一方にしておくと良いです(Pacemakerのログは特に大量に出力される)。
Firewallの設定
iptablesでCorosyncの通信を許可します。UDPの5405ポートを許可します。
具体的なポート番号は/etc/corosync/corosync.conf
のmcastport
の設定によります。
実際にはもっと正確にインターフェイスを限定したほうが良いと思います。
/etc/sysconfig/iptables
に次の行を追加します
( -A INPUT -j REJECT --reject-with icmp-host-prohibited
の前の行に割り込ませる)。
-A INPUT -m udp -p udp --dport 5405 -j ACCEPT
-A INPUT -m udp -p udp --sport 5405 -j ACCEPT
-A OUTPUT -m udp -p udp --dport 5405 -j ACCEPT
-A OUTPUT -m udp -p udp --sport 5405 -j ACCEPT
Corosyncの起動
両方のノードでCorosyncを起動し、エラーが無いことを確認します。
service corosync start
どちらかのノードでcrm_mon -Aro
を実行し、次のようになっていれば問題ありません。
============
Last updated: Sun Aug 31 19:28:59 2014
Stack: openais
Current DC: drbd1 - partition with quorum
Version: 1.0.13-a83fae5
2 Nodes configured, 2 expected votes
0 Resources configured.
============
Online: [ drbd1 drbd2 ]
Full list of resources:
Node Attributes:
* Node drbd1:
* Node drbd2:
Operations:
* Node drbd1:
* Node drbd2:
CRMの初期設定
CRM ShellでCRMの設定を行っていきます。
crm configure
CRM Shellに入りますので、ここで作業します。
crm(live)configure# property no-quorum-policy=ignore stonith-enabled=false
crm(live)configure# rsc_defaults resource-stickiness=200 migration-threshold=3
crm(live)configure# commit
crm(live)configure# exit
bye
2ノードクラスタなので、Quorumを利用しないようにします。また、STONITHも現段階では無効にしておきます(property)。
リソースの再配置を行う際に加算されるスコア(resource-stickiness)を200にしておきます。
この値の算出はややこしいので割愛しますが、リソースのスコアが変化した時に再配置が行われるようにしています。
INFINITY
にするとリソースが故障するまで再配置が起こりませんし、0
にすると故障したノードがクラスタに復帰するとフェイルバックするようになります。