サーバー設定 · 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
- ルート権限
私たちが行うこと:
- ホストファイルをマッピングする
- EpelリポジトリとNginxをインストールする
- Pacemaker、Corosync、およびPcsdをインストールして構成する
- クラスタを作成して構成する
- STONITHを無効にし、クォーラムポリシーを無視する
- フローティングIPとリソースを追加する
- クラスタにルールを追加する
- Firewalldを構成する
- 設定をテストする
ステップ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アドレスにマッピングされていることを確認します。

ステップ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ウェブサーバーがシステムにインストールされました。
ステップ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がシステムにインストールされました。

ステップ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とクォーラムポリシーが無効になっています。
ステップ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 resourcesvirtual_ipとwebserverリソースが同じサーバー/ノード’web01’で起動されています。
ステップ8 - Firewalldを構成する
HA-クラスタは、firewalldのファイアウォール構成の下で実行されます - パッケージがない場合はインストールします。
yum -y install firewalldfirewalldを起動し、以下の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-allhaサービスがHTTPおよびhttpsとともにリストにあることを確認します。

ステップ9 - テスト
このステップでは、クラスタのテストを行います。ノードの状態(’オンライン’または’オフライン’)をテストし、corosyncメンバーと状態をテストし、フローティングIPアドレスにアクセスしてNginxウェブサーバーの高可用性をテストします。
以下のコマンドでノードの状態をテストします。
pcs status nodes
すべてのノードが’オンライン’です。
corosyncメンバーをテストします。
corosync-cmapctl | grep membersCorosyncメンバーのIPアドレスが得られます。

Corosyncメンバーを確認すると、以下のような結果が表示されます。
pcs status corosync
最後に、ウェブサーバーの高可用性を確認します。ウェブブラウザを開き、フローティングIPアドレス’10.0.15.15’を入力します。
‘web01’サーバーからのウェブページが表示されます。
次に、以下のコマンドで’web01’サーバーのクラスタを停止します。
pcs cluster stop web01再度ページを確認すると、以下のように’web02’サーバーからのページが表示されます。
追加:
以下のコマンドでクラスタの状態を確認します。
pcs status以下のような結果が得られます。

CentOS 7サーバーでPacemaker、Corosync、およびPcsdを使用したNginxウェブサーバーの高可用性の設定が正常に完了しました。
参考
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。