CentOS7でクラスター環境を作ってみる(動作確認編)

Pacemakerを使用してCentOS7でクラスター環境を構築してみましょう

前回、Pacemakerのインストールまでを実施しましたので、今回は動作確認を行います。

共有ディスクにパーテションを作成

共有ディスク上にパーティションを作成します。検証環境ではサイズ的にfdiskでもいいのですが、2TB以上のディスクを接続することもあり得るのでpartedコマンドでパーティションを作成します。

[root@centos7-100 ~]# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
エラー: /dev/sdb: ディスクラベルが認識できません。
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ:
(parted) mkpart gpt
エラー: /dev/sdb: ディスクラベルが認識できません。
(parted) mklabel gpt
(parted) p
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

(parted) mkpart exhdd ext4 0% 100%
(parted) p
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前   フラグ
 1    1049kB  10.7GB  10.7GB                    exhdd

(parted) quit
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

もう1台のサーバでもパーティション状態を確認します。

[root@centos7-104 ~]# parted /dev/sdb
GNU Parted 3.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ:

番号  開始    終了    サイズ  ファイルシステム  名前   フラグ
 1    1049kB  10.7GB  10.7GB                    exhdd

(parted) quit

Pacemakerの設定

ここからPacemakerの設定をしていきます。

hostsを設定する

/etc/hostsファイルにお互いの設定を追記します。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.100 centos7-100.vsample.com centos7-100
192.168.1.104 centos7-104.vsample.com centos7-104

サーバを再起動します

[root@centos7-100 ~]# shutdown -r now

haclusterユーザが存在していることを確認とパスワード設定

Pacemakerのインストール時にhaclusterというユーザが作成されます。haclusterユーザが存在していることを確認して、haclusterユーザにパスワードを設定します。

[root@centos7-100 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
mongod:x:997:995:mongod:/var/lib/mongo:/bin/false
tcpdump:x:72:72::/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin
unbound:x:996:992:Unbound DNS resolver:/etc/unbound:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

haclusterが登録されています。

hacluster:x:189:189:cluster user:/home/hacluster:/sbin/nologin

パスワードを設定

haclusterユーザへのパスワード設定は、クラスターを構成するすべてのサーバで同じパスワードにします。

[root@centos7-100 ~]# passwd hacluster
ユーザー hacluster のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

pscdの起動設定を変更

インストールしただけではpcsは開始していません。pcsを開始して起動設定を変更します。

[root@centos7-100 ~]# systemctl status pcsd
● pcsd.service - PCS GUI and remote configuration interface
   Loaded: loaded (/usr/lib/systemd/system/pcsd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@centos7-100 ~]# systemctl enable pcsd
Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service.
[root@centos7-100 ~]# systemctl start pcsd
[root@centos7-100 ~]# systemctl status pcsd
● pcsd.service - PCS GUI and remote configuration interface
   Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2018-01-22 15:52:14 JST; 5s ago
 Main PID: 1393 (pcsd)
   CGroup: /system.slice/pcsd.service
           mq1393 /usr/bin/ruby /usr/lib/pcsd/pcsd > /dev/null &

 1月 22 15:52:12 centos7-100.vsample.com systemd[1]: Starting PCS GUI and remote configuration.....
 1月 22 15:52:14 centos7-100.vsample.com systemd[1]: Started PCS GUI and remote configuration ...e.
Hint: Some lines were ellipsized, use -l to show in full.

high-availabilityサービスをfirewallに追加

high-availabilityサービスをfirewallに追加します。high-availabilityサービスはpacemakerのインストール時に追加されたサービスです。

firewallへの追加操作

firewallへの追加は2台のサーバで実施します。

[root@centos7-100 ~]# firewall-cmd --permanent --add-service=high-availability
success
[root@centos7-100 ~]# firewall-cmd --reload
success
[root@centos7-100 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp0s3 enp0s8 enp0s9
  sources:
  services: ssh dhcpv6-client http high-availability
  ports: 5000/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:

pcs cluster authコマンドでノード認証を実施

pcs cluster authコマンドでノード認証を実施します。

[root@centos7-100 ~]# pcs cluster auth centos7-100 centos7-104 -u hacluster -p  --force
centos7-100: Authorized
centos7-104: Authorized

corosync.confの作成と同期

pcs cluster setupコマンドで/etc/corosync/corosync.confを作成して、もう1台のノードに同期します。

[root@centos7-100 ~]# pcs cluster setup --name vsample centos7-100 centos7-104
Destroying cluster on nodes: centos7-100, centos7-104...
centos7-100: Stopping Cluster ()...
centos7-104: Stopping Cluster ()...
centos7-100: Successfully destroyed cluster
centos7-104: Successfully destroyed cluster

Sending '_remote authkey' to 'centos7-100', 'centos7-104'
centos7-100: successful distribution of the file '_remote authkey'
centos7-104: successful distribution of the file '_remote authkey'
Sending cluster config files to the nodes...
centos7-100: Succeeded
centos7-104: Succeeded

Synchronizing pcsd certificates on nodes centos7-100, centos7-104...
centos7-100: Success
centos7-104: Success
Restarting pcsd on the nodes in order to reload the certificates...
centos7-100: Success
centos7-104: Success

同期を確認

[root@centos7-104 ~]# cat /etc/corosync/corosync.conf
totem {
    version: 2
    secauth: off
    cluster_name: vsample
    transport: udpu
}

nodelist {
    node {
        ring0_addr: centos7-100
        nodeid: 1
    }

    node {
        ring0_addr: centos7-104
        nodeid: 2
    }
}

quorum {
    provider: corosync_votequorum
    two_node: 1
}

logging {
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
}

クラスターを起動

クラスターを起動してみます。

[root@centos7-100 ~]# pcs cluster start --all
centos7-104: Starting Cluster...
centos7-100: Starting Cluster...
[root@centos7-100 ~]# corosync-cfgtool -s
Printing ring status.
Local node ID 1
RING ID 0
        id      = 192.168.1.100
        status  = ring 0 active with no faults

statusが no faults ならば通信できています。
もう1台のノードだと次のよう

[root@centos7-104 ~]# corosync-cfgtool -s
Printing ring status.
Local node ID 2
RING ID 0
        id      = 192.168.1.104
        status  = ring 0 active with no faults

動作確認

いくつかのコマンドで動作を確認してみます。

[root@centos7-100 ~]# ps aux(一部抜粋)
root      2266  0.1  1.1 839708 44424 ?        Ssl  16:21   0:01 /usr/bin/ruby /usr/lib/pcsd/pcsd >
root      2616  1.2  2.4 195240 94940 ?        SLsl 16:34   0:03 corosync
root      2623  0.0  0.1 106276  7192 ?        Ss   16:34   0:00 /usr/sbin/pacemakerd -f
haclust+  2624  0.0  0.3 108456 14328 ?        Ss   16:34   0:00 /usr/libexec/pacemaker/cib
root      2625  0.0  0.1 109812  6164 ?        Ss   16:34   0:00 /usr/libexec/pacemaker/stonithd
root      2626  0.0  0.1  76620  3992 ?        Ss   16:34   0:00 /usr/libexec/pacemaker/lrmd
haclust+  2627  0.0  0.1 100212  6664 ?        Ss   16:34   0:00 /usr/libexec/pacemaker/attrd
haclust+  2628  0.0  0.5 118532 19840 ?        Ss   16:34   0:00 /usr/libexec/pacemaker/pengine
haclust+  2629  0.0  0.2 160000 10556 ?        Ss   16:34   0:00 /usr/libexec/pacemaker/crmd

[root@centos7-100 ~]# pcs status corosync

Membership information
----------------------
    Nodeid      Votes Name
         1          1 centos7-100 (local)
         2          1 centos7-104
         
[root@centos7-100 ~]# pcs status
Cluster name: vsample
WARNING: no stonith devices and stonith-enabled is not false
Stack: corosync
Current DC: centos7-100 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
Last updated: Mon Jan 22 16:41:46 2018
Last change: Mon Jan 22 16:34:33 2018 by hacluster via crmd on centos7-100

2 nodes configured
0 resources configured

Online: [ centos7-100 centos7-104 ]

No resources


Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

[root@centos7-100 ~]# corosync-cmapctl |grep members
runtime.totem.pg.mrp.srp.members.1.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.1.ip (str) = r(0) ip(192.168.1.100)
runtime.totem.pg.mrp.srp.members.1.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.1.status (str) = joined
runtime.totem.pg.mrp.srp.members.2.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.2.ip (str) = r(0) ip(192.168.1.104)
runtime.totem.pg.mrp.srp.members.2.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.2.status (str) = joined

WARNING: no stonith devices and stonith-enabled is not false

stonithのWARNINGが上がっているので確認したところ、Pacemakerではstonithを使用するようになっているが、stonithの設定がされていないからということのよう。まぁ当然か。

[root@centos7-100 ~]# crm_verify -L -V
   error: unpack_resources:     Resource start-up disabled since no STONITH resources have been defined
   error: unpack_resources:     Either configure some or disable STONITH with the stonith-enabled option
   error: unpack_resources:     NOTE: Clusters with shared data need STONITH to ensure data integrity
Errors found during check: config not valid

stonithは、Pacemakerがスプリットブレインを検知したときに強制的にH/Wを電源OFF/ONする機能です。今回はstonishを使用していないので、ここでは無効に設定します。

[root@centos7-100 ~]# pcs property set stonith-enabled=false
[root@centos7-100 ~]# crm_verify -L -V
[root@centos7-100 ~]#

ここまででクラスターの初期状態として動いていることは確認できました。

VIPリソースを追加

動作の確認も兼ねてpcs resource createコマンドでVIPリソースを追加します。
サンプルのコマンドの内容は次のようになっています。

  • リソースIDとしてVIP
  • リソースエージェントとしてocf:heartbeat:IPaddr2
  • VIPのIPアドレスとしてip=192.168.1.110
  • VIPのネットワーク設定としてcidr_netmask=24
  • 監視間隔としてop monitor interval=10s
# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.1.110 cidr_netmask=24 op monitor interval=10s --group WebServerGroup

–groupでグループを指定するとグループ内の起動順が設定できるようです。
少し時間が掛かりますが、状態を確認するとリソースが追加されています。

[root@centos7-100 ~]# pcs status
Cluster name: vsample
WARNING: no stonith devices and stonith-enabled is not false
Stack: corosync
Current DC: centos7-100 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
Last updated: Mon Jan 22 16:50:46 2018
Last change: Mon Jan 22 16:50:33 2018 by hacluster via crmd on centos7-100

2 nodes configured
1 resource configured

Online: [ centos7-100 centos7-104 ]

Full list of resources:

 Resource Group: WebServerGroup
     VIP        (ocf::heartbeat:IPaddr2):       Started centos7-100

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

[root@centos7-100 ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:f2:02:8e brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 83067sec preferred_lft 83067sec
    inet6 fe80::84a3:77fc:dc9a:4739/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:10:5d:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.100/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::381a:a67d:5de3:ff26/64 scope link
       valid_lft forever preferred_lft forever
4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:85:0c:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global enp0s9
       valid_lft forever preferred_lft forever
    inet 192.168.1.110/24 brd 192.168.1.255 scope global secondary enp0s9
       valid_lft forever preferred_lft forever
    inet6 fe80::eb4a:b4c:f25:3f6a/64 scope link
       valid_lft forever preferred_lft forever

リソースが動いていて、VIPに設定したIPアドレスが追加されていることが確認できます。

リソースがfailoverするかを確認してみます

VIPの設定のみですが、failoverするかを確認してみましょう。(実施タイミングが1日経過してしまっているのはご了承ください)
サーバをここでの説明はホスト名で記載しています。

  1. centos7-100でクラスターを停止します
  2. [root@centos7-100 ~]# pcs status
    Cluster name: vsample
    Stack: corosync
    Current DC: centos7-100 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
    Last updated: Wed Jan 24 09:57:24 2018
    Last change: Wed Jan 24 09:40:11 2018 by root via cibadmin on centos7-100
    
    2 nodes configured
    1 resource configured
    
    Online: [ centos7-100 centos7-104 ]
    
    Full list of resources:
    
     Resource Group: WebServerGroup
         VIP        (ocf::heartbeat:IPaddr2):       Started centos7-100
    
    Daemon Status:
      corosync: active/disabled
      pacemaker: active/disabled
      pcsd: active/enabled
    
    [root@centos7-100 ~]# pcs cluster stop centos7-100
    centos7-100: Stopping Cluster (pacemaker)...
    centos7-100: Stopping Cluster (corosync)...
    [root@centos7-100 ~]# pcs status
    Error: cluster is not currently running on this node
    
  3. centos7-104で状態を確認します
    failoverしてCurrentDCとリソースが移動していることが確認できます
  4. [root@centos7-104 ~]# pcs status
    Cluster name: vsample
    Stack: corosync
    Current DC: centos7-104 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
    Last updated: Wed Jan 24 10:08:00 2018
    Last change: Wed Jan 24 09:40:13 2018 by root via cibadmin on centos7-100
    
    2 nodes configured
    1 resource configured
    
    Online: [ centos7-104 ]
    OFFLINE: [ centos7-100 ]
    
    Full list of resources:
    
     Resource Group: WebServerGroup
         VIP        (ocf::heartbeat:IPaddr2):       Started centos7-104
    
    Daemon Status:
      corosync: active/disabled
      pacemaker: active/disabled
      pcsd: active/enabled
    
    [root@centos7-104 ~]# ip a
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host
           valid_lft forever preferred_lft forever
    2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:f1:ea:68 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
           valid_lft 83464sec preferred_lft 83464sec
        inet6 fe80::77cb:7259:13aa:e789/64 scope link
           valid_lft forever preferred_lft forever
    3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:7c:94:df brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.104/24 brd 192.168.56.255 scope global enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::6743:3662:2ab5:3fbf/64 scope link
           valid_lft forever preferred_lft forever
    4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:53:23:90 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.104/24 brd 192.168.1.255 scope global enp0s9
           valid_lft forever preferred_lft forever
        inet 192.168.1.110/24 brd 192.168.1.255 scope global secondary enp0s9
           valid_lft forever preferred_lft forever
        inet6 fe80::545:4118:42e3:1294/64 scope link
           valid_lft forever preferred_lft forever
    
  5. centos7-100でクラスターを開始します
    onlineになっていることを確認します
  6. [root@centos7-100 ~]# pcs cluster stop centos7-100
    centos7-100: Stopping Cluster (pacemaker)...
    centos7-100: Stopping Cluster (corosync)...
    [root@centos7-100 ~]# pcs status
    Error: cluster is not currently running on this node
    [root@centos7-100 ~]# pcs cluster start centos7-100
    centos7-100: Starting Cluster...
    [root@centos7-100 ~]# pcs status
    Cluster name: vsample
    Stack: corosync
    Current DC: centos7-104 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
    Last updated: Wed Jan 24 10:13:20 2018
    Last change: Wed Jan 24 09:40:13 2018 by root via cibadmin on centos7-100
    
    2 nodes configured
    1 resource configured
    
    Online: [ centos7-100 centos7-104 ]
    
    Full list of resources:
    
     Resource Group: WebServerGroup
         VIP        (ocf::heartbeat:IPaddr2):       Started centos7-104
    
    Daemon Status:
      corosync: active/disabled
      pacemaker: active/disabled
      pcsd: active/enabled
    

サーバを再起動しても動作すること

CurrentDCだったサーバがシャットダウンした際にfailoveすることを確認します。ここでは前段の状態からCurrentDC(centos7-104)をシャットダウンしています。シャットダウン後にfailoverが行われていることが確認できます。

[root@centos7-100 ~]# pcs status
Cluster name: vsample
Stack: corosync
Current DC: centos7-100 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
Last updated: Wed Jan 24 10:15:29 2018
Last change: Wed Jan 24 09:40:13 2018 by root via cibadmin on centos7-100

2 nodes configured
1 resource configured

Online: [ centos7-100 ]
OFFLINE: [ centos7-104 ]

Full list of resources:

 Resource Group: WebServerGroup
     VIP        (ocf::heartbeat:IPaddr2):       Started centos7-100

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled
  
[root@centos7-100 ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:f2:02:8e brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 81844sec preferred_lft 81844sec
    inet6 fe80::84a3:77fc:dc9a:4739/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:10:5d:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.100/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::381a:a67d:5de3:ff26/64 scope link
       valid_lft forever preferred_lft forever
4: enp0s9:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:85:0c:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global enp0s9
       valid_lft forever preferred_lft forever
    inet 192.168.1.110/24 brd 192.168.1.255 scope global secondary enp0s9
       valid_lft forever preferred_lft forever
    inet6 fe80::eb4a:b4c:f25:3f6a/64 scope link
       valid_lft forever preferred_lft forever

サーバを起動してみたらpacemakerが自動起動しない

私はpcsdを自動起動設定にしていましたが、pacemakerとcorosyncを自動起動する設定にしていませんでした。(この設定は両方のサーバで実施します)

[root@centos7-104 ~]# systemctl enable pacemaker
Created symlink from /etc/systemd/system/multi-user.target.wants/pacemaker.service to /usr/lib/systmd/system/pacemaker.service.
[root@centos7-104 ~]# systemctl enable corosync
Created symlink from /etc/systemd/system/multi-user.target.wants/corosync.service to /usr/lib/systed/system/corosync.service.

起動設定変更後にサーバを再起動してみます。

片側のサーバをシャットダウン状態
[root@centos7-100 ~]# pcs status
Cluster name: vsample
Stack: corosync
Current DC: centos7-100 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
Last updated: Wed Jan 24 10:32:19 2018
Last change: Wed Jan 24 09:40:13 2018 by root via cibadmin on centos7-100

2 nodes configured
1 resource configured

Online: [ centos7-100 ]
OFFLINE: [ centos7-104 ]

Full list of resources:

 Resource Group: WebServerGroup
     VIP        (ocf::heartbeat:IPaddr2):       Started centos7-100

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

シャットダウンしていたサーバを起動後
[root@centos7-100 ~]# pcs status
Cluster name: vsample
Stack: corosync
Current DC: centos7-100 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
Last updated: Wed Jan 24 10:35:52 2018
Last change: Wed Jan 24 09:40:13 2018 by root via cibadmin on centos7-100

2 nodes configured
1 resource configured

Online: [ centos7-100 centos7-104 ]

Full list of resources:

 Resource Group: WebServerGroup
     VIP        (ocf::heartbeat:IPaddr2):       Started centos7-100

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

自動起動して、両方のサーバがOnlineになっていることが確認できます。

リソースにHTTPDを設定してHTTPDを冗長化

HTTPDをリソースに追加して冗長化してみます。他にも方法があるかと思いますが、ここでは共有ディスクに/var/www以下のファイルを移動して/var/wwwに共有ディスクをマウントすることでWebサーバの冗長化を行います。

共有ディスクにデータを移動

事前に作成している共有ディスクにWebサーバのデータを移動します。ここでは/dev/sdb1が移動先になります。

  1. Webサーバのデータを移動する準備をします
  2. [root@centos7-100 ~]# cd /var/www/
    [root@centos7-100 www]# ls
    cgi-bin  html
    [root@centos7-100 www]# tar cvf /tmp/httpd.tar *
    cgi-bin/
    html/
    html/index.html
    html/css/
    html/css/basestyle.css
    html/css/reset.css
    html/css/._basestyle.css
    html/about_contents.html
    html/index2.html
    [root@centos7-100 www]# ls /tmp
    httpd.tar
    [root@centos7-100 www]# cd
    [root@centos7-100 ~]#
    
  3. 共有ディスクをフォーマットします
  4. [root@centos7-100 ~]# mkfs.ext4 /dev/sdb1
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=
    OS type: 
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    655360 inodes, 2620928 blocks
    131046 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=2151677952
    80 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    
  5. 共有ディスクをマウントします
  6. [root@centos7-100 ~]# mount -t ext4 /dev/sdb1 /var/www
    
  7. データを移動します
  8. [root@centos7-100 ~]# cp /tmp/httpd.tar /var/www/
    [root@centos7-100 ~]# ls /var/www/
    httpd.tar
    [root@centos7-100 ~]# tar xvf /tmp/httpd.tar
    cgi-bin/
    html/
    html/index.html
    html/css/
    html/css/basestyle.css
    html/css/reset.css
    html/css/._basestyle.css
    html/about_contents.html
    html/index2.html
    [root@centos7-100 ~]# ls /var/www/
    cgi-bin  html  httpd.tar
    
  9. Webサーバへのアクセスを確認します
  10. [root@centos7-100 ~]# systemctl status httpd
    ● httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
       Active: active (running) since 水 2018-01-24 09:01:42 JST; 2h 52min ago
         Docs: man:httpd(8)
               man:apachectl(8)
      Process: 18745 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
     Main PID: 991 (httpd)
       Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
       CGroup: /system.slice/httpd.service
               tq  991 /usr/sbin/httpd -DFOREGROUND
               tq18747 /usr/sbin/httpd -DFOREGROUND
               tq18748 /usr/sbin/httpd -DFOREGROUND
               tq18749 /usr/sbin/httpd -DFOREGROUND
               tq18750 /usr/sbin/httpd -DFOREGROUND
               mq18751 /usr/sbin/httpd -DFOREGROUND
    
     1月 24 09:01:42 centos7-100.vsample.com systemd[1]: Starting The Apache HTTP Server...
     1月 24 09:01:42 centos7-100.vsample.com systemd[1]: Started The Apache HTTP Server.
     1月 24 10:44:01 centos7-100.vsample.com systemd[1]: Reloaded The Apache HTTP Server.
    

    下記は判り難いかと思いますが、URLが異なるが表示している内容は同じもので、同じhtmlを表示しているということを言いたいものです。
    pacemaker-corosync-http03.jpg
    pacemaker-corosync-http01.jpg
    pacemaker-corosync-http02.jpg

Apacheのserver-status設定

/etc/httpd/conf.d/status.confを作成します。この設定はクラスターを構成するサーバすべてで実施します。

ExtendedStatus On


    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost

httpリソースに追加

クラスターリソースとしてHTTPDを追加します。この設定はいずれか1台のサーバで実施します。

[root@centos7-100 ~]# pcs resource create mnt_fs ocf:heartbeat:Filesystem device="/dev/sdb1" directory="/var/www" fstype="ext4" op monitor interval="20s" timeout="40s" op start interval="0" timeout="60s" op stop interval="0" timeout="60s" --group WebServerGroup

[root@centos7-100 ~]# pcs resource create httpd apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group WebServerGroup

[root@centos7-100 ~]# pcs status
Cluster name: vsample
Stack: corosync
Current DC: centos7-104 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
Last updated: Wed Jan 24 17:04:11 2018
Last change: Wed Jan 24 17:03:25 2018 by root via cibadmin on centos7-100

2 nodes configured
3 resources configured

Online: [ centos7-100 centos7-104 ]

Full list of resources:

 Resource Group: WebServerGroup
     VIP        (ocf::heartbeat:IPaddr2):       Started centos7-100
     mnt_fs     (ocf::heartbeat:Filesystem):    Started centos7-100
     httpd      (ocf::heartbeat:apache):        Started centos7-100

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

failoverの確認

その時点でリソースを保有しているサーバでpcsを停止してfailoverの確認をします。

[root@centos7-100 ~]# pcs cluster stop centos7-100
centos7-100: Stopping Cluster (pacemaker)...
centos7-100: Stopping Cluster (corosync)...
[root@centos7-100 ~]#
[root@centos7-104 ~]# pcs status
Cluster name: vsample
Stack: corosync
Current DC: centos7-104 (version 1.1.16-12.el7_4.5-94ff4df) - partition with quorum
Last updated: Wed Jan 24 17:11:21 2018
Last change: Wed Jan 24 17:03:24 2018 by root via cibadmin on centos7-100

2 nodes configured
3 resources configured

Online: [ centos7-104 ]
OFFLINE: [ centos7-100 ]

Full list of resources:

 Resource Group: WebServerGroup
     VIP        (ocf::heartbeat:IPaddr2):       Started centos7-104
     mnt_fs     (ocf::heartbeat:Filesystem):    Started centos7-104
     httpd      (ocf::heartbeat:apache):        Started centos7-104

Node Attributes:
* Node centos7-104:

Migration Summary:
* Node centos7-104:

リソースのfailoverとWebサイトへのアクセスを確認できました。今回は共有ディスクをLVMにしませんでしたが、共有ディスクの拡張性を考えるとLVMにしておいた方がいいでう。というのに後で気付きました。

スポンサーリンク
spdsk-side
spdsk-side