サーバー設定 · 2 min read · Dec 06, 2025

CentOS 7でPacemakerとCorosyncを使用してNginxの高可用性を設定する方法

このチュートリアルでは、Pacemaker、Corosync、およびPcsdを使用して、高可用性クラスタNginxウェブサーバーを作成する方法をステップバイステップでガイドします。CentOS 7システム上で、アクティブ-パッシブクラスタまたはフェイルオーバークラスタNginxウェブサーバーをPacemakerを使用して作成します。

Pacemakerは、サービスの最大高可用性を実現するオープンソースのクラスターマネージャーソフトウェアです。これは、ClusterLabsによって配布される高度でスケーラブルなHAクラスターマネージャーです。

Corosyncクラスタエンジンは、新しいBSDライセンスの下でOpenAISプロジェクトから派生したオープンソースプロジェクトです。これは、アプリケーション内で高可用性を実装するための追加機能を持つグループ通信システムです。

Pacemakerインターフェースにはいくつかのアプリケーションがあります。Pcsdは、Pacemakerを管理するためのPacemakerコマンドラインインターフェースおよびGUIの1つです。pcsdコマンドpcsを使用して、クラスタに新しいノードを作成、構成、または追加できます。

前提条件

  • 2台以上のCentOS 7サーバー - web01 10.0.15.10
  • web02 10.0.15.11
  • web03 10.0.15.12
  • フローティングIPアドレス 10.0.15.15
  • ルート権限

私たちが行うこと:

  1. ホストファイルをマッピングする
  2. EpelリポジトリとNginxをインストールする
  3. Pacemaker、Corosync、およびPcsdをインストールして構成する
  4. クラスタを作成して構成する
  5. STONITHを無効にし、クォーラムポリシーを無視する
  6. フローティングIPとリソースを追加する
  7. クラスタにルールを追加する
  8. Firewalldを構成する
  9. 設定をテストする

ステップ1 - ホストファイルをマッピングする

注意: ステップ1 - 3をすべてのサーバーweb01、web02、およびweb03で実行します。

最初のステップは、すべてのサーバーのホスト名をマッピングするために、各サーバーのホストファイルを編集することです。’web01’、’web02’、および’web03’サーバーがあるので、sshアカウントで各サーバーにログインします。

ssh root@web[01,02,03]

vimで’/etc/hosts’ファイルを編集します。

vim /etc/hosts

以下の構成をそこに貼り付けます。

10.0.15.10      web01  
10.0.15.11      web02  
10.0.15.12      web03

保存して終了します。

次に、ホストのマッピング構成をテストします。

ping -c 3 web01  
ping -c 3 web02  
ping -c 3 web03

‘web01’、’web02’、および’web03’が正しいIPアドレスにマッピングされていることを確認します。

pingでサーバーの相互接続を確認

ステップ2 - EpelリポジトリとNginxをインストールする

このステップでは、epelリポジトリをインストールし、その後Nginxウェブサーバーをインストールします。EPELまたはEnterprise Linux用の追加パッケージリポジトリは、Nginxパッケージをインストールするために必要です。

以下のyumコマンドを使用してEPELリポジトリをインストールします。

yum -y install epel-release

次に、EPELリポジトリからNginxウェブサーバーをインストールします。

yum -y install nginx

インストールが完了したら、各サーバーのデフォルトのindex.htmlページを新しいページに変更します。

# 'web01'でコマンドを実行

echo '

web01 - hakase-labs

' > /usr/share/nginx/html/index.html # 'web02'でコマンドを実行 echo '

web02 - hakase-labs

' > /usr/share/nginx/html/index.html # 'web03'でコマンドを実行 echo '

web03 - hakase-labs

' > /usr/share/nginx/html/index.html

epelリポジトリとnginxをインストール

EPELリポジトリとNginxウェブサーバーがシステムにインストールされました。

ステップ3 - Pacemaker、Corosync、およびPcsdをインストールして構成する

Pacemaker、Corosync、およびPcsdは、デフォルトのシステムリポジトリにあります。したがって、以下のyumコマンドを使用してCentOSリポジトリからすべてをインストールできます。

yum -y install corosync pacemaker pcs

インストールが完了したら、以下のsystemctlコマンドを使用して、すべてのサービスがシステム起動時に自動的に起動するようにします。

systemctl enable pcsd  
systemctl enable corosync  
systemctl enable pacemaker

次に、すべてのサーバーでpcsd Pacemakerコマンドラインインターフェースを起動します。

systemctl start pcsd

次に、’hacluster’ユーザーの新しいパスワードを作成し、すべてのサーバーで同じパスワードを使用します。このユーザーは、ソフトウェアのインストール中に自動的に作成されました。

hacluster ‘ユーザーのパスワードを設定する方法は次のとおりです。

passwd hacluster  
Enter new password:

高可用性ソフトウェアスタックPacemaker、Corosync、およびPcsdがシステムにインストールされました。

Pacemaker、Corosync、およびPcsdをインストールして構成

ステップ4 - クラスタを作成して構成する

注意: ステップ4 - 7は‘web01’でのみ実行します。

このステップでは、3台のCentOSサーバーで新しいクラスタを作成します。次に、フローティングIPアドレスを構成し、新しいNginxリソースを追加します。

クラスタを作成するには、pcsコマンドとhaclusterユーザーを使用してすべてのサーバーを認証する必要があります。

pcsコマンドとhaclusterユーザーおよびパスワードを使用してすべてのサーバーを認証します。

pcs cluster auth web01 web02 web03  
Username: hacluster  
Password: aqwe123@

クラスタを作成して構成

今、クラスタを設定する時間です。クラスタ名とクラスタの一部となるすべてのサーバーを定義します。

pcs cluster setup --name hakase_cluster web01 web02 web03

すべてのクラスタサービスを起動し、有効にします。

pcs cluster start --all  
pcs cluster enable --all

クラスタを起動

次に、クラスタの状態を確認します。

pcs status cluster

クラスタの状態を確認

ステップ5 - STONITHを無効にし、クォーラムポリシーを無視する

フェンシングデバイスを使用していないため、STONITHを無効にします。STONITHまたはShoot The Other Node In The Headは、Pacemakerのフェンシング実装です。生産環境にいる場合は、STONITHを有効にする方が良いです。

以下のpcsコマンドを使用してSTONITHを無効にします。

pcs property set stonith-enabled=false

次に、クォーラムポリシーを無視します。

pcs property set no-quorum-policy=ignore

プロパティリストを確認し、stonithとクォーラムポリシーが無効になっていることを確認します。

pcs property list

STONITHを無効にし、クォーラムポリシーを無視

STONITHとクォーラムポリシーが無効になっています。

ステップ6 - フローティングIPとリソースを追加する

フローティングIPは、同じデータセンター内で自動的に1つのサーバーから別のサーバーに移動できるIPアドレスです。そして、Pacemaker高可用性用にフローティングIPアドレスを’10.0.15.15’として定義しました。今、フローティングIPアドレスリソースを’virtual_ip’という名前で追加し、Nginxウェブサーバー用の新しいリソースを’webserver’として追加したいと思います。

以下のpcsコマンドを使用して新しいリソースフローティングIPアドレス’virtual_ip’を追加します。

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s

次に、Nginxの’webserver’用の新しいリソースを追加します。

pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"

エラー結果がないことを確認し、利用可能なリソースを確認します。

pcs status resources

‘virtual_ip’と’webserver’の2つのリソースが表示されます。フローティングIPとNginxウェブサーバーの新しいリソースが追加されました。

ステップ7 - クラスタに制約ルールを追加する

このステップでは、高可用性ルールを設定し、pcsコマンドラインインターフェースを使用してリソース制約を設定します。

webserverとvirtual_ipリソースのコロケーション制約をスコア’INFINITY’で設定します。また、webserverとvirtual_ipリソースをすべてのサーバーノードで同じに設定します。

pcs constraint colocation add webserver virtual_ip INFINITY

‘virtual_ip’と’webserver’リソースを常に同じノードサーバーに設定します。

pcs constraint order virtual_ip then the webserver

次に、クラスタを停止し、再度起動します。

pcs cluster stop --all  
pcs cluster start --all

クラスタに制約ルールを追加

今、リソースを再度確認すると、’web01’という同じサーバーで’Started’として表示されます。

pcs status resources

virtual_ipとwebserverリソースが同じサーバー/ノード’web01’で起動されています。

ステップ8 - Firewalldを構成する

HA-クラスタは、firewalldのファイアウォール構成の下で実行されます - パッケージがない場合はインストールします。

yum -y install firewalld

firewalldを起動し、以下のsystemctlコマンドを使用してシステム起動時に自動的に実行されるようにします。

systemctl start firewalld  
systemctl enable firewalld

次に、firewall-cmdコマンドを使用してfirewalldに新しいサービスを追加します - 高可用性サービス、HTTP、およびNginxのHTTPSサービスを追加します。

firewall-cmd --permanent --add-service=high-availability  
firewall-cmd --permanent --add-service=http  
firewall-cmd --permanent --add-service=https

ファイアウォール構成を再読み込みし、すべてのサービスを確認します。

firewall-cmd --reload  
firewall-cmd --list-all

haサービスがHTTPおよびhttpsとともにリストにあることを確認します。

ファイアウォールを再読み込みし、ファイアウォールルールセットを確認

ステップ9 - テスト

このステップでは、クラスタのテストを行います。ノードの状態(’オンライン’または’オフライン’)をテストし、corosyncメンバーと状態をテストし、フローティングIPアドレスにアクセスしてNginxウェブサーバーの高可用性をテストします。

以下のコマンドでノードの状態をテストします。

pcs status nodes

設定のテスト

すべてのノードが’オンライン’です。

corosyncメンバーをテストします。

corosync-cmapctl | grep members

CorosyncメンバーのIPアドレスが得られます。

CorosyncメンバーのIPアドレス

Corosyncメンバーを確認すると、以下のような結果が表示されます。

pcs status corosync

Corosyncの状態

最後に、ウェブサーバーの高可用性を確認します。ウェブブラウザを開き、フローティングIPアドレス’10.0.15.15’を入力します。

‘web01’サーバーからのウェブページが表示されます。

次に、以下のコマンドで’web01’サーバーのクラスタを停止します。

pcs cluster stop web01

再度ページを確認すると、以下のように’web02’サーバーからのページが表示されます。

追加:

以下のコマンドでクラスタの状態を確認します。

pcs status

以下のような結果が得られます。

pcsの状態を確認

CentOS 7サーバーでPacemaker、Corosync、およびPcsdを使用したNginxウェブサーバーの高可用性の設定が正常に完了しました。

参考

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。