Download PDF
Download page 高可用性デプロイの設定.
高可用性デプロイの設定
このページでは、コントローラを高可用性(HA)ペアとして設定およびデプロイする方法について説明します。インストールおよびアップグレードの詳細は、「カスタム インストール」および「HAペアのアップグレード」を参照してください。
Enterprise Consoleを使用するHAデプロイについて
Enterprise Consoleは、LinuxオペレーティングシステムのHAに関連する設定および管理タスクを自動化します。sudo
権限は不要であり、非ルートユーザーとして Unix オペレーティングシステムに展開できます。Ubuntu や Red Hat/CentOS など、Linux のほぼすべてのフレーバーと連携して動作します。
HA ペアのコントローラのサーバーは、OS、CPU、RAM、およびディスクの観点から同一である必要があります。「コントローラシステム要件」を参照してください。
方法は以下のとおりです。
- 高可用性のペア構成でコントローラを構成する。
- Enterprise Console を使用してプライマリコントローラ、アプリケーションサーバー、およびデータベースの正常性をモニターし、必要に応じてセカンダリにフェールオーバーする。
- コントローラを Linux サービスとしてインストールするためのスクリプトを使用し、マシンの再起動時にサービスを正常に停止および起動する。
- セカンダリコントローラに手動でフェールオーバーする(プライマリのメンテナンスが必要な場合など)。
- コントローラを復旧させる(コントローラを HA セカンダリとして復元するには、複製スレーブとしてのデータベースがマスターより 7 日以上遅い必要がある)。
- コントローラの HA ペアを設定する。
HAペアとしてコントローラをデプロイすると、コントローラのマシン障害が発生した際のサービスダウンタイムを最小限に抑えることができます。また、データのバックアップなど、他の管理作業も容易になります。HA のメリットなどのバックグラウンド情報については、「コントローラ高可用性(HA)」を参照してください。
はじめに
お使いの環境に HA をデプロイする方法に関する一般的なガイドラインと要件については、「ハイ アベイラビリティの前提条件」を参照してください。環境が前提条件を満たしている必要があります。
ユーザー権限エスカレーション要件
Enterprise Console からコントローラ高可用性をインストールした後、MySQL を Linux サービスとしてインストールすることが推奨されます。これにより、MySQLでデータ完全性の問題が発生するのを防ぎます。コントローラおよび MySQL を Unix サービスとしてインストールすることで、マシンが再起動されるたびにサービスが正常にシャットダウンされ、起動するようになります。
/etc/sudoers.d/appdynamics
には、AppDynamics ユーザーがパスワードなしでsudo
を使用し/sbin/service
ユーティリティにアクセスするためのエントリが含まれる。このメカニズムは、AppDynamicsユーザーがLDAPにより認証されている場合使用不可。/sbin/appdservice
は、<controller_home>/controller-ha/init/appdservice.c.
のソース形式で配布されるsetuid
ルートプログラム。セキュリティ監査システムの監査をサポートするため、明示的に記述される。install-init.sh
スクリプトは、プログラムをコンパイルしてインストールする。これは、AppDynamicsユーザーおよびrootユーザーのみが実行可能。このスクリプトでは、システム上でCコンパイラを使用できるようにすることが必要。Cコンパイラは、オペレーティングシステム用パッケージマネージャを使用してインストール可能。たとえば、YumベースのLinux配信では、以下のコマンドを使用してCコンパイラを含むGNUコンパイラをインストールできる。sudo yum install gcc
ロードバランサの要件および考慮事項
HA を設定する前に、リバースプロキシまたはロードバランサを使用可能にし、HA ペア内のアクティブコントローラにトラフィックをルーティングするよう設定する必要があります。コントローラ間におけるトラフィックのルーティングに(DNS 操作など他の方法ではなく)ロードバランサを使用することで、フェールオーバーが迅速に行われるようになります(エージェントマシンでの DNS キャッシングによる遅延なし、など)。
HAデプロイには以下のIPアドレスが必要です。
- コントローラにアクセスするためにクライアントが使用するロードバランサ(アプリエージェントなど)により提示される、コントローラペアの仮想 IP 用のアドレス(下図のコールアウト )。
- コントローラマシンごとの 2 つの IP アドレス。1 つは HTTP プライマリ ポート インターフェイス用()で、もう 1 つは各マシンのコントローラ間の専用リンクインターフェイス用()。1つはHTTPプライマリポートインターフェース用()で、もう1つは各マシンのコントローラ間の専用リンクインターフェース用()。
- コントローラがロードバランサの後ろにある保護された内部ネットワークに常駐する場合は、内部ネットワークのコントローラ用に追加の内部仮想 IP も必要()。
複製を設定する際は、アプリエージェントやUIユーザーなどのコントローラクライアントがロードバランサのコントローラに対処する外部アドレスを指定します。コントローラ自体も、このアドレスにアクセス可能である必要があります。ロードバランサに比例して保護されたネットワーク内にコントローラが存在し、このアドレスに到達できな場合は、ネットワーク内からアクティブなコントローラをプロキシする内部VIPが、保護された側に必要です。これを指定するには、-
i パラメータを使用します。
ロードバランサは、次のアドレスでコントローラの可用性をチェックすることができます。
http://<controller_host>:<port>/controller/rest/serverstatus
コントローラがアクティブの場合、コントローラはこのURLのGETリクエストにHTTP200で応答します。応答の本文は、コントローラのステータスを以下の形式で示します。
<serverstatus vendorid="" version="1">
...
<available>true</available>
...
コントローラペアに構成したロードバランサポリシーが、一度にペア内の1つのコントローラのみにトラフィックを送信できるようになっていることを確認します(ロードバランサでラウンドロビンまたは同様のルーティング配信ポリシーを使用しない)。コントローラ用ロードバランサの設定詳細については、「リバースプロキシの使用」を参照してください。
コントローラの高可用性ペア設定
高可用性を設定するには:
ステップ1:コントローラ高可用性ペア環境の構成
以下のセクションでは、いくつかのシステム要件を構成する方法の詳細が説明されます。サンプルデプロイとして、Red Hat Linux で設定を構成する方法を紹介します。これらの要件を構成する具体的手順は、システムにより異なる場合がありますのでご注意ください。詳細については、システムのマニュアルを参照してください。
ホストのリバースルックアップ
各マシンで信頼性の高い対称リバースホストルックアップを設定する必要があります。これを行うには、各マシンの hosts ファイル(/etc/hosts
)にペアのホスト名を入力します。これは、リバース DNS の使用などの他のアプローチよりも優先されます。これにより、障害ポイントが追加されます。
リバースホストルックアップを有効にするには、各ホストで以下を実行。
/etc/nsswitch.conf
でhosts
ファイルのエントリを DNS よりも優先させるには、「dns
」の前に「files
」を置きます。例:hosts: files dns
/etc/hosts
ファイルで、HA ペアの各ホストのエントリを追加します。例:192.168.144.128 host1.domain.com host1
192.168.144.137 host2.domain.com host2
エラーを減らすには、正しい形式の
/etc/hosts
ファイルを使用します。ドット付きホスト名とショートバージョンの両方がある場合、もっともドット数が多いドット付きホスト名の後に、他のバージョンを続ける必要があります。この形式は、2 つの各/etc/hosts
ファイルで、両方の HA サーバーエントリに対し、一貫して適用する必要があります。上の例では、エイリアスが最後にあることを確認してください。
SSH 鍵の設定
SSHは両方のホストにインストールし、コントローラを実行するユーザーが、HAペアの他のコントローラシステムにパスワードなしでSSHアクセスできるようにする必要があります。これを行うには、各ノードで鍵のペアを作成し、他のコントローラの公開鍵を各コントローラの認証済鍵(authorized_keys)ファイルに配置します。
ここでは、このような構成の実行方法について説明します。この手順では、AppDynamics ユーザー appduser,
、コントローラのホスト名が node1 であるアクティブプライマリ、および node2 であるセカンダリが存在することを前提としています。特定の環境に合わせて、手順を調整してください。また、すべての手順を実行する必要がないことに注意してください(たとえば、すでに .ssh
ディレクトリがある場合は、新しく作成する必要はありません)。
ここで示されていなくても、手順の中でパスワードが必要になる場合があります。
プライマリ(node1)ホストで、次のようにします。
AppDynamics のユーザー、この例では
appduser
に変更。su - appduser
SSHアーティファクトのディレクトリを作成し(存在しない場合)、次のようにディレクトリで権限を設定する。
mkdir -p .ssh chmod 700 .ssh
RSA形式の鍵を生成。
ssh-keygen -t rsa -N "" -f .ssh/id_rsa -m pem
鍵をもう1つのコントローラに安全にコピー。
scp .ssh/id_rsa.pub node2:/tmp
セカンダリ(node2)ホストで、次のようにします。
ノード1で行ったように、以下のコマンドを実行。
su - appduser mkdir -p .ssh chmod 700 .ssh ssh-keygen -t rsa -N "" -f .ssh/id_rsa -m pem scp .ssh/id_rsa.pub node1:/tmp
セカンダリコントローラホストのauthorized_keysに以前コピーしたノード1の公開鍵を追加し、authorized_keysファイルに権限を設定。
cat /tmp/id_rsa.pub >> .ssh/authorized_keys chmod 700 ~/.ssh/authorized_keys
プライマリ(ノード1)で再度以下を実行。
セカンダリの公開鍵をauthorized_keysに移動。
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh/authorized_keys
構成をテストするには、以下のように入力します。
ssh -oNumberOfPasswordPrompts=0 <other_node> "echo success"
echo
コマンドが成功したことを確認します。
ステップ 2:コントローラの高可用性ペアのインストール
環境を設定したら、プライマリマシンにコントローラ HA ペアをインストールできます。既存のスタンドアロンコントローラのデプロイに HA セカンダリを追加するには、コントローラを実行しているユーザーがコントローラホームへの書き込みアクセス権を持っていることを確認すればすみます。
コントローラ HA ペアをインストールするには:
開始する前に、Enterprise Console の前提条件を満たしていることを確認します。
ブラウザを開き、GUIに移動します。
http(s)://<hostname>:<port>
デフォルトのポートは9191です。
使用する認証情報およびホストが、AppDynamicsプラットフォームに追加されていることを確認します。詳細については、「Enterprise Consoleの管理」を参照してください。
[Credential ] ページで、プライマリコントローラをインストールするホストの SSH 認証情報を追加します。また、Enterprise Consoleホストで次のコマンドを実行することもできます。
bin/platform-admin.sh add-credential --credential-name <name> --type <ssh> --user-name <username> --ssh-key-file <file path to the key file>
認証情報を追加するときに、Enterprise Consoleマシンの秘密鍵ファイルを必ず提供してください。[Hosts] ページで、上記の認証情報を使用してホストを追加します。また、Enterprise Consoleホストで次のコマンドを実行することもできます。
bin/platform-admin.sh add-hosts --hosts secondaryhost --credential <credential name>
[Install] ホームページに移動して、[Custom Install] をクリックします。
プラットフォームを指定します。
プラットフォームの名前とインストールパスを入力します。
インストールパスは、すべてのプラットフォーム コンポーネントがインストールされる絶対パスです。プラットフォームに追加されたすべてのホストに同じパスが使用されます。既存の AppDynamics コンポーネントがインストールされていないパスを使用します。
選択したパスは、書き込み可能である必要があります。すなわち、Enterprise Console をインストールしたユーザーに、そのフォルダへの書き込み権限がある必要があります。また、Enterprise Console で管理されるすべてのホストで同じパスが書き込み可能である必要があります。サンプルパス:
<path_to_AppD>/appdynamics/platform
または、Enterprise Consoleホストで次のコマンドを実行します。
bin/platform-admin.sh create-platform --name <platform_name> --installation-dir <platform_installation_directory>
2 つのホストを追加します。
2 つのホストのそれぞれについて、ホストのマシン情報(ホスト名、ユーザー名、秘密キー)を入力します。
これは、コントローラがインストールされる場所です。認証情報とホストを追加する方法の詳細は、「Enterprise Consoleの管理」を参照してください。
- コントローラのインストール:
- Install を選択します。
- コントローラのプロファイルサイズを選択します。サイジング要件の詳細は、「コントローラシステム要件」を参照してください。
コントローラのプライマリおよびセカンダリホストを入力します。
必要なユーザー名とパスワードを入力します。デフォルトのコントローラ管理ユーザー名は、
admin
です。この時点でコントローラをインストールしない場合でも、後から GUI で [Controller] ページに移動し、[Install Controller] をクリックして、いつでもインストールできます。または、Enterprise Consoleホストで次のコマンドを実行します。
bin/platform-admin.sh submit-job --service controller --job install --args controllerPrimaryHost=<primaryhost> controllerSecondaryHost=<secondaryhost> controllerAdminUsername=<user1> controllerAdminPassword=<password> controllerRootUserPassword=<rootpassword> mysqlRootPassword=<dbrootpassword>
[Install] をクリックします。
ステップ 3:コントローラの高可用性ペアの有効化
この手順により、Enterprise Console が HA コントローラのフェールオーバープロセスのクリティカルパスに存在しなくなります。
Enterprise Console ホストでコマンドシェルを開き、次のように入力します。
platform-admin.sh submit-job --service controller --job activate-ha-modules
出力は次のようになります。
ステップ4:サービスとしてのインストール
Linux では、Enterprise Console はサービスとしてコントローラをインストールしません。ルートユーザーまたは sudo
権限が必要になるためです。ただし、Enterprise Console はコントローラホストの <controller_home>/controller-ha
に init
スクリプトをコピーします。インストールを完了するには、次の手順を手動で実行します。
- ディレクトリを
<controller_home>/controller-ha
に変更します。 コントローラフォルダを所有しているユーザーとして、次のコマンドを実行します。
set_mysql_password_file.sh -p <db root password> -s <secondary host>
CODE-s
セカンダリホストにファイルをコピーします。コマンドに MySQL データベースのルートユーザーパスワードを入力します。- ディレクトリを
<controller_home>/controller-ha/init
に変更します。 ルートユーザーとして
install-init.sh
を実行し、以下のオプションのいずれかでユーザー権限を昇格させる方法を選択します。-c
#use setuid c wrapper-s
#use sudo-p
#use prune wrapper-x
#use user privilege wrapper
このスクリプトは、両方のコントローラ HA ペアサーバーで実行する必要があります。後でサービスをアンインストールする必要がある場合は、uninstall-init.sh
スクリプトを実行します。
コントローラをサービスとしてインストールすると、次のサービスが含まれます。
appdcontroller-db
appdcontroller
デプロイの各種コンポーネントのステータスおよび進捗が、ログに書き込まれます。
スタンドアロンコントローラからコントローラ高可用性ペアへの変換
Enterprise Console GUI を使用して、スタンドアロンコントローラをコントローラ HA ペアに変換できます。上記の「コントローラ高可用性ペア環境の構成」セクションに記載されている、パスワード不要な SSH を介したプライマリホストとセカンダリホスト間の通信が必要であるという前提条件を満たしていることを確認してください。
また、増分複製を使用してセカンダリコントローラを追加することもできます。詳細は、「コントローラデータベース増分複製の開始」を参照してください。
新規インストールから開始する場合、最初にプラットフォームを作成してから、HA ペアに対して 2 つの認証情報とホストを追加する必要があります。
スタンドアロンコントローラをコントローラ HA ペアに変換するには:
- Enterprise Console GUIを開きます。
使用する認証情報およびホストが、AppDynamicsプラットフォームに追加されていることを確認します。詳細については、「Enterprise Consoleの管理」を参照してください。
[Credential ] ページで、セカンダリコントローラをインストールするホストの SSH 認証情報を追加します。また、Enterprise Consoleホストで次のコマンドを実行することもできます。
bin/platform-admin.sh add-credential --credential-name <name> --type <ssh> --user-name <username> --ssh-key-file <file path to the key file>
認証情報を追加するときに、Enterprise Consoleマシンの秘密鍵ファイルを必ず提供してください。[Hosts] ページで、ホストを追加します。また、Enterprise Consoleホストで次のコマンドを実行することもできます。
bin/platform-admin.sh add-hosts --hosts secondaryhost --credential <credential name>
Enterprise Consoleで、HAペアにこのホストが使用されます。
[Controller] ページで [Add Secondary Controller] をクリックし、ウィザードを完了します。
- セカンダリコントローラに対して追加するコントローラセカンダリホストを選択します。
オプション:外部 URL を入力します。これは外部ロードバランサ URL です。これは、次の形式を反映する必要があります。
http(s)://<external.vip>:<port>
DBルートパスワードを入力し、確認のため再入力します。
セカンダリサーバーのインストール時に、プライマリサーバーに対して入力された同じパスワードが入力されていることを確認してください。
- Submit を選択します。
それぞれに固有の MySQL ノードがある HA ペアが、自動的に設定されます。