適用先 SUSE Linux Enterprise High Availability Extension 12

3 インストールと基本セットアップ

この章では、SUSE® Linux Enterprise High Availability Extension 12 を最初からインストールしてセットアップする方法について説明します。自動セットアップまたは手動セットアップから選択します。自動セットアップでは、クラスタを起動して数分で実行できます(後でオプションを調整する選択あり)。一方、手動セットアップでは、起動時に個々のオプションを設定できます。

旧バージョンのSUSE Linux Enterprise High Availability Extensionを実行するクラスタを移行する場合や、実行中のクラスタに属するノードでソフトウェアパッケージを更新する場合は、付録D クラスタアップグレードとソフトウェアパッケージの更新を参照してください。

3.1 用語の定義

この章では、次に定義されるいくつかの用語を使用します。

既存のクラスタ

既存のクラスタという用語は、1つ以上のノードで構成されるクラスタを指すものとして使用されます。既存のクラスタは、通信チャネルを定義する基本的なCorosync設定を持ちますが、必ずしもリソース設定を持つとは限りません。

マルチキャスト

ネットワーク内で一対多数の通信に使用される技術で、クラスタ通信に使用できます。Corosyncはマルチキャストとユニキャストの両方をサポートしています。マルチキャストが会社のITポリシーに準拠しない場合、代わりにユニキャストを使用します。

注記
注記: スイッチとマルチキャスト

クラスタ通信にマルチキャストを使用したい場合、ご使用のスイッチがマルチキャストをサポートしていることを確認します。

マルチキャストアドレス(mcastaddr)

Corosyncエグゼクティブによるマルチキャストに使用されるIPアドレス。このIPアドレスはIPv4またはIPv6のいずれかに設定できます。IPv6ネットワークを使用する場合は、ノードのIDを指定する必要があります。プライベートネットワークでは、どのようなマルチキャストアドレスでも使用できます。

マルチキャストポート(mcastport)

クラスタ通信に使用されるポート。Corosyncでは、マルチキャストの受信用に指定するmcastportと、マルチキャストの送信用のmcastport -1の、2つのポートを使用します。

ユニキャスト

ひとつのあて先ネットワークにメッセージを送信する技術Corosyncはマルチキャストとユニキャストの両方をサポートしています。Corosyncでは、ユニキャストはUDP-unicast (UDPU)として実装されます。

バインドネットワークアドレス(bindnetaddr)

Corosyncエグゼクティブのバインド先のネットワークアドレス。クラスタ間の設定ファイルの共有を簡素化するため、Corosyncはネットワークインタフェースネットマスクを使用して、ネットワークのルーティングに使用されるアドレスビットのみをマスクします。たとえば、ローカルインタフェースが192.168.5.92でネットマスクが255.255.255.0の場合、bindnetaddr192.168.5.0に設定します。ローカルインタフェースが192.168.5.92でネットマスクが255.255.255.192の場合は、bindnetaddr192.168.5.64に設定します。

注記
注記: すべてのノードのネットワークアドレス

すべてのノード上で同じCorosync設定が使用されるため、ネットワークアドレスは、特定のネットワークインタフェースのアドレスではなく、bindnetaddrとして使用します。

冗長リングプロトコル(RRP)

ネットワーク障害の一部または全体に対する災害耐性のために、複数の冗長ローカルエリアネットワークが使用できるようになります。この方法では、ひとつのネットワークが作動中である限り、クラスタ通信を維持できます。Corosyncはトーテム冗長リングプロトコルをサポートします。信頼できるソートされた方式でメッセージを配信するために、論理トークンパスリングがすべての参加ノードに課せられます。ノードがメッセージをブロードキャストできるのは、トークンを保持している場合のみです。詳細については、http://www.rcsc.de/pdf/icdcs02.pdfを参照してください。

Corosyncに定義済みの冗長通信チャネルを持つ場合、RRPを使用してこれらのインタフェースの使用方法をクラスタに伝えます。RRPでは次の3つのモードを使用できます(rrp_mode)。

  • activeに設定した場合、Corosyncは両方のインタフェースをアクティブに使用します。

  • passiveに設定した場合、Corosyncは代わりに使用可能なネットワークを介してメッセージを送信します。

  • noneに設定した場合、RRPは無効になります。

Csync2

クラスタ内のすべてのノード、およびGeoクラスタ全体に設定ファイルを複製するために使用できる同期ツールです。Csync2は、同期グループ別にソートされた任意の数のホストを操作できます。各同期グループは、メンバーホストの独自のリストとその包含/除外パターン(同期グループ内でどのファイルを同期するか定義するパターン)を持っています。グループ、各グループに属するホスト名、および各グループの包含/除外ルールは、Csync2設定ファイル/etc/csync2/csync2.cfgで指定されます。

Csync2は、認証には、同期グループ内でIPアドレスと事前共有キーを使用します。管理者は、同期グループごとに1つのキーファイルを生成し、そのファイルをすべてのグループメンバにコピーする必要があります。

Csync2の詳細については、http://oss.linbit.com/csync2/paper.pdfを参照してください。

conntrackツール

カーネル内の接続トラッキングシステムとやり取りできるようにして、iptablesでのステートフルなパケット検査を可能にします。High Availability Extensionによって、クラスタノード間の接続ステータスを同期化するために使用されます。詳細については、http://conntrack-tools.netfilter.org/を参照してください。

AutoYaST

AutoYaSTは、ユーザの介入なしで、1つ以上のSUSE Linux Enterpriseシステムを自動的にインストールするためのシステムです。SUSE Linux Enterpriseでは、インストールと設定のデータを含むAutoYaSTプロファイルを作成できます。このプロファイルによって、インストールする対象と、インストールしたシステムが最終的に使用準備が整ったシステムになるように設定する方法がAutoYaSTに指示されます。そこでこのプロファイルはさまざまな方法による大量配備に使用できます(たとえば、既存のクラスタノードのクローンなど)。

さまざまなシナリオでのAutoYaSTの使用手順については、『SUSE Linux Enterprise 12 導入ガイド』(http://www.suse.com/docから入手可能)を参照してください。特に、「Automated Installation」の章を参照してください。

3.2 概要

次の基本手順は、インストールおよび最初のクラスタセットアップに必要です。

  1. アドオンとしてのインストール:

    YaSTでソフトウェアパッケージをインストールします。または、コマンドラインzypperからインストールできます。

    root # zypper in -t pattern ha_sles
  2. クラスタの初期セットアップ:

    クラスタの一部になるすべてのノードにソフトウェアをインストールした後、最初にクラスタを設定するために次の手順が必要です。

    1. 通信チャネルの定義

    2. オプション: 認証設定の定義

    3. すべてのノードへの設定の転送。Csync2の設定がノードでのみ行われるのに対して、サービスであるCsync2およびxinetdはすべてのノードで開始する必要があります。

    4. オプション: クラスタノード間の接続ステータスの同期

    5. サービスの設定

    6. クラスタをオンラインにする。Corosyncサービスはすべてのノード上で開始する必要があります。

クラスタセットアップの手順は、自動(ブートストラップスクリプトで)か、または手動(YaSTクラスタモジュールで、またはコマンドラインから)のいずれかで実行できます。

たとえば、1つのノードをYaSTクラスタで設定してから、ha-cluster-joinを使用して他のノードを統合させるなど、両方のセットアップ方法を組み合わせることもできます。

既存のノードをAutoYaSTで大量展開するためにクローンを作成することもできます。クローンを作成したノードには、同じパッケージがインストールされ、クローンノードは同じシステム設定を持つことになります。詳細については、3.6項 「AutoYaSTによる大量展開」を参照してください。

3.3 アドオンとしてのインストール

High Availability Extensionによるクラスタの設定と管理に必要なパッケージは、High Availabilityインストールパターンに含まれています。このパターンは、SUSE Linux Enterprise High Availability ExtensionがアドオンとしてSUSE® Linux Enterprise Serverにインストールされている場合のみ使用できます。アドオン製品のインストール方法については、『SUSE Linux Enterprise 12 導入ガイド』(http://www.suse.com/docから入手可能)を参照してください。特に、「Installing Add-On Products」の章を参照してください。

手順 3.1 高可用性パターンのインストール
  1. YaSTをrootユーザとして開始し、ソフトウェア › ソフトウェア管理の順に選択します。

    または、コマンドラインでyast2 sw_singleを使用して、YaSTモジュールをrootとして起動します。

  2. フィルタリストで、パターンを選択して、パターンリストで高可用性をアクティブにします。

  3. 同意する ]をクリックして、パッケージのインストールを開始します。

    注記
    注記: すべてのパーティへのソフトウェアパッケージのインストール

    High Availabilityクラスタに必要なソフトウェアパッケージはクラスタノードに自動的にコピーされません。

  4. クラスタの一部になるすべてのマシンにHigh Availabilityパターンをインストールします。

    SUSE Linux Enterprise Server 12 SUSE Linux Enterprise High Availability Extension 12を、クラスタの一部となるすべてのノードに手動でインストールしない場合は、AutoYaSTを使用して既存のノードにクローンを作成します。詳細については、3.6項 「AutoYaSTによる大量展開」を参照してください。

3.4 自動のクラスタセットアップ(ha-cluster-bootstrap)

ha-cluster-bootstrapパッケージは、1ノードクラスタを起動して実行させ、他のノードを追加し、既存のクラスタからノードを削除するために必要なすべての機能を提供します。

最初のノードの自動設定

ha-cluster-initによって、クラスタ通信および(オプションで) STONITHメカニズムの設定に必要な基本パラメータを定義し、共有ストレージを保護します。これによって1ノードクラスタの実行が可能になります。

既存のクラスタにノードを追加

ha-cluster-joinで、他のノードをクラスタに追加します。

既存のクラスタからのノードの削除

ha-cluster-removeで、クラスタからノードを削除します。

すべてのコマンドは、最低限の時間と手動介入しか必要のないブートストラップスクリプトを実行します。初期化して追加するブートストラップスクリプトが、クラスタ通信に必要なファイアウォールで自動的にポートを開きます。この設定は、/etc/sysconfig/SuSEfirewall2.d/services/clusterに書きこまれます。ブートストラッププロセス中に設定されたオプションは、YaSTクラスタモジュールで後で変更できます。

自動セットアップを開始する前に、クラスタに参加するすべてのノードで次の前提条件が満たされていることを確認します。

前提条件
  • 2.2項 「ソフトウェアの必要条件」および2.4項 「その他の要件と推奨事項」にリストされている前提条件が満たされていること。

  • ha-cluster-bootstrapパッケージがインストールされていること。

  • ネットワークがニーズに沿って設定されていること。たとえば、プライベートネットワークがクラスタ通信に使用可能であり、ネットワークデバイスのボンディングが設定されている。ボンディングに関する情報については、第10章 ネットワークデバイスボンディングを参照してください。

  • 共有ストレージにSBDを使用したい場合は、SBD用の共有ブロックデバイスが1つ必要です。ブロックデバイスはフォーマットする必要がありません。また、適切なハードウェアウォッチドッグデバイスが必要です。詳細については、第17章 ストレージ保護を参照してください。

  • すべてのノードは、同じパス(/dev/disk/by-path/...または/dev/disk/by-id/...)を通して共有ストレージを参照できる必要があります。

手順 3.2 最初のノードの自動設定

ha-cluster-initコマンドは、NTPの設定を確認し、クラスタ通信層(Corosync)の設定、および(オプションで) SBDの設定を支援して、共有ストレージを保護します。

また、-tオプションを使用してスクリプトを実行し、テンプレートに基づいて追加のクラスタ設定を実行できます。たとえば、ha-cluster-init -t ocfs2は、いくつかの共有ストレージを2つの部分に区分します(SBDには1MB、その残りをOCFS2になど)スクリプトの各機能、そのオプション、および作成および変更可能なファイルの概要については、ha-cluster-initのマニュアルページを参照してください。

  1. クラスタノードとして使用したい物理または仮想マシンにrootとしてログインします。

  2. 実行によって、ブートストラップスクリプトを開始します

    root # ha-cluster-init

    NTPがブート時に開始するよう設定されていない場合、メッセージが表示されます。スクリプトはハードウェアウォッチドッグデバイス(SBDを設定する場合に重要)も確認し、何もない場合は警告します。

    それでも継続を選択する場合、スクリプトは自動的にSSHアクセスおよびCsync2同期ツールのキーを生成し、両方に必要なサービスを開始します。

  3. クラスタ通信層(Corosync)を設定するには、次のとおり実行します。

    1. バインドするネットワークアドレスを入力します。デフォルトでは、スクリプトはeth0のネットワークアドレスを提案します。または、たとえばbond0のアドレスなど、別のネットワークアドレスを入力します。

    2. マルチキャストアドレスを入力します。スクリプトはデフォルトとして使用できるランダムなアドレスを提案します。

    3. マルチキャストポートを入力します。スクリプトはデフォルトとして5405を提案します。

  4. SBDを設定するには(オプション)、SBDに使用したいブロックデバイスのパーティションに持続的なパスを入力します。パスはクラスタ内のすべてのノード全体で一致している必要があります。

    最後に、スクリプトはPacemakerサービスを開始し、1ノードクラスタをオンラインにして、Web管理インタフェースHawkを有効にします。Hawkに使用するURLが画面に表示されます。

  5. セットアッププロセスの詳細については、/var/log/ha-cluster-bootstrap.logを確認してください。

1ノードクラスタが実行するようになります。crm statusを使用してクラスタの状態を確認します。

root # crm status
   Last updated: Thu Jul  3 11:04:10 2014
   Last change: Thu Jul  3 10:58:43 2014
   Current DC: alice (175704363) - partition with quorum
   1 Nodes configured
   0 Resources configured
      
   Online: [ alice ]
重要
重要: セキュリティ保護されたパスワード

ブートストラップの手順で、Linuxユーザ名haclusterとパスワードlinuxを作成します。これは、Hawkにログインする際に必要です。デフォルトのパスワードはできるだけ早くセキュリティ保護されたパスワードに変更します。

root # passwd hacluster
手順 3.3 既存のクラスタにノードを追加

クラスタを(1つまたは複数のノードで)起動して実行する場合、ha-cluster-joinブートストラップスクリプトでさらにクラスタノードを追加します。スクリプトは既存のクラスタノードへのアクセスのみが必要で、ご使用のマシンで自動的に基本セットアップを完了します。次の手順に従います。詳細については、ha-cluster-joinマニュアルページを参照してください。

既存のクラスタノードをYaSTクラスタモジュールで設定した場合、ha-cluster-joinを実行する前に、次の前提条件が満たされていることを確認します。

  • 既存のノードのrootユーザに、パスワードなしでログインするためのSSHキーが適切に設定されている。

  • Csync2が既存のノードに設定されている。詳細については、手順3.8「YaSTによるCsync2の設定」を参照してください。

Hawkによって最初のノードにログインしている場合、クラスタステータス内の変更に従い、Webインタフェース内でアクティブ化されるリソースを表示できます。

  1. クラスタを参加させることになる物理または仮想マシンにrootとしてログインします。

  2. 実行によって、ブートストラップスクリプトを開始します。

    root # ha-cluster-join

    NTPがブート時に開始するよう設定されていない場合、メッセージが表示されます。スクリプトはハードウェアウォッチドッグデバイス(SBDを設定する場合に重要)も確認し、何もない場合は警告します。

  3. それでも継続を選択する場合、既存のノードのIPアドレスが求められます。IPアドレスを入力します。

  4. 両方のマシン間にパスワードなしのSSHアクセスを設定していない場合、既存のノードのrootパスワードも求められます。

    指定されたノードにログインした後、スクリプトはCorosync設定をコピーし、SSHおよびCsync2を設定して、新しいクラスタノードとしてご使用のマシンをオンラインにします。それとは別に、Hawkに必要なサービスを開始します。OCFS2で共有ストレージを設定した場合、OCFS2ファイルシステムへのマウントポイントディレクトリも自動的に作成します。

  5. クラスタを追加したいすべてのマシンにこの手順を繰り返します。

  6. プロセスの詳細については、/var/log/ha-cluster-bootstrap.logを確認してください。

crm statusを使用してクラスタの状態を確認します。2番目のノードを正常に追加した場合、出力は次のようになります。

root # crm status
   Last updated: Thu Jul  3 11:07:10 2014
   Last change: Thu Jul  3 10:58:43 2014
   Current DC: alice (175704363) - partition with quorum
   2 Nodes configured
   0 Resources configured
   
   Online: [ alice bob ]
重要
重要: no-quorum-policyの確認

すべてのノードを追加した後、グローバルクラスタオプションでno-quorum-policyの調整が必要であるかを確認します。これは特に2ノードクラスタで重要です。詳細については、4.1.2項 「オプションno-quorum-policyを参照してください。

手順 3.4 既存のクラスタからのノードの削除

(複数のノードで)クラスタを起動して実行している場合、ha-cluster-removeブートストラップスクリプトによって、クラスタから1つのノードを削除することができます。この場合、クラスタから削除するノードのIPアドレスまたはホスト名が必要です。次の手順に従います。詳細については、ha-cluster-removeマニュアルページを参照してください。

  1. クラスタノードのいずれかにrootとしてログインします。

  2. 実行によって、ブートストラップスクリプトを開始します。

    root # ha-cluster-remove -c IP_ADDR_OR_HOSTNAME

    このスクリプトはsshdを有効にし、指定したノードのPacemakerサービスを停止させ、Csync2と同期化するためのファイルを残りのノードに伝播します。

    ホスト名を指定していて、削除対象のノードにアクセスできない(またはホスト名が解決できない)場合、スクリプトによって通知が送信され、それでもノードを削除するかどうかを尋ねられます。IPアドレスを指定していて、ノードにアクセスできない場合は、ホスト名を入力するように求められ、それでもノードを削除するかどうかを尋ねられます。

  3. ノードをさらに削除するには、前述の手順を繰り返します。

  4. プロセスの詳細については、/var/log/ha-cluster-bootstrap.logを確認してください。

削除したノードを後で再度追加する必要が生じた場合は、ha-cluster-joinを使用して追加します。詳細については、手順3.3「既存のクラスタにノードを追加」を参照してください。

3.5 手動のクラスタセットアップ(YaST)

最初のセットアップに関するすべての手順の概要については、3.2項 「概要」を参照してください。

3.5.1 YaSTクラスタモジュール

次のセクションでは、YaSTクラスタモジュールを使用して、セットアップの各手順を実行します。これにアクセスするには、YaSTをrootとして起動し、高可用性 › クラスタの順に選択します。または、コマンドラインyast2 clusterでモジュールを開始します。

初めてクラスタモジュールを起動した場合は、モジュールが、ウィザードのように、基本設定に必要なすべてのステップをガイドします。そうでない場合は、左パネルのカテゴリをクリックして、ステップごとに設定オプションにアクセスします。

YaSTクラスタモジュール - 概要
図 3.1 YaSTクラスタモジュール - 概要

YaSTクラスタモジュールが、ご使用のマシンでのクラスタ通信に必要なファイアウォールで自動的にポートを開きます。この設定は、/etc/sysconfig/SuSEfirewall2.d/services/clusterに書きこまれます。

YaSTクラスタモジュールのオプションには、現在のノードにしか適用しないものと、すべてのノードに自動的に移行できるものがあることにご注意ください。これについての詳しい情報は次のセクションを参照してください。

3.5.2 通信チャネルの定義

クラスタノード間で通信を正常に機能させるには、少なくとも1つの通信チャネルを定義します。

重要
重要: 冗長通信パス

クラスタ通信は、2つ以上の冗長パスによって設定することを強く推奨します。これは次のように実行できます。

可能であれば、ネットワークデバイスのボンディングを選択します。

手順 3.5 最初の通信チャネルの定義

クラスタノード間の通信には、マルチキャスト(UDP)またはユニキャスト(UDPU)のいずれかを使用します。

  1. YaSTクラスタモジュール内で、通信チャネルカテゴリに切り替えます。

  2. マルチキャストを使用するには、次のとおり実行します。

    1. 転送プロトコルをMulticastに設定します。

    2. バインドネットワークアドレスを定義します。クラスタマルチキャストに使用するサブネットに値を設定します。

    3. マルチキャストアドレスを定義します。

    4. マルチキャストポートを定義します。

      上で入力した値で、クラスタの通信チャネルを1つ定義したことになります。マルチキャストモードでは、すべてのクラスタノードに対して同じbindnetaddrmcastaddrmcastportが使用されます。クラスタ内のすべてのノードは同じマルチキャストアドレスを使用することで互いを認識します。別のクラスタは、別のマルチキャストアドレスを使用します。

      YaSTクラスタ - マルチキャスト設定
      図 3.2 YaSTクラスタ - マルチキャスト設定
  3. ユニキャストを使用するには、次のとおり実行します。

    1. 転送プロトコルをUnicastに設定します。

    2. バインドネットワークアドレスを定義します。クラスタユニキャストに使用するサブネットに値を設定します。

    3. マルチキャストポートを定義します。

    4. ユニキャスト通信では、Corosyncはクラスタ内のすべてのノードのIPアドレスを認識する必要があります。クラスタの一部になる各ノードで、追加をクリックし、次の詳細を入力します。

      • IPアドレス

      • 冗長IPアドレス(Corosyncで2つ目の通信チャネルを使用する場合にのみ必要)

      • ノードID (ノードIDの自動生成オプションが無効になっている場合にのみ必要)

      クラスタメンバーのアドレスを変更または削除するには、編集または削除ボタンを使用します。

      YaSTクラスタ - ユニキャスト設定
      図 3.3 YaSTクラスタ - ユニキャスト設定
  4. ノードIDの自動生成オプションはデフォルトで有効になっています。IPv4アドレスを使用している場合は、ノードIDはオプションですが、IPv6アドレスを使用している場合は必須です。各クラスタノードで固有のIDを自動生成するには(各ノードでIDを手動で指定するよりもエラーの発生が少ない)、このオプションを有効のままにします。

  5. クラスタ名を定義します。

  6. 予想票数の数を入力します。これは、パーティションされたクラスタでCorosyncがクォーラムを計算する場合に重要です。デフォルトでは、各ノードには1票が割り当てられています。予想票数の数は、クラスタ内のノード数と一致する必要があります。

  7. 既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTが設定を/etc/corosync/corosync.confに書き込みます。

  8. 必要な場合は、2つ目の通信チャネルを次で説明されるとおり定義します。または次へをクリックして、手順3.7「安全な認証を有効にする」で続行します。

手順 3.6 冗長通信チャネルの定義

ネットワークデバイスボンディングが何らかの理由で使用できない場合、第2の選択は、Corosyncに冗長通信チャネル(2つ目のリング)を定義することです。この方法では、2つの物理的に分かれたネットワークが通信に使用できます。1つのネットワークが失敗しても、クラスタノードは、もう一方のネットワークを介して通信できます。

重要
重要: 冗長リングおよび/etc/hosts

複数のリングが設定されている場合は、各ノードが複数のIPアドレスを持つことができます。これはすべてのノードの/etc/hostsに反映する必要があります。

  1. YaSTクラスタモジュール内で、通信チャネルカテゴリに切り替えます。

  2. 冗長チャネルを有効にします。冗長チャネルは、定義した最初の通信チャネルと同じプロトコルを使用する必要があります。

  3. マルチキャストを使用する場合、バインドネットワークアドレスマルチキャストアドレス、およびマルチキャストポートを冗長チャネル用に定義します。

    ユニキャストを使用する場合、バインドネットワークアドレスマルチキャストポートを定義し、クラスタの一部になるすべてのノードのIPアドレスを入力します。

    これで、Corosyncに、2つ目のトークンパスリングを形成する追加の通信チャネルを定義したことになります。/etc/corosync/corosync.confで、プライマリリング(設定した最初のチャネル)にはringnumber 0が設定され、2つ目のリング(冗長チャネル)にはringnumber 1が設定されます。

  4. Corosyncに、異なるチャネルを使用する方法とタイミングを伝えるには、使用したいrrp_mode(activeまたはpassive)を選択します。このモードに関する詳細については、冗長リングプロトコル(RRP)を参照するか、ヘルプをクリックしてください。RRPが使用されるとただちに、デフォルトでは、ノード間の通信に、(TCPの代わりに)SCTP (Stream Control Transmission Protocol)が使用されます。High Availability Extensionは現在のリングステータスを監視し、不具合が起きたら冗長リングを自動的に再有効化します。または、corosync-cfgtoolによって、リングステータスを手動で確認することもできます。使用可能なオプションは-hで参照できます。

    通信チャネルが1つだけ定義されている場合、rrp-modeが自動的に無効化されます(値なし)。

  5. 既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTが設定を/etc/corosync/corosync.confに書き込みます。

  6. クラスタ設定を先に進めるには、次へをクリックして、3.5.3項 「認証設定の定義」で続行します。

/etc/corosync/corosync.conf.exampleで、UDPセットアップ用にファイル例を見つけます。UDPセットアップの例は/etc/corosync/corosync.conf.example.udpuで参照できます。

3.5.3 認証設定の定義

次のステップでは、クラスタの認証設定を定義します。共有シークレットが必要なHMAC/SHA1認証を使用して、メッセージを保護し、認証することができます。指定した認証キー(パスワード)が、クラスタ中のすべてのノードで使用されます。

手順 3.7 安全な認証を有効にする
  1. YaSTクラスタモジュール内で、Securityカテゴリに切り替えます。

  2. 安全認証の有効化をオンにします。

  3. 新しく作成したクラスタの場合は、認証キーファイルの生成をクリックします。認証キーが作成され、/etc/corosync/authkeyに書き込まれます。

    YaSTクラスタ - セキュリティ
    図 3.4 YaSTクラスタ - セキュリティ

    ご使用のマシンを既存のクラスタに参加させたい場合、新しいキーファイルは生成しないでください。代わりに、いずれかのノードから/etc/corosync/authkeyを(手動またはCsync2によって)ご使用のマシンにコピーします。

  4. 既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTが設定を/etc/corosync/corosync.confに書き込みます。

  5. クラスタ設定を先に進めるには、次へをクリックして、3.5.4項 「すべてのノードへの設定の転送」で続行します。

3.5.4 すべてのノードへの設定の転送

結果として生成された設定ファイルをすべてのノードに手動でコピーする代わりに、csync2ツールを使用して、クラスタ内のすべてのノードにレプリケートします。

これには、次の基本手順を必要とします。

Csync2では、設定変更を追跡して、クラスタノード間でファイルの同期を取ることができます。

  • 操作に対して重要なファイルのリストを定義できます。

  • (他のクラスタノードに対して)これらのファイルの変更を表示できます。

  • 1つのコマンドで複数の設定済みファイルの同期を取ることができます。

  • ~/.bash_logoutの単純なシェルスクリプトを使用して、システムからログアウトする前に、同期化されていない変更について通知できます。

Csync2の詳細については、http://oss.linbit.com/csync2/http://oss.linbit.com/csync2/paper.pdfにアクセスしてください。

手順 3.8 YaSTによるCsync2の設定
  1. YaSTクラスタモジュール内で、Csync2カテゴリに切り替えます。

  2. 同期グループを指定するには、同期ホストグループで追加をクリックし、クラスタ内のすべてのノードのローカルホスト名を入力します。ノードごとに、hostnameコマンドから返された文字列を正確に使用する必要があります。

    ヒント
    ヒント: ホスト名解決

    ホスト名解決がネットワークで正しく機能しない場合は、各クラスタノードのホスト名とIPアドレスの組み合わせを指定することもできます。この指定には、HOSTNAME@IP文字列(たとえば、alice@192.168.2.100)を使用します。Csync2は、接続時にIPアドレスを使用します。

  3. 事前共有キーの生成をクリックして、同期グループのキーファイルを生成します。キーファイルは、/etc/csync2/key_hagroupに書き込まれます。このファイルは、作成後に、クラスタのすべてのメンバーに手動でコピーする必要があります。

  4. すべてのノード間で、通常、同期される必要のあるファイルを同期ファイルリストに入れるには、推奨ファイルの追加をクリックします。

    YaSTクラスタ - Csync2
    図 3.5 YaSTクラスタ - Csync2
  5. 同期するファイルのリストからファイルを編集追加、または削除する場合は、該当する各ボタンを使用します。ファイルごとに絶対パス名を入力する必要があります。

  6. Csync2をオンにするをクリックして、Csync2をアクティブにします。これによって次のコマンドが実行され、ブート時にCsync2が自動的に起動します。

    root # systemctl enable csync2.socket
  7. 既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTがCsync2の設定内容を/etc/csync2/csync2.cfgに書き込みます。ここで同期プロセスを開始するには、手順3.9「Csync2による設定ファイルの同期」で続行します。

  8. クラスタ設定を先に進めるには、次へをクリックして、3.5.5項 「クラスタノード間の接続ステータスの同期」で続行します。

手順 3.9 Csync2による設定ファイルの同期

Csync2でファイルを正常に同期するには、次の前提条件を満たしておく必要があります。

  • 同じCsync2設定をすべてのノードで使用できる必要があります。ファイル/etc/csync2/csync2.cfgを、手順3.8「YaSTによるCsync2の設定」で説明されるとおりに設定した後、すべてのノードに手動でコピーします。このファイルはCsync2で同期されるファイルのリストに含めることを推奨します。

  • ステップ 3の1つのノードで作成した/etc/csync2/key_hagroupファイルを、クラスタ内のすべてのノードにコピーしてください。このファイルは、Csync2による認証で必要になります。ただし、すべてのノードで同じファイルでなければならないので、他のノードではファイルを再生成しないでください。

  • Csync2およびxinetdの両方がすべてのノード上で実行している必要があります。

    注記
    注記: ブート時にサービスを開始

    すべてのノード上で次のコマンドを実行し、両サービスをブート時に自動的に開始させ、すぐにxinetdを起動させます。

    root # systemctl enable csync2.socket
    root # systemctl enable xinetd.service
    root # systemctl start xinetd.service
  1. 設定をコピーしたいノードから、次のコマンドを実行します。

    root # csync2 -xv

    これによって、すべてのファイルをその他のノードにプッシュすることで、一度に同期を行います。すべてのファイルが正常に同期されると、Csync2がエラーなしで終了します。

    同期対象の1つ以上のファイルが(現在のノードだけでなく)他のノード上で変更されている場合は、Csync2から衝突が報告されます。次の出力とよく似た出力が表示されます。

    While syncing file /etc/corosync/corosync.conf:
    ERROR from peer hex-14: File is also marked dirty here!
    Finished with 1 errors.
  2. 現在のノードのファイルバージョンが最良だと確信する場合は、そのファイルを強制して再同期を行い、競合を解決できます。

    root # csync2 -f /etc/corosync/corosync.conf
    csync2 -x

Csync2オプションの詳細については、csync2 -helpを実行してください。

注記
注記: 変更後の同期のプッシュ

Csync2は変更のみをプッシュします。ノード間のファイルを絶えず同期しているわけではありません

同期が必要なファイルを更新する際はいつも、変更を加えたノード上でcsync2 -xvを実行することで、変更をその他のノードにプッシュする必要があります。変更されていないファイルを持つその他のノード上でこのコマンドを実行しても、何も起こりません。

3.5.5 クラスタノード間の接続ステータスの同期

iptablesでステートフルなパケットインスペクションを有効にするには、次の基本手順に従ってconntrackツールを設定、使用します。

  1. YaSTによるconntrackdの設定

  2. conntrackd (クラス: ocf、プロバイダ: heartbeat)のリソースの設定。Hawkを使用する場合、Hawkによって提案されるデフォルト値を使用します。

conntrackツールを設定したら、これをLinux Virtual Serverで使用できます。負荷バランスを参照してください。

手順 3.10 YaSTによるconntrackdの設定

YaSTクラスタモジュールを使用して、ユーザスペースconntrackdを設定します。これには、その他の通信チャネルに使用されていない専用のネットワークインタフェースが必要です。デーモンは後でリソースエージェントによって起動できます。

  1. YaSTクラスタモジュール内で、conntrackdの設定カテゴリに切り替えます。

  2. 専用インタフェースを選択して、接続ステータスを同期します。選択したインタフェースのIPv4アドレスが自動的に検出され、YaSTに表示されます。これはすでに設定済みで、マルチキャストをサポートしている必要があります。

  3. 接続ステータスの同期に使用するマルチキャストアドレスを定義します。

  4. グループ番号で、接続ステータスを同期させるグループのID番号を定義します。

  5. /etc/conntrackd/conntrackd.conf の生成をクリックして、conntrackdの設定ファイルを作成します。

  6. 既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。

  7. クラスタ設定を先に進めるには、次へをクリックして、3.5.6項 「サービスの設定」で続行します。

YaSTクラスタ - conntrackd
図 3.6 YaSTクラスタ - conntrackd

3.5.6 サービスの設定

YaSTクラスタモジュールは、ブート時にノード上で一定のサービスを開始するかどうか定義します。サービスを手動で開始または停止するためにモジュールを使用することもできます。クラスタノードをオンラインにし、クラスタリソースマネージャを起動するには、Pacemakerをサービスとして実行する必要があります。

手順 3.11 Pacemakerの有効化
  1. YaSTクラスタモジュール内で、サービスカテゴリに切り替えます。

  2. このクラスタノードがブートするたびにPacemakerを起動するには、ブートグループで該当するオプションを選択します。ブートグループで、オフを選択する場合は、このノードがブートするたびに手動でPacemakerを起動する必要があります。Pacemakerを手動で起動するには、次のコマンドを使用します。

    root # systemctl start pacemaker.service
  3. Pacemakerをただちに起動または停止するには、それぞれのボタンをクリックします。

  4. 既存のクラスタノードでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。この設定は、すべてのクラスタノードではなく、ご使用のマシンにのみ適用されることにご注意ください。

    YaSTクラスタモジュールでのみ最初のクラスタセットアップを完了している場合、ここで基本的な設定手順が完了したことになります。3.5.7項 「クラスタをオンラインにする」に従って手順を進めます。

    YaSTクラスタ - サービス
    図 3.7 YaSTクラスタ - サービス

3.5.7 クラスタをオンラインにする

最初のクラスタ設定が完了した後、各クラスタノード上でPacemakerサービスを開始し、スタックをオンラインにします。

手順 3.12 Pacemakerの開始とその状態の確認
  1. 既存のノードにログインします。

  2. サービスがすでに実行していることを確認します。

    root # systemctl status pacemaker.service

    実行されていない場合、Pacemakerをすぐに開始します。

    root # systemctl start pacemaker.service
  3. それぞれのクラスタノードに対してこの手順を繰り返します。

  4. ノードの1つで、crm statusコマンドを使用してクラスタの状態を確認します。すべてのノードがオンラインの場合、出力は次のようになります。

    root # crm status
          Last updated: Thu Jul  3 11:07:10 2014
          Last change: Thu Jul  3 10:58:43 2014
          Current DC: alice (175704363) - partition with quorum
          2 Nodes configured
          0 Resources configured
          
          Online: [ alice bob ]

    この出力は、クラスタリソースマネージャが起動し、リソースを管理できる状態にあることを示しています。

基本設定を完了し、ノードがオンラインになったら、クラスタリソースの設定を開始できます。crmシェル(crmsh)やHA Web Konsoleなどのクラスタ管理ツールのいずれかを使用します。詳細については、第6章 クラスタリソースの設定と管理(コマンドライン)または第5章 クラスタリソースの設定と管理(Webインタフェース)を参照してください。

3.6 AutoYaSTによる大量展開

既存ノードのクローンであるクラスタノードを展開する場合は、次の手順を使用できます。クローンしたノードには、同じパッケージがインストールされ、クローンノードは同じシステム設定を持つことになります。

手順 3.13 AutoYaSTによるクラスタノードのクローン作成
重要
重要: 同一のハードウェアを使用している環境

このシナリオでは、同じハードウェア構成の一連のマシンにSUSE Linux Enterprise High Availability Extension 12が展開されていることが想定されています。

同じでないハードウェア上にクラスタノードを展開する必要がある場合は、『SUSE Linux Enterprise 12 導入ガイド』の「自動インストール」の章、セクション「ルールベースの自動インストール」を参照してください(http://www.suse.com/docから入手可能)。

  1. クローンを作成するノードが正しくインストールされ、設定されていることを確認します。詳細については、3.3項 「アドオンとしてのインストール」3.4項 「自動のクラスタセットアップ(ha-cluster-bootstrap)」、または3.5項 「手動のクラスタセットアップ(YaST)」をそれぞれ参照してください。

  2. 単純な大量インストールについては、『SUSE Linux Enterprise 12 導入ガイド』に概説された内容に従ってください。これには、次の基本ステップがあります。

    1. AutoYaSTプロファイルの作成AutoYaST GUIを使用して、既存のシステム設定をもとにプロファイルを作成し、変更します。AutoYaSTでは、高可用性モジュールを選択し、クローンボタンをクリックします。必要な場合は、他のモジュールの設定を調整し、その結果のコントロールファイルをXMLとして保存します。

      DRBDを設定した場合、AutoYaST GUIでこのモジュールを選択してクローンを作成することもできます。

    2. AutoYaSTプロファイルのソースと、他のノードのインストールルーチンに渡すパラメータを決定します。

    3. SUSE Linux Enterprise ServerのソースとSUSE Linux Enterprise High Availability Extensionインストールデータを決定します。

    4. 自動インストールのブートシナリオを決定し、設定します。

    5. パラメータを手動で追加するか、またはinfoファイルを作成することにより、インストールルーチンにコマンド行を渡します。

    6. 自動インストールプロセスを開始および監視します。

クローンのインストールに成功したら、次の手順を実行して、クローンノードをクラスタに加えます。

手順 3.14 クローンノードをオンラインにする
  1. 3.5.4項 「すべてのノードへの設定の転送」の説明に従って、Csync2を使用して、設定済みのノードからクローンノードへ重要な設定ファイルを転送します。

  2. ノードをオンラインにするには、3.5.7項 「クラスタをオンラインにする」の説明のとおり、クローンノード上でPacemakerサービスを開始します。

これで、/etc/corosync/corosync.confファイルがCsync2を介してクローンノードに適用されたので、クローンノードがクラスタに加わります。CIBは、クラスタノード間で自動的に同期されます。

このページを印刷