GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu 16.04でPacemaker、Corosync、およびCrmshを使用してNginx高可用性を設定する方法

このチュートリアルでは、Pacemaker、Corosync、Crmshを使用して高可用性クラスター化Nginxウェブサーバーを作成する方法を段階的に説明します。 Ubuntu 16.04でPacemakerを使用して、アクティブ-パッシブクラスターまたはフェールオーバークラスターNginxWebサーバーを作成します。

ペースメーカー は、サービスの最大の高可用性を実現するオープンソースのクラスターマネージャーソフトウェアです。これは、2007年からClusterLabsによって開発された高度でスケーラブルなHAクラスターマネージャーです。

Corosync Cluster Engineは、2008年のOpenAISプロジェクトから派生したオープンソースプロジェクトであり、BSDライセンスの下でリリースされています。これは、アプリケーション内に高可用性を実装するための追加機能を備えたグループ通信システムです。

PacemakerインターフェースとCrmshで利用できるアプリケーションがいくつかあります。 それらの1つです。これは、Pacemaker高可用性スタックを管理するためのPacemakerコマンドラインインターフェイスです。 CrmshはPythonで書かれています。 Crmshコマンドラインツールを使用して、Pacemaker HAスタックを作成、構成、およびトラブルシューティングできます。

前提条件

  • 3台のUbuntu16.04サーバー
    • web01 10.0.15.11
    • web02 10.0.15.12
    • web03 10.0.15.13
  • フローティングIPアドレス10.0.15.15
  • ルート権限

何をしますか?

  1. Hostsファイルのマッピング。
  2. Nginxをインストールして構成します。
  3. Pacemaker、Corosync、およびCrmshをインストールします。
  4. Corosyncキーを設定します。
  5. すべてのサービスを開始します。
  6. クラスターを作成して構成します。
  7. テスト。
ステップ1-ホストファイルのマッピング

注:
3つのサーバー「web01」、「web02」、「web03」すべてで手順1〜3を実行します。

このチュートリアルでは、3つのUbuntu 16.04サーバーを使用します。各サーバーには、「web01」、「web02」、「web03」という一意のホスト名があります。各サーバーは、サーバーのホスト名を使用して他のサーバーに接続できます。

これを実現するには、vimを使用してすべてのサーバーの「/ etc/hosts」ファイルを編集します。

vim /etc/hosts

以下に/etc/hosts構成を貼り付けます。

10.0.15.11      web01
10.0.15.12      web02
10.0.15.13      web03
10.0.15.15      ha-web.co

ファイルを保存してvimを終了します。

次に、各ホスト名を介して他のサーバーにpingを実行して、すべてのサーバーをテストします。

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

ステップ2-Nginxをインストールして構成する

次に、Pacemakerを使用してフェールオーバークラスターを作成することにより、NginxWebサーバーの高可用性セットアップの作成を開始します。最初に各サーバーノードにNginxをインストールする必要があります。

以下のaptコマンドを使用してNginxをインストールします。

apt install -y nginx

インストールが完了したら、以下のコマンドを実行して、nginxのデフォルトページを各サーバーの一意のページに置き換えます。これにより、後でどのサーバーがページを配信したかを特定できます。

#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /var/www/html/index.html

#Run Command on 'web02'
echo '<h1>web02 - hakase-labs</h1>' > /var/www/html/index.html

#Run Command on 'web03'
echo '<h1>web03 - hakase-labs</h1>' > /var/www/html/index.html

次に、Webサーバーを停止します。

systemctl stop nginx

Nginxのインストールと構成が完了しました。

ステップ3-Pacemaker、Corosync、およびCrmshをインストールします

Pacemakerは、オープンソースのクラスターマネージャーアプリです。 CorosyncはPacemaker用のクラスターエンジンであり、CrmshはPacemakerクラスターを管理するためのPythonベースのツールです。これらのアプリケーションはすべて、Uubuntuリポジトリで利用できます。

以下のaptコマンドを使用して、Pacemaker、Corosync、およびcrmshをインストールします。

apt install -y pacemaker corosync crmsh

インストール後、これらのサービスはすべてシステム上で自動的に実行されます。以下のsystemctlコマンドで停止してください。

systemctl stop corosync
systemctl stop pacemaker

Nginxの高可用性を提供するソフトウェアスタックがインストールされました。

ステップ4-Corosyncを設定する

注:
「web01」サーバーでのみ手順4を実行します。

Ubuntuにはpcsdを使用していないため、Corosyncを手動で構成する必要があります。クラスタ認証用のCorosyncキーを生成し、「web01」サーバーに新しいCorosync構成ファイルを作成してから、キーと構成を他のサーバー「web02」と「web03」にコピーします。

Corosyncキーを生成する前に、新しいパッケージ「haveged」をインストールする必要があります。これは、Corosyncキー生成のためのより良い乱数を取得するために使用されます。

aptコマンドを使用してリポジトリからhavegedをインストールします。

apt install -y haveged

次に、以下のコマンドを使用して新しいCorosyncキーを生成します。

corosync-keygen

キーの生成が完了すると、「/ etc /corosync/」ディレクトリに新しいキー「authkey」が表示されます。

ls -lah /etc/corosync/

次に、「/ etc / corosync」ディレクトリに移動し、デフォルトの構成ファイル「corosync.conf」をバックアップします。

cd /etc/corosync/
mv corosync.conf corosync.conf.bekup

次に、vimを使用して新しい「corosync.conf」構成ファイルを作成します。

vim corosync.conf

以下の構成をそのファイルに貼り付けます。

# Totem Protocol Configuration
totem {
  version: 2
  cluster_name: hakase-cluster
  transport: udpu

# Interface configuration for Corosync
  interface {
    ringnumber: 0
    bindnetaddr: 10.0.15.0
    broadcast: yes
    mcastport: 5407
  }
}

# Nodelist - Server List
nodelist {
  node {
    ring0_addr: web01
  }
  node {
    ring0_addr: web02
  }
  node {
    ring0_addr: web03
  }
}

# Quorum configuration
quorum {
  provider: corosync_votequorum
}

# Corosync Log configuration
logging {
  to_logfile: yes
  logfile: /var/log/corosync/corosync.log
  to_syslog: yes
  timestamp: on
}

service {
  name: pacemaker
  ver: 0
}

ファイルを保存してエディタを終了します。

次に、認証キーと構成ファイルを「web01」サーバーから「web02」および「web03」サーバーにコピーします。

scp /etc/corosync/* [email protected]:/etc/corosync/
scp /etc/corosync/* [email protected]:/etc/corosync/

すべてが完了したら、「web02」サーバーと「web03」サーバーに移動し、ファイルを確認します。

ssh [email protected]
cd /etc/corosync/
ls -lah

Corosyncの設定が完了しました。

ステップ5-すべてのクラスターサービスを開始する

注:
すべてのサーバーで手順5を実行します。

すべてのサーバーで、HAクラスターソフトウェアスタック、ペースメーカー、およびcorosyncを起動します。次に、起動時に自動的に起動するようにします。

Corosyncを起動して追加し、起動時に自動的に起動します。

systemctl start corosync
systemctl enable corosync

次に、ペースメーカーを起動し、起動時に起動できるようにします。

systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemaker

すべてのサービスが開始されました。すべてのノードをチェックし、すべてのノードでサーバーのステータスが「オンライン」であることを確認してください。

crm status

または、以下のcorosync-cmapctlコマンドを使用してCorosyncメンバーを確認することでステータスを確認できます。

corosync-cmapctl | grep members

すべてのサーバーIPアドレスが表示されます。

ステップ6-クラスターの作成と構成

注:
web01サーバーでのみ手順6を実行します

このステップでは、crmshコマンドラインツールを使用してアクティブ-パッシブNginxクラスターを構成します。 STONITHデバイスを使用していないため、STONITHを無効にし、クラスターのクォーラムポリシーを無視します。

以下のcrmコマンドを実行して、「STONITH」を無効にし、クォーラムポリシーを無視します。

crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignore

次に、以下のcrmコマンドを使用して、STONITHステータスとクォーラムポリシーを確認します。

crm configure show

結果は次のように表示されます。

次に、クラスター用にいくつかの新しいリソースを作成する必要があります。 Pacemakerは、次のタイプのリソースエージェント(RA)をサポートしています。

  • LSB(Linux Standard Based)-Linuxディストリビューションによって提供されます。例:'/etc/init.d/service'スクリプト。
  • OCF(Open Cluster Framework)-クラスターコンピューティング用のツールセット。このプロジェクトはLinuxFoundationの一部です。

Nginx HAウェブサーバーの場合、2つのOCFリソースを作成する必要があります。フローティングIP用の「virtual_ip」とnginxサービス用の「webserver」です。

以下のcrmコマンドを使用して、フローティングIP構成用の新しい「virtual_ip」リソースを作成します。

sudo crm configure primitive virtual_ip \
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
cidr_netmask="32" op monitor interval="10s" \
meta migration-threshold="10"

また、nginx'webserver'の場合は、以下のコマンドを使用してリソースを作成します。

sudo crm configure primitive webserver \
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
op start timeout="40s" interval="0" \
op stop timeout="60s" interval="0" \
op monitor interval="10s" timeout="60s" \
meta migration-threshold="10"

これが完了したら、以下のコマンドを使用して、新しいリソース「virtual_ip」および「webserver」を確認します。すべてのリソースのステータスが「開始済み」であることを確認してください。

crm resource status

最後に、フェールオーバーIPサービスの新しい構成用のグループを追加する必要があります。 「webserver」リソースの「Nginx」サービスを「virtual_ip」リソースのフローティングIPで移行したいと考えています。

すでにフローティングIPとサービスを作成しました。次に、以下のコマンドを使用して、これらのリソースを「hakase_balancing」という名前の新しいグループに追加します。もちろん、ここで独自のグループ名を選択できます。名前は、使用されている場所で必ず置き換えてください。

sudo crm configure group hakase_balancing virtual_ip webserver

'hakase_balancing'という名前の新しいリソースグループが定義されました。以下のコマンドで確認できます。

crm resource show

メンバー「virtual_ip」および「webserver」リソースを持つhakase_balancingという名前のグループを取得します。

クラスターの構成が完了しました。

ステップ7-テスト

ノードステータスとクラスタステータスをテストします。

crm status

ステータスが「オンライン」のノードが3つあります。

「hakase_balancing」という名前のリソースグループがあり、「web01」ノードで実行されています。

WebブラウザからNginxWebサーバーをテストします。フローティングIPアドレスにアクセスします。私のテストサーバーの名前は-ha-web.co 。ここでサーバーに選択した名前を使用してください。

すべてのリソースは「web01」ノードにあります。

アクティブ-パッシブクラスターまたはフェイルオーバーのテスト

「web01」ノードで以下のコマンドを実行して、「web01」サーバー上のクラスターを停止します。

crm cluster stop

結果が表示されます'情報:クラスタサービスが停止しました '。

次に、「web02」ノードにログインして、クラスターのステータスを確認します。

crm status


これで、「web01」ノードが「オフライン」になり、virtual_ipとwebserverのリソースがノード「web02」に切り替えられるという結果が得られました。

フローティングIPに再度アクセスすると' ha-web.co '、web02ページが表示されます。

Ubuntu 16.04でのPacemaker、Corosync、CrmshによるNginx高可用性が正常にインストールされ、テストされました。


Ubuntu
  1. Ubuntu16.04LTSでHeartbeatとDRBDを使用してMariaDBの高可用性を設定する方法

  2. Ubuntu11.10にPHP5とMySQLを使用してNginxをインストールする方法

  3. CentOS7でPacemakerを使用してNginx高可用性クラスターをセットアップする方法

  1. UFWを使用してUbuntuファイアウォールを構成し、ファイアウォールルールを設定する方法

  2. Ubuntu16.04にPostgreSQLとNginxを使用してMattermostをインストールする方法

  3. Ubuntu 20.04にPHPとNginx(LEMP)をインストールしてセットアップする方法

  1. CentOS7でPacemakerとCorosyncを使用してNginx高可用性を設定する方法

  2. Ubuntu18.04にNginxとLetsencryptを使用してMagento2をインストールする方法

  3. Ubuntu15.04にPostgreSQLとNginxを使用してGitlabをインストールする方法