この章では、SUSE® Linux Enterprise High Availability Extension 12 を最初からインストールしてセットアップする方法について説明します。自動セットアップまたは手動セットアップから選択します。自動セットアップでは、クラスタを起動して数分で実行できます(後でオプションを調整する選択あり)。一方、手動セットアップでは、起動時に個々のオプションを設定できます。
旧バージョンのSUSE Linux Enterprise High Availability Extensionを実行するクラスタを移行する場合や、実行中のクラスタに属するノードでソフトウェアパッケージを更新する場合は、付録D クラスタアップグレードとソフトウェアパッケージの更新を参照してください。
この章では、次に定義されるいくつかの用語を使用します。
「既存のクラスタ」という用語は、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の場合、bindnetaddrは192.168.5.0に設定します。ローカルインタフェースが192.168.5.92でネットマスクが255.255.255.192の場合は、bindnetaddrを192.168.5.64に設定します。
すべてのノード上で同じCorosync設定が使用されるため、ネットワークアドレスは、特定のネットワークインタフェースのアドレスではなく、bindnetaddrとして使用します。
ネットワーク障害の一部または全体に対する災害耐性のために、複数の冗長ローカルエリアネットワークが使用できるようになります。この方法では、ひとつのネットワークが作動中である限り、クラスタ通信を維持できます。Corosyncはトーテム冗長リングプロトコルをサポートします。信頼できるソートされた方式でメッセージを配信するために、論理トークンパスリングがすべての参加ノードに課せられます。ノードがメッセージをブロードキャストできるのは、トークンを保持している場合のみです。詳細については、http://www.rcsc.de/pdf/icdcs02.pdfを参照してください。
Corosyncに定義済みの冗長通信チャネルを持つ場合、RRPを使用してこれらのインタフェースの使用方法をクラスタに伝えます。RRPでは次の3つのモードを使用できます(rrp_mode)。
activeに設定した場合、Corosyncは両方のインタフェースをアクティブに使用します。
passiveに設定した場合、Corosyncは代わりに使用可能なネットワークを介してメッセージを送信します。
noneに設定した場合、RRPは無効になります。
クラスタ内のすべてのノード、および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は、ユーザの介入なしで、1つ以上のSUSE Linux Enterpriseシステムを自動的にインストールするためのシステムです。SUSE Linux Enterpriseでは、インストールと設定のデータを含むAutoYaSTプロファイルを作成できます。このプロファイルによって、インストールする対象と、インストールしたシステムが最終的に使用準備が整ったシステムになるように設定する方法がAutoYaSTに指示されます。そこでこのプロファイルはさまざまな方法による大量配備に使用できます(たとえば、既存のクラスタノードのクローンなど)。
さまざまなシナリオでのAutoYaSTの使用手順については、『SUSE Linux Enterprise 12 導入ガイド』(http://www.suse.com/docから入手可能)を参照してください。特に、「Automated Installation」の章を参照してください。
次の基本手順は、インストールおよび最初のクラスタセットアップに必要です。
YaSTでソフトウェアパッケージをインストールします。または、コマンドラインzypperからインストールできます。
root #zypperin -t pattern ha_sles
クラスタの初期セットアップ:
クラスタの一部になるすべてのノードにソフトウェアをインストールした後、最初にクラスタを設定するために次の手順が必要です。
オプション: 認証設定の定義
すべてのノードへの設定の転送。Csync2の設定がノードでのみ行われるのに対して、サービスであるCsync2およびxinetdはすべてのノードで開始する必要があります。
オプション: クラスタノード間の接続ステータスの同期
クラスタをオンラインにする。Corosyncサービスはすべてのノード上で開始する必要があります。
クラスタセットアップの手順は、自動(ブートストラップスクリプトで)か、または手動(YaSTクラスタモジュールで、またはコマンドラインから)のいずれかで実行できます。
自動のクラスタセットアップを選択する場合は、3.4項 「自動のクラスタセットアップ(ha-cluster-bootstrap)」を参照してください。
手動のセットアップ(または自動セットアップ後のオプション調整)は、3.5項 「手動のクラスタセットアップ(YaST)」を参照してください。
たとえば、1つのノードをYaSTクラスタで設定してから、ha-cluster-joinを使用して他のノードを統合させるなど、両方のセットアップ方法を組み合わせることもできます。
既存のノードをAutoYaSTで大量展開するためにクローンを作成することもできます。クローンを作成したノードには、同じパッケージがインストールされ、クローンノードは同じシステム設定を持つことになります。詳細については、3.6項 「AutoYaSTによる大量展開」を参照してください。
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」の章を参照してください。
YaSTをrootユーザとして開始し、 › の順に選択します。
または、コマンドラインでyast2 sw_singleを使用して、YaSTモジュールをrootとして起動します。
リストで、を選択して、パターンリストでをアクティブにします。
]をクリックして、パッケージのインストールを開始します。
High Availabilityクラスタに必要なソフトウェアパッケージはクラスタノードに自動的にコピーされません。
クラスタの一部になるすべてのマシンにHigh Availabilityパターンをインストールします。
SUSE Linux Enterprise Server 12 とSUSE Linux Enterprise High Availability Extension 12を、クラスタの一部となるすべてのノードに手動でインストールしない場合は、AutoYaSTを使用して既存のノードにクローンを作成します。詳細については、3.6項 「AutoYaSTによる大量展開」を参照してください。
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/...)を通して共有ストレージを参照できる必要があります。
ha-cluster-initコマンドは、NTPの設定を確認し、クラスタ通信層(Corosync)の設定、および(オプションで) SBDの設定を支援して、共有ストレージを保護します。
また、-tオプションを使用してスクリプトを実行し、テンプレートに基づいて追加のクラスタ設定を実行できます。たとえば、ha-cluster-init -t ocfs2は、いくつかの共有ストレージを2つの部分に区分します(SBDには1MB、その残りをOCFS2になど)スクリプトの各機能、そのオプション、および作成および変更可能なファイルの概要については、ha-cluster-initのマニュアルページを参照してください。
クラスタノードとして使用したい物理または仮想マシンにrootとしてログインします。
実行によって、ブートストラップスクリプトを開始します
root #ha-cluster-init
NTPがブート時に開始するよう設定されていない場合、メッセージが表示されます。スクリプトはハードウェアウォッチドッグデバイス(SBDを設定する場合に重要)も確認し、何もない場合は警告します。
それでも継続を選択する場合、スクリプトは自動的にSSHアクセスおよびCsync2同期ツールのキーを生成し、両方に必要なサービスを開始します。
クラスタ通信層(Corosync)を設定するには、次のとおり実行します。
バインドするネットワークアドレスを入力します。デフォルトでは、スクリプトはeth0のネットワークアドレスを提案します。または、たとえばbond0のアドレスなど、別のネットワークアドレスを入力します。
マルチキャストアドレスを入力します。スクリプトはデフォルトとして使用できるランダムなアドレスを提案します。
マルチキャストポートを入力します。スクリプトはデフォルトとして5405を提案します。
SBDを設定するには(オプション)、SBDに使用したいブロックデバイスのパーティションに持続的なパスを入力します。パスはクラスタ内のすべてのノード全体で一致している必要があります。
最後に、スクリプトはPacemakerサービスを開始し、1ノードクラスタをオンラインにして、Web管理インタフェースHawkを有効にします。Hawkに使用するURLが画面に表示されます。
セットアッププロセスの詳細については、/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 #passwdhacluster
クラスタを(1つまたは複数のノードで)起動して実行する場合、ha-cluster-joinブートストラップスクリプトでさらにクラスタノードを追加します。スクリプトは既存のクラスタノードへのアクセスのみが必要で、ご使用のマシンで自動的に基本セットアップを完了します。次の手順に従います。詳細については、ha-cluster-joinマニュアルページを参照してください。
既存のクラスタノードをYaSTクラスタモジュールで設定した場合、ha-cluster-joinを実行する前に、次の前提条件が満たされていることを確認します。
既存のノードのrootユーザに、パスワードなしでログインするためのSSHキーが適切に設定されている。
Csync2が既存のノードに設定されている。詳細については、手順3.8「YaSTによるCsync2の設定」を参照してください。
Hawkによって最初のノードにログインしている場合、クラスタステータス内の変更に従い、Webインタフェース内でアクティブ化されるリソースを表示できます。
クラスタを参加させることになる物理または仮想マシンにrootとしてログインします。
実行によって、ブートストラップスクリプトを開始します。
root #ha-cluster-join
NTPがブート時に開始するよう設定されていない場合、メッセージが表示されます。スクリプトはハードウェアウォッチドッグデバイス(SBDを設定する場合に重要)も確認し、何もない場合は警告します。
それでも継続を選択する場合、既存のノードのIPアドレスが求められます。IPアドレスを入力します。
両方のマシン間にパスワードなしのSSHアクセスを設定していない場合、既存のノードのrootパスワードも求められます。
指定されたノードにログインした後、スクリプトはCorosync設定をコピーし、SSHおよびCsync2を設定して、新しいクラスタノードとしてご使用のマシンをオンラインにします。それとは別に、Hawkに必要なサービスを開始します。OCFS2で共有ストレージを設定した場合、OCFS2ファイルシステムへのマウントポイントディレクトリも自動的に作成します。
クラスタを追加したいすべてのマシンにこの手順を繰り返します。
プロセスの詳細については、/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」を参照してください。
(複数のノードで)クラスタを起動して実行している場合、ha-cluster-removeブートストラップスクリプトによって、クラスタから1つのノードを削除することができます。この場合、クラスタから削除するノードのIPアドレスまたはホスト名が必要です。次の手順に従います。詳細については、ha-cluster-removeマニュアルページを参照してください。
クラスタノードのいずれかにrootとしてログインします。
実行によって、ブートストラップスクリプトを開始します。
root #ha-cluster-remove-cIP_ADDR_OR_HOSTNAME
このスクリプトはsshdを有効にし、指定したノードのPacemakerサービスを停止させ、Csync2と同期化するためのファイルを残りのノードに伝播します。
ホスト名を指定していて、削除対象のノードにアクセスできない(またはホスト名が解決できない)場合、スクリプトによって通知が送信され、それでもノードを削除するかどうかを尋ねられます。IPアドレスを指定していて、ノードにアクセスできない場合は、ホスト名を入力するように求められ、それでもノードを削除するかどうかを尋ねられます。
ノードをさらに削除するには、前述の手順を繰り返します。
プロセスの詳細については、/var/log/ha-cluster-bootstrap.logを確認してください。
削除したノードを後で再度追加する必要が生じた場合は、ha-cluster-joinを使用して追加します。詳細については、手順3.3「既存のクラスタにノードを追加」を参照してください。
最初のセットアップに関するすべての手順の概要については、3.2項 「概要」を参照してください。
次のセクションでは、YaSTクラスタモジュールを使用して、セットアップの各手順を実行します。これにアクセスするには、YaSTをrootとして起動し、 › の順に選択します。または、コマンドラインyast2 clusterでモジュールを開始します。
初めてクラスタモジュールを起動した場合は、モジュールが、ウィザードのように、基本設定に必要なすべてのステップをガイドします。そうでない場合は、左パネルのカテゴリをクリックして、ステップごとに設定オプションにアクセスします。
YaSTクラスタモジュールが、ご使用のマシンでのクラスタ通信に必要なファイアウォールで自動的にポートを開きます。この設定は、/etc/sysconfig/SuSEfirewall2.d/services/clusterに書きこまれます。
YaSTクラスタモジュールのオプションには、現在のノードにしか適用しないものと、すべてのノードに自動的に移行できるものがあることにご注意ください。これについての詳しい情報は次のセクションを参照してください。
クラスタノード間で通信を正常に機能させるには、少なくとも1つの通信チャネルを定義します。
クラスタ通信は、2つ以上の冗長パスによって設定することを強く推奨します。これは次のように実行できます。
Corosync内の2つ目の通信チャネル。詳細については、手順3.6「冗長通信チャネルの定義」を参照してください。
可能であれば、ネットワークデバイスのボンディングを選択します。
クラスタノード間の通信には、マルチキャスト(UDP)またはユニキャスト(UDPU)のいずれかを使用します。
YaSTクラスタモジュール内で、カテゴリに切り替えます。
マルチキャストを使用するには、次のとおり実行します。
プロトコルをMulticastに設定します。
を定義します。クラスタマルチキャストに使用するサブネットに値を設定します。
を定義します。
を定義します。
上で入力した値で、クラスタの通信チャネルを1つ定義したことになります。マルチキャストモードでは、すべてのクラスタノードに対して同じbindnetaddr、mcastaddr、mcastportが使用されます。クラスタ内のすべてのノードは同じマルチキャストアドレスを使用することで互いを認識します。別のクラスタは、別のマルチキャストアドレスを使用します。
ユニキャストを使用するには、次のとおり実行します。
プロトコルをUnicastに設定します。
を定義します。クラスタユニキャストに使用するサブネットに値を設定します。
を定義します。
ユニキャスト通信では、Corosyncはクラスタ内のすべてのノードのIPアドレスを認識する必要があります。クラスタの一部になる各ノードで、をクリックし、次の詳細を入力します。
(Corosyncで2つ目の通信チャネルを使用する場合にのみ必要)
(オプションが無効になっている場合にのみ必要)
クラスタメンバーのアドレスを変更または削除するには、またはボタンを使用します。
オプションはデフォルトで有効になっています。IPv4アドレスを使用している場合は、ノードIDはオプションですが、IPv6アドレスを使用している場合は必須です。各クラスタノードで固有のIDを自動生成するには(各ノードでIDを手動で指定するよりもエラーの発生が少ない)、このオプションを有効のままにします。
を定義します。
の数を入力します。これは、パーティションされたクラスタでCorosyncがクォーラムを計算する場合に重要です。デフォルトでは、各ノードには1票が割り当てられています。の数は、クラスタ内のノード数と一致する必要があります。
既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTが設定を/etc/corosync/corosync.confに書き込みます。
必要な場合は、2つ目の通信チャネルを次で説明されるとおり定義します。またはをクリックして、手順3.7「安全な認証を有効にする」で続行します。
ネットワークデバイスボンディングが何らかの理由で使用できない場合、第2の選択は、Corosyncに冗長通信チャネル(2つ目のリング)を定義することです。この方法では、2つの物理的に分かれたネットワークが通信に使用できます。1つのネットワークが失敗しても、クラスタノードは、もう一方のネットワークを介して通信できます。
/etc/hosts
複数のリングが設定されている場合は、各ノードが複数のIPアドレスを持つことができます。これはすべてのノードの/etc/hostsに反映する必要があります。
YaSTクラスタモジュール内で、カテゴリに切り替えます。
を有効にします。冗長チャネルは、定義した最初の通信チャネルと同じプロトコルを使用する必要があります。
マルチキャストを使用する場合、、、およびを冗長チャネル用に定義します。
ユニキャストを使用する場合、を定義し、クラスタの一部になるすべてのノードのIPアドレスを入力します。
これで、Corosyncに、2つ目のトークンパスリングを形成する追加の通信チャネルを定義したことになります。/etc/corosync/corosync.confで、プライマリリング(設定した最初のチャネル)にはringnumber 0が設定され、2つ目のリング(冗長チャネル)にはringnumber 1が設定されます。
Corosyncに、異なるチャネルを使用する方法とタイミングを伝えるには、使用したい(activeまたはpassive)を選択します。このモードに関する詳細については、冗長リングプロトコル(RRP)を参照するか、をクリックしてください。RRPが使用されるとただちに、デフォルトでは、ノード間の通信に、(TCPの代わりに)SCTP (Stream Control Transmission Protocol)が使用されます。High Availability Extensionは現在のリングステータスを監視し、不具合が起きたら冗長リングを自動的に再有効化します。または、corosync-cfgtoolによって、リングステータスを手動で確認することもできます。使用可能なオプションは-hで参照できます。
通信チャネルが1つだけ定義されている場合、が自動的に無効化されます(値なし)。
既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTが設定を/etc/corosync/corosync.confに書き込みます。
クラスタ設定を先に進めるには、をクリックして、3.5.3項 「認証設定の定義」で続行します。
/etc/corosync/corosync.conf.exampleで、UDPセットアップ用にファイル例を見つけます。UDPセットアップの例は/etc/corosync/corosync.conf.example.udpuで参照できます。
次のステップでは、クラスタの認証設定を定義します。共有シークレットが必要なHMAC/SHA1認証を使用して、メッセージを保護し、認証することができます。指定した認証キー(パスワード)が、クラスタ中のすべてのノードで使用されます。
YaSTクラスタモジュール内で、カテゴリに切り替えます。
をオンにします。
新しく作成したクラスタの場合は、をクリックします。認証キーが作成され、/etc/corosync/authkeyに書き込まれます。
ご使用のマシンを既存のクラスタに参加させたい場合、新しいキーファイルは生成しないでください。代わりに、いずれかのノードから/etc/corosync/authkeyを(手動またはCsync2によって)ご使用のマシンにコピーします。
既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTが設定を/etc/corosync/corosync.confに書き込みます。
クラスタ設定を先に進めるには、をクリックして、3.5.4項 「すべてのノードへの設定の転送」で続行します。
結果として生成された設定ファイルをすべてのノードに手動でコピーする代わりに、csync2ツールを使用して、クラスタ内のすべてのノードにレプリケートします。
これには、次の基本手順を必要とします。
Csync2では、設定変更を追跡して、クラスタノード間でファイルの同期を取ることができます。
操作に対して重要なファイルのリストを定義できます。
(他のクラスタノードに対して)これらのファイルの変更を表示できます。
1つのコマンドで複数の設定済みファイルの同期を取ることができます。
~/.bash_logoutの単純なシェルスクリプトを使用して、システムからログアウトする前に、同期化されていない変更について通知できます。
Csync2の詳細については、http://oss.linbit.com/csync2/とhttp://oss.linbit.com/csync2/paper.pdfにアクセスしてください。
YaSTクラスタモジュール内で、カテゴリに切り替えます。
同期グループを指定するには、グループでをクリックし、クラスタ内のすべてのノードのローカルホスト名を入力します。ノードごとに、hostnameコマンドから返された文字列を正確に使用する必要があります。
ホスト名解決がネットワークで正しく機能しない場合は、各クラスタノードのホスト名とIPアドレスの組み合わせを指定することもできます。この指定には、HOSTNAME@IP文字列(たとえば、alice@192.168.2.100)を使用します。Csync2は、接続時にIPアドレスを使用します。
をクリックして、同期グループのキーファイルを生成します。キーファイルは、/etc/csync2/key_hagroupに書き込まれます。このファイルは、作成後に、クラスタのすべてのメンバーに手動でコピーする必要があります。
すべてのノード間で、通常、同期される必要のあるファイルをリストに入れるには、をクリックします。
同期するファイルのリストからファイルを、、またはする場合は、該当する各ボタンを使用します。ファイルごとに絶対パス名を入力する必要があります。
をクリックして、Csync2をアクティブにします。これによって次のコマンドが実行され、ブート時にCsync2が自動的に起動します。
root #systemctlenable csync2.socket
既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。YaSTがCsync2の設定内容を/etc/csync2/csync2.cfgに書き込みます。ここで同期プロセスを開始するには、手順3.9「Csync2による設定ファイルの同期」で続行します。
クラスタ設定を先に進めるには、をクリックして、3.5.5項 「クラスタノード間の接続ステータスの同期」で続行します。
Csync2でファイルを正常に同期するには、次の前提条件を満たしておく必要があります。
同じCsync2設定をすべてのノードで使用できる必要があります。ファイル/etc/csync2/csync2.cfgを、手順3.8「YaSTによるCsync2の設定」で説明されるとおりに設定した後、すべてのノードに手動でコピーします。このファイルはCsync2で同期されるファイルのリストに含めることを推奨します。
ステップ 3の1つのノードで作成した/etc/csync2/key_hagroupファイルを、クラスタ内のすべてのノードにコピーしてください。このファイルは、Csync2による認証で必要になります。ただし、すべてのノードで同じファイルでなければならないので、他のノードではファイルを再生成しないでください。
Csync2およびxinetdの両方がすべてのノード上で実行している必要があります。
すべてのノード上で次のコマンドを実行し、両サービスをブート時に自動的に開始させ、すぐにxinetdを起動させます。
root #systemctlenable csync2.socketroot #systemctlenable xinetd.serviceroot #systemctlstart xinetd.service
設定をコピーしたいノードから、次のコマンドを実行します。
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.
現在のノードのファイルバージョンが「最良」だと確信する場合は、そのファイルを強制して再同期を行い、競合を解決できます。
root #csync2-f/etc/corosync/corosync.confcsync2-x
Csync2オプションの詳細については、csync2 を実行してください。
-help
Csync2は変更のみをプッシュします。ノード間のファイルを絶えず同期しているわけではありません。
同期が必要なファイルを更新する際はいつも、変更を加えたノード上でcsync2 を実行することで、変更をその他のノードにプッシュする必要があります。変更されていないファイルを持つその他のノード上でこのコマンドを実行しても、何も起こりません。
-xv
iptablesでステートフルなパケットインスペクションを有効にするには、次の基本手順に従ってconntrackツールを設定、使用します。
conntrackd (クラス: ocf、プロバイダ: heartbeat)のリソースの設定。Hawkを使用する場合、Hawkによって提案されるデフォルト値を使用します。
conntrackツールを設定したら、これをLinux Virtual Serverで使用できます。負荷バランスを参照してください。
conntrackdの設定 #
YaSTクラスタモジュールを使用して、ユーザスペースconntrackdを設定します。これには、その他の通信チャネルに使用されていない専用のネットワークインタフェースが必要です。デーモンは後でリソースエージェントによって起動できます。
YaSTクラスタモジュール内で、カテゴリに切り替えます。
を選択して、接続ステータスを同期します。選択したインタフェースのIPv4アドレスが自動的に検出され、YaSTに表示されます。これはすでに設定済みで、マルチキャストをサポートしている必要があります。
接続ステータスの同期に使用するを定義します。
で、接続ステータスを同期させるグループのID番号を定義します。
をクリックして、conntrackdの設定ファイルを作成します。
既存のクラスタでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。
クラスタ設定を先に進めるには、をクリックして、3.5.6項 「サービスの設定」で続行します。
conntrackd #YaSTクラスタモジュールは、ブート時にノード上で一定のサービスを開始するかどうか定義します。サービスを手動で開始または停止するためにモジュールを使用することもできます。クラスタノードをオンラインにし、クラスタリソースマネージャを起動するには、Pacemakerをサービスとして実行する必要があります。
YaSTクラスタモジュール内で、カテゴリに切り替えます。
このクラスタノードがブートするたびにPacemakerを起動するには、グループで該当するオプションを選択します。グループで、を選択する場合は、このノードがブートするたびに手動でPacemakerを起動する必要があります。Pacemakerを手動で起動するには、次のコマンドを使用します。
root #systemctlstart pacemaker.service
Pacemakerをただちに起動または停止するには、それぞれのボタンをクリックします。
既存のクラスタノードでオプションを変更した場合、変更を確認して、クラスタモジュールを終了します。この設定は、すべてのクラスタノードではなく、ご使用のマシンにのみ適用されることにご注意ください。
YaSTクラスタモジュールでのみ最初のクラスタセットアップを完了している場合、ここで基本的な設定手順が完了したことになります。3.5.7項 「クラスタをオンラインにする」に従って手順を進めます。
最初のクラスタ設定が完了した後、各クラスタノード上でPacemakerサービスを開始し、スタックをオンラインにします。
既存のノードにログインします。
サービスがすでに実行していることを確認します。
root #systemctlstatus pacemaker.service
実行されていない場合、Pacemakerをすぐに開始します。
root #systemctlstart pacemaker.service
それぞれのクラスタノードに対してこの手順を繰り返します。
ノードの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インタフェース)を参照してください。
既存ノードのクローンであるクラスタノードを展開する場合は、次の手順を使用できます。クローンしたノードには、同じパッケージがインストールされ、クローンノードは同じシステム設定を持つことになります。
このシナリオでは、同じハードウェア構成の一連のマシンにSUSE Linux Enterprise High Availability Extension 12が展開されていることが想定されています。
同じでないハードウェア上にクラスタノードを展開する必要がある場合は、『SUSE Linux Enterprise 12 導入ガイド』の「自動インストール」の章、セクション「ルールベースの自動インストール」を参照してください(http://www.suse.com/docから入手可能)。
クローンを作成するノードが正しくインストールされ、設定されていることを確認します。詳細については、3.3項 「アドオンとしてのインストール」、3.4項 「自動のクラスタセットアップ(ha-cluster-bootstrap)」、または3.5項 「手動のクラスタセットアップ(YaST)」をそれぞれ参照してください。
単純な大量インストールについては、『SUSE Linux Enterprise 12 導入ガイド』に概説された内容に従ってください。これには、次の基本ステップがあります。
AutoYaSTプロファイルの作成AutoYaST GUIを使用して、既存のシステム設定をもとにプロファイルを作成し、変更します。AutoYaSTでは、モジュールを選択し、ボタンをクリックします。必要な場合は、他のモジュールの設定を調整し、その結果のコントロールファイルをXMLとして保存します。
DRBDを設定した場合、AutoYaST GUIでこのモジュールを選択してクローンを作成することもできます。
AutoYaSTプロファイルのソースと、他のノードのインストールルーチンに渡すパラメータを決定します。
SUSE Linux Enterprise ServerのソースとSUSE Linux Enterprise High Availability Extensionインストールデータを決定します。
自動インストールのブートシナリオを決定し、設定します。
パラメータを手動で追加するか、またはinfoファイルを作成することにより、インストールルーチンにコマンド行を渡します。
自動インストールプロセスを開始および監視します。
クローンのインストールに成功したら、次の手順を実行して、クローンノードをクラスタに加えます。
3.5.4項 「すべてのノードへの設定の転送」の説明に従って、Csync2を使用して、設定済みのノードからクローンノードへ重要な設定ファイルを転送します。
ノードをオンラインにするには、3.5.7項 「クラスタをオンラインにする」の説明のとおり、クローンノード上でPacemakerサービスを開始します。
これで、/etc/corosync/corosync.confファイルがCsync2を介してクローンノードに適用されたので、クローンノードがクラスタに加わります。CIBは、クラスタノード間で自動的に同期されます。