現在位置: ホーム / OSSブログ / よろずブログ記事アーカイブ / [Archive] pacemaker + corosync で HA クラスタ構築

[Archive] pacemaker + corosync で HA クラスタ構築

旧OSSよろずブログより人気の高いコンテンツをArchiveとして公開します。

こんにちは、OSSテクノロジーセンターの稲垣です。

今回のブログでは、pacemaker と corosync を使用して HA クラスタを構築していきます。

Red Hat Enterprise Linux 6 系ではテクニカルプレビューですが、pacemaker と corosync が同梱されていますので、今回は Red Hat Enterprise Linux 6.4 を使用して環境を構築していきます。

ホスト名 pacemaker01 pacemaker02
IP アドレス 1 192.168.100.101 192.168.150.101
IP アドレス 2 192.168.100.102 192.168.150.102

方法は様々ありますが、今回は私が実際に確認した手順をご紹介していきます。

    1. インストール & セットアップ

      まずはパッケージのインストールです。

      今回は検証目的のため、事前に firewall を停止し、selinux を disabled にしています。

      本環境で使用したパッケージは RHEL6.4 の iso イメージに同梱されているものを使用していますが、この場合のインストール方法としては yum コマンドで iso イメージのマウント先を参照するようにすると簡単です。

      yum コマンドで iso イメージのマウント先を参照する場合は、/etc/yum.repos.d/ ディレクトリにリポジトリファイルを作成します。今回は例として media.repo としています。

      # vim /etc/yum.repos.d/media.repo
      
      [media]
      name=Base
      baseurl=file://[iso イメージのマウント先] (例 : /media/RHEL)
      enabled=1
      gpgcheck=0
      
      [media2]
      name=High Availability
      baseurl=file://[iso イメージのマウント先]/HighAvailability/
      enabled=1
      gpgcheck=0
      
      ※上記は記入例です。
      

      pacemaker などの HA パッケージを yum でインストールするためには、ベースパッケージ群となるリポジトリの他に、HA リポジトリが置いてあるディレクトリを指定しなければいけない点に注意してください。

      media.repo ファイルを作成したら、yum コマンドを実行してパッケージをインストールします。リソース制御を行う pacemaker、クラスタ制御を行う corosync、pacemaker をコマンドラインで操作する pcs を指定します。

      # yum install pacemaker corosync pcs
      
      [インストールパッケージ]
      pacemaker
      corosync
      pcs
      
      [依存関係でインストールされるパッケージ]
      cluster-glue-libs
      clusterlib
      corosynclib
      libibverbs
      libqb
      librdmacm
      pacemaker-cli
      pacemaker-cluster-libs
      pacemaker-libs
      perl-TimeDate
      resource-agents
      

      yum コマンドが正常に終了したら、無事にインストールは完了です。

      続いて、サービスを起動するために、設定ファイルを修正します。

      まずは、/etc/corosync/corosync.conf ファイルを作成します。

      以下では /etc/corosync/corosync.conf.sample ファイルを参考にしながら、編集していきます。

      # Please read the corosync.conf.5 manual page
      compatibility: whitetank
      
      totem {
              version: 2
              secauth: off
              threads: 0
              rrp_mode: active
              interface {
                      ringnumber: 0
                      bindnetaddr: 192.168.100.0
                      mcastaddr: 226.94.1.1
                      mcastport: 5405
                      ttl: 1
              }
              interface {
                      ringnumber: 1
                      bindnetaddr: 192.168.150.0
                      mcastaddr: 226.94.1.1
                      mcastport: 5405
                      ttl: 1
              }
      }
      
      logging {
              fileline: off
              to_stderr: no
              to_logfile: yes
              to_syslog: yes
              logfile: /var/log/cluster/corosync.log
              debug: off
              timestamp: on
              logger_subsys {
                      subsys: AMF
                      debug: off
              }
      }
      
      amf {
              mode: disabled
      }
      

      サンプルの設定から、以下の項目を追記・変更します。

      • rrp_mode: active を追記
      • bindnetaddr: 項目を自身の IP アドレス

      続いて、pacemaker と corosync を連携させるために、/etc/corosync/service.d/pcmk ファイルを新規作成し、内容を編集します。

      service {
              # Load the Pacemaker Cluster Resource Manager
              name: pacemaker
              ver:  1
      }
      

      これらの設定を行なったら、pacemaker と corosync を起動し、自動起動するようにしておきます。

      # service pacemaker start
      # service corosync start
      
      # chkconfig pacemaker on
      # chkconfig corosync on
      

      サービスを起動したら、crm_mon コマンドを使用してステータスを確認します。

      # crm_mon
      Last updated: Wed May  1 19:33:25 2013
      Last change: Thu Apr 25 20:10:00 2013 via crmd on pacemaker01
      Stack: classic openais (with plugin)
      Current DC: pacemaker02 - partition with quorum
      Version: 1.1.8-7.el6-394e906
      2 Nodes configured, 2 expected votes
      0 Resources configured.
      
      Online: [ pacemaker01 pacemaker02 ]
      

      両ノードがオンラインになっていることを確認します。

      なお、今回の環境では STONITH を使用しないため、以下のコマンドで無効にし、スプリットブレインが発生してもクォーラムが特別な動作を行わないように設定します。

      # pcs property set stonith-enabled=false
      # pcs property set no-quorum-policy=ignore
      

      さらに、以下のコマンドで自動フェイルバックなし、同一サーバでリソースの再起動を試みる回数を 1 回に設定します。

      # pcs resource rsc defaults resource-stickiness=INFINITY migration-threshold=1
      

      最後に、以下のコマンドで問題がないか確認します。

      # crm_verify -L
      

 

  1. 仮想 IP 作成

    以下のコマンドを使用して、仮想 IP を作成します。

    # pcs resource create VirtualIP1 ocf:heartbeat:IPaddr2 ip=192.168.100.105 cidr_netmask=24 op monitor interval=30s
    

    このコマンドでは、以下のような設定でリソースを作成しています。

    リソース名 VirtualIP1
    IP アドレス 192.168.100.105
    サブネットマスク 24
    監視感覚 30 秒

    crm_mon コマンドを使用して確認を行ないます。

    # crm_mon
    
    Last updated: Wed May  1 20:42:30 2013
    Last change: Wed May  1 20:27:57 2013 via cibadmin on pacemaker01
    Stack: classic openais (with plugin)
    Current DC: pacemaker02 - partition with quorum
    Version: 1.1.8-7.el6-394e906
    2 Nodes configured, 2 expected votes
    1 Resources configured.
    
    
    Online: [ pacemaker01 pacemaker02 ]
    
    VirtualIP1      (ocf::heartbeat:IPaddr2):       Started pacemaker01
    

    "Started pacemaker01" と表示されていることから、VirtualIP1 は pacemaker01 にて動作していることが確認できます。

    ping コマンドを使用して疎通確認を行います。

    # ping 192.168.100.105
    PING 192.168.100.105 (192.168.100.105) 56(84) bytes of data.
    64 bytes from 192.168.100.105: icmp_seq=1 ttl=64 time=0.019 ms
    64 bytes from 192.168.100.105: icmp_seq=2 ttl=64 time=0.027 ms
    64 bytes from 192.168.100.105: icmp_seq=3 ttl=64 time=0.020 ms
    ^C
    --- 192.168.100.105 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2250ms
    rtt min/avg/max/mdev = 0.019/0.022/0.027/0.003 ms
    

    これで、仮想 IP リソースの作成が完了し、疎通確認も行うことができました。

今回は以上となります。
次回は、仮想 IP リソースのフェイルオーバ確認と仮想 IP 以外のリソース作成を行なっていきたいと考えています。

タグ: ,
サイオスOSSよろず相談室

サイオスOSSよろず相談室(1)

問い合わせボタン