LoginSignup
8
7

More than 1 year has passed since last update.

CentOS6.5でDRBD8.4を使ってみる - vol.2 Corosync設定編

Last updated at Posted at 2014-08-31

しおり

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を次のように編集します。

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: yesto_syslog: yesを同時に設定してしまうと、ログが重複して出力されてしまうためどちらか一方にしておくと良いです(Pacemakerのログは特に大量に出力される)。

Firewallの設定

iptablesでCorosyncの通信を許可します。UDPの5405ポートを許可します。
具体的なポート番号は/etc/corosync/corosync.confmcastportの設定によります。

実際にはもっと正確にインターフェイスを限定したほうが良いと思います。

/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にすると故障したノードがクラスタに復帰するとフェイルバックするようになります。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7