このチュートリアルでは、Pacemaker、Corosync、およびPcsdを使用して高可用性クラスターNginxウェブサーバーを作成する方法を段階的に説明します。 CentOS7システムでPacemakerを使用してアクティブ-パッシブクラスターまたはフェールオーバークラスターNginxWebサーバーを作成します。
ペースメーカー は、サービスの最大の高可用性を実現するオープンソースのクラスターマネージャーソフトウェアです。これは、ClusterLabsによって配布される高度でスケーラブルなHAクラスターマネージャーです。
Corosync Cluster Engineは、新しいBSDライセンスの下でOpenAISプロジェクトから派生したオープンソースプロジェクトです。これは、アプリケーション内に高可用性を実装するための追加機能を備えたグループ通信システムです。
Pacemakerインターフェースにはいくつかのアプリケーションがあります。 Pcsd は、Pacemakerを管理するためのPacemakerコマンドラインインターフェイスおよびGUIの1つです。 pcsdコマンドpcsを使用して、新しいノードを作成、構成、またはクラスターに追加できます。
前提条件
- 2台以上のCentOS7サーバー
- 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とリソースを追加する
- クラスターにルールを追加する
- Firewallを設定する
- セットアップをテストする
注 :すべてのサーバーweb01、web02、web03で手順1〜3を実行します。
最初に行う必要があるのは、すべてのサーバーのホスト名をマッピングするために、各サーバーのホストファイルを編集することです。 'web01'、'web02'、および'web03'サーバーがあり、sshアカウントで各サーバーにログインします。
ssh [email protected][01,02,03]
'/ etc/hosts'ファイルをvimで編集します。
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アドレスにマッピングされていることを確認してください。
このステップでは、epelリポジトリをインストールしてから、NginxWebサーバーをインストールします。 Nginxパッケージをインストールするには、エンタープライズLinuxリポジトリ用のEPELまたは追加パッケージが必要です。
次のyumコマンドを使用してEPELリポジトリをインストールします。
yum -y install epel-release
次に、EPELリポジトリからNginxWebサーバーをインストールします。
yum -y install nginx
インストールが完了したら、各サーバーのデフォルトのindex.htmlページを新しいページに変更します。
#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /usr/share/nginx/html/index.html
#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /usr/share/nginx/html/index.html
#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /usr/share/nginx/html/index.html
これで、EPELリポジトリとNginxWebサーバーがシステムにインストールされました。
ステップ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
次に、すべてのサーバーでpcsdPacemakerコマンドラインインターフェイスを起動します。
systemctl start pcsd
次に、「hacluster」ユーザーの新しいパスワードを作成し、すべてのサーバーに同じパスワードを使用します。このユーザーは、ソフトウェアのインストール中に自動的に作成されました。
' haclusterのパスワードを構成する方法は次のとおりです。 'ユーザー。
passwd hacluster
Enter new password:
高可用性ソフトウェアスタックPacemaker、Corosync、およびPcsdがシステムにインストールされています。
注 :'web01' で手順4〜7を実行します のみ。
このステップでは、3つのcentosサーバーで新しいクラスターを作成します。次に、フローティングIPアドレスを構成し、新しいNginxリソースを追加します。
クラスターを作成するには、pcsコマンドとhaclusterユーザーを使用してすべてのサーバーを認証する必要があります。
pcsコマンドとhaclusterユーザーおよびパスワードを使用してすべてのサーバーを認証します。
pcs cluster auth web01 web02 web03
Username: hacluster
Password: [email protected]
次に、クラスターをセットアップします。クラスタ名と、クラスタの一部となるすべてのサーバーを定義します。
pcs cluster setup --name hakase_cluster web01 web02 web03
次に、すべてのクラスターサービスを開始し、それらを有効にします。
pcs cluster start --all
pcs cluster enable --all
次に、クラスタのステータスを確認します。
pcs status cluster
フェンシングデバイスを使用していないため、STONITHを無効にします。 STONITHまたはShootTheOther 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およびクォーラムポリシーが無効になっています。
フローティングIPは、同じデータセンター内のあるサーバーから別のサーバーに自動的に移行/移動できるIPアドレスです。また、PacemakerHigh-AvailabilityのフローティングIPアドレスを「10.0.15.15」に定義しました。次に、「virtual_ip」という名前のフローティングIPアドレスリソースと「webserver」という名前のNginxWebサーバー用の新しいリソースの2つのリソースを追加します。
以下に示すように、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の「ウェブサーバー」の新しいリソースを追加します。
pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"
エラー結果がないことを確認してから、利用可能なリソースを確認してください。
pcs status resources
2つのリソース「virtual_ip」と「webserver」が表示されます。 FloatingIPおよびNginxWebサーバーの新しいリソースが追加されました。
このステップでは、高可用性ルールを設定し、pcsコマンドラインインターフェイスを使用してリソース制約を設定します。
スコアが「INFINITY」のwebserverおよびvirtual_ipリソースの照合制約を設定します。また、すべてのサーバーノードで同じように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」で「開始済み」としてステータスが表示されます。
pcs status resources
virtual_ipとwebserverのリソースが同じサーバー/ノード「web01」で開始されました。
HA-Clusterはファイアウォール構成firewalldで実行されます-パッケージがない場合はインストールしてください。
yum -y install firewalld
次のsystemctlコマンドを使用して、firewalldを起動し、システムの起動時に毎回自動的に実行されるようにします。
systemctl start firewalld
systemctl enable firewalld
次に、firewall-cmdコマンドを使用してfirewalldに新しいサービスを追加します-Nginxの高可用性サービス、HTTP、および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
HTTPとhttpsを使用したhaサービスがリストに含まれていることを確認してください。
このステップでは、クラスターのテストを行います。ノードのステータス(「オンライン」または「オフライン」)をテストし、corosyncメンバーとステータスをテストしてから、フローティングIPアドレスにアクセスしてNginxウェブサーバーの高可用性をテストします。
次のコマンドでノードのステータスをテストします。
pcs status nodes
すべてのノードが「オンライン」になっています。
corosyncメンバーをテストします。
corosync-cmapctl | grep members
CorosyncメンバーのIPアドレスを取得します。
Corosyncメンバーを確認すると、次のような結果が表示されます。
pcs status corosync
最後に、Webサーバーの高可用性を確認します。 Webブラウザーを開き、フローティングIPアドレス「10.0.15.15」を入力します。
「web01」サーバーからのWebページが表示されます。
次に、以下のコマンドを使用して、「web01」サーバー上のクラスターを停止します。
pcs cluster stop web01
そして、ページをもう一度確認すると、以下のように「web02」サーバーからページが取得されます。
追加:
以下のコマンドでクラスターの状態を確認してください。
pcs status
そして、以下のような結果が得られます。
CentOS 7サーバーでのPacemaker、Corosync、およびPcsdを使用したNginxWebサーバーの高可用性のセットアップが正常に完了しました。