高可用性デプロイの設定
このページでは、コントローラを高可用性(HA)ペアとして設定およびデプロイする方法について説明します。インストールとアップグレードの詳細については、「カスタムインストール」と「HA ペアのアップグレード」を参照してください。
Enterprise Consoleを使用するHAデプロイについて
Enterprise Consoleは、LinuxオペレーティングシステムのHAに関連する設定および管理タスクを自動化します。sudo 権限は不要であり、非 root ユーザとして Unix オペレーティングシステムにデプロイできます。Ubuntu や Red Hat/CentOS など、Linux のほぼすべてのフレーバーと連携して動作します。
方法は以下のとおりです。
- 高可用性のペア構成でコントローラを構成する。
- Enterprise Console を使用してプライマリコントローラ、アプリケーションサーバー、およびデータベースの正常性をモニターし、必要に応じてセカンダリにフェールオーバーする。
- コントローラを Linux サービスとしてインストールするためのスクリプトを使用し、マシンの再起動時にサービスを正常に停止および起動する。
- セカンダリコントローラに手動でフェールオーバーする(プライマリのメンテナンスが必要な場合など)。
- コントローラを復旧させる(コントローラを HA セカンダリとして復元するには、複製スレーブとしてのデータベースがマスターより 7 日以上遅い必要がある)。
- コントローラの HA ペアを設定する。
HAペアとしてコントローラをデプロイすると、コントローラのマシン障害が発生した際のサービスダウンタイムを最小限に抑えることができます。また、データのバックアップなど、他の管理作業も容易になります。HA のメリットなどのバックグラウンド情報については、「コントローラ高可用性(HA)」を参照してください。
はじめに
環境への HA の展開方法に関する一般的なガイドラインと要件については、「ハイアベイラビリティの前提条件」を参照してください。環境が前提条件を満たしている必要があります。
ユーザー権限エスカレーション要件
Enterprise Console からコントローラ高可用性をインストールした後、MySQL を Linux サービスとしてインストールすることが推奨されます。これにより、MySQLでデータ完全性の問題が発生するのを防ぎます。コントローラおよび MySQL を Unix サービスとしてインストールすることで、マシンが再起動されるたびにサービスが正常にシャットダウンされ、起動するようになります。
/etc/sudoers.d/appdynamicsには、Splunk AppDynamics ユーザーがパスワードなしでsudoを使用し /sbin/serviceユーティリティにアクセスするためのエントリが含まれる。このメカニズムは、Splunk AppDynamics ユーザーが LDAP により認証されている場合使用不可。-
/sbin/appdserviceは、<controller_home>/controller-ha/init/appdservice.cにソース形式で配布されるsetuidルートプログラム。これは、セキュリティ監査システムの監査をサポートするため、明示的に記述される。install-init.shスクリプトはプログラムをコンパイルしてインストールする。これは、Splunk AppDynamics ユーザーとルートユーザーのみが実行可能。このスクリプトでは、システム上で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 host1192.168.144.137 host2.domain.com host2注: エラーを減らすには、正しい形式の/etc/hostsファイルを使用します。ドット付きホスト名とショートバージョンの両方がある場合、もっともドット数が多いドット付きホスト名の後に、他のバージョンを続ける必要があります。この形式は、2 つの各/etc/hostsファイルで、両方の HA サーバーエントリに対し、一貫して適用する必要があります。上の例では、エイリアスが最後にあることを確認してください。
SSH 鍵の設定
SSHは両方のホストにインストールし、コントローラを実行するユーザーが、HAペアの他のコントローラシステムにパスワードなしでSSHアクセスできるようにする必要があります。これを行うには、各ノードで鍵のペアを作成し、他のコントローラの公開鍵を各コントローラの認証済鍵(authorized_keys)ファイルに配置します。
ここでは、このような構成の実行方法について説明します。この手順では、appduser という名前の Splunk AppDynamics ユーザーと、コントローラのホスト名が node1 であるアクティブプライマリ、および node2 であるセカンダリが存在することを前提としています。特定の環境に合わせて、手順を調整してください。また、すべての手順を実行する必要がないことに注意してください(たとえば、すでに .ssh ディレクトリがある場合は、新しく作成する必要はありません)。
ここで示されていなくても、手順の中でパスワードが必要になる場合があります。
プライマリ(node1)ホストで、次のようにします。-
Splunk 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
-
ノード 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
-
セカンダリの公開キーを 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です。
-
使用するクレデンシャルおよびホストが、Splunk 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] をクリックします。
-
プラットフォームを指定します。
-
プラットフォームの名前とインストールパスを入力します。注:
インストールパスは、すべてのプラットフォーム コンポーネントがインストールされる絶対パスです。プラットフォームに追加されたすべてのホストに同じパスが使用されます。既存の Splunk 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 つのホストのそれぞれについて、ホストのマシン情報(ホスト名、ユーザー名、秘密キー)を入力します。これは、コントローラがインストールされる場所です。クレデンシャルとホストを追加する方法について詳しくは、「Administer the Enterprise Console」を参照してください。
-
-
コントローラのインストール:
-
[インストール(Install)] を選択します。
-
コントローラのプロファイルサイズを選択します。サイズ要件の詳細は、「Controller System Requirements」を参照してください。
-
コントローラのプライマリおよびセカンダリホストを入力します。
-
必要なユーザー名とパスワードを入力します。デフォルトのコントローラ管理ユーザー名は、
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>-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-dbappdcontroller
デプロイの各種コンポーネントのステータスおよび進捗が、ログに書き込まれます。
スタンドアロンコントローラからコントローラ高可用性ペアへの変換
Enterprise Console GUI を使用して、スタンドアロンコントローラをコントローラ HA ペアに変換できます。上記の「コントローラ高可用性ペア環境の構成」セクションに記載されている、パスワード不要な SSH を介したプライマリホストとセカンダリホスト間の通信が必要であるという前提条件を満たしていることを確認してください。
また、増分複製を使用してセカンダリコントローラを追加することもできます。詳細は、「コントローラデータベース増分複製の開始」を参照してください。
新規インストールから開始する場合、最初にプラットフォームを作成してから、HA ペアに対して 2 つのログイン情報とホストを追加する必要があります。
スタンドアロンコントローラをコントローラ HA ペアに変換する方法は以下のとおりです。
- Enterprise Console GUI を開きます。
- 使用するログイン情報およびホストが、Splunk AppDynamics オンプレミスプラットフォームに追加されていることを確認します。詳細については、「Enterprise Console の管理」を参照してください。
- [Controller] ページで、 [Add Secondary Controller]をクリックし、ウィザードを完了します。
- [送信(Submit)] を選択します。