Zabbix Proxy のHA構成(可用性)について考えてみる

こんにちは、SCSK株式会社の小寺崇仁です。

Zabbix7.0からZabbixプロキシの冗長構成が可能になりました。
制約事項等ありますので、検証しながら考察したいと思います。

プロキシの冗長構成について

サーバ+プロキシの構成

プロキシの冗長構成をする場合、Zabbixプロキシを2台構築します。
ZabbixのWeb管理画面にて「プロキシーグループ」を作成し、2台のプロキシを同じグループに設定します。
プロキシーグループに冗長構成のパラメータがあり、「フェイルオーバーの期間」が設定できます。デフォルトは「1m」となります。


ホスト設定でのプロキシの指定

ホストの設定画面にて、「プロキシーグループ」を選択します。
監視を担うZabbixプロキシサーバは自動的にZabbixサーバで割り振られます。
ホストの設定画面の「割り当てられたプロキシ」に割り当てられたプロキシサーバが表示されます。


ポイント

・Zabbixサーバがプロキシの状態を監視し、監視対象がどのプロキシサーバで監視を行うかコントロールしています。
・Zabbixプロキシ間でハートビートするのような冗長構成ではありませんでした。
・Zabbixプロキシの代表IP切り替えるような冗長構成ではありませんでした。
・Zabbixプロキシ側で冗長構成を行うための設定はありませんでした。

 

監視対象の構成について

監視対象側での注意事項をまとめます。

シンプルチェック

Ping監視、ポート監視などは、2台のZabbixプロキシから監視対象に接続ができれば問題ないです。

 

Zabbixエージェント(パッシブ)

zabbix_agentd.confもしくはzabbix_agent2.confに、2台のZabbixプロキシから接続ができるように設定をします。

vi /etc/zabbix/zabbix_agent2.conf
Server=10.0.2.155,10.0.2.230
※カンマ区切りでZabbixプロキシのアドレスを指定します。

 

Zabbixエージェント(アクティブ)

zabbix_agent.confもしくはzabbix_agent2.confに、2台のZabbixプロキシに接続ができるように設定をします。

vi /etc/zabbix/zabbix_agent2.conf
ServerActive=10.0.2.155;10.0.2.230
※セミコロン区切りでZabbixプロキシのアドレスを指定します。カンマ区切りにすると2重でヒストリデータが作成されます。

 

SNMPトラップ

Zabbix7.0では対応しておりません。Zabbixサーバに送信する必要があります。
切り替わることを想定して、2台のZabbixプロキシに同じ内容のSNMPTrapを送信すると、2重でヒストリーデータが作成されます。

 

Zabbixトラップ

Senderコマンドでデータを送信する場合、Zabbixプロキシの指定を以下のconfigを指定するようにします。
config内の「ServerActive」に指定しているプロキシが使用されます。

zabbix_sender -c /etc/zabbix/zabbix_agent2.conf -s <ホスト名> -k <アイテムキー> -o 1234
※「-z」オプションで各プロキシを指定すると、2重でヒストリーデータが作成されます。

 

実際にフェイルオーバーしてみた

検証内容

以下の内容で検証を行います。フェイルオーバーの期間はデフォルトの1mとします。

1.各アイテムタイプで10秒間隔の監視アイテムを作成します。
2.監視を行っている側のプロキシのサービスを停止します。
3.フェイルオーバー後にヒストリを確認し、何秒間のデータが欠損したか確認します。

予想では、1m(フェイルオーバーの期間) + 10s(監視間隔) = 70秒+αのデータ欠損が発生する想定です。

 

アクティブプロキシの場合

アイテムタイプ 監視内容 最終取得時間 再開時間 欠損
シンプルチェック ping監視 18:43:23 18:44:53 90秒
Zabbixエージェント(パッシブ) CPU使用率 18:43:25 18:44:55 90秒
Zabbixエージェント(アクティブ) CPU使用率 18:43:26 18:44:49 93秒
Zabbixエージェント(アクティブ) ログ 18:43:29  18:43:29 なし
再開後、切り替え期間中に発生したログも受信
Zabbixトラップ 18:43:27 18:44:47 90秒

 

パッシブプロキシの場合

アイテムタイプ 監視内容 最終取得時間 再開時間 欠損
シンプルチェック ping監視 18:58:43 19:00:13 90秒
Zabbixエージェント(パッシブ) CPU使用率 18:58:45 19:00:05 80秒
Zabbixエージェント(アクティブ) CPU使用率 18:58:46 19:00:04 78秒
Zabbixエージェント(アクティブ) ログ 18:58:39 19:00:04 なし
再開後、切り替え期間中に発生したログも受信
Zabbixトラップ 18:58:49 19:00:09 80秒

 

考察

・フェイルオーバー期間(60秒)を考慮すると、30秒程で切り替えができました。通常は5分間隔の監視が多いため、タイミングによっては1回監視に失敗する程度かと思います。
・ログ監視は、欠損なく監視が継続できました。監視再開後に切り替え期間中に出力されたログもZabbixサーバに送信されてきます。
・Zabbixトラップで送信した内容は欠損します。zabbix_senderコマンドの実行結果がエラーになるため、送信元で制御する必要があります。もしくは、ZabbixAPIに「history.push」 がバージョン7.0から追加されましたので、変更することも考えてもよいと思います。

 

非機能要件について

バックアップ

・プロキシサーバのデータベースに格納されるデータは一時データであるため、DBのダンプの保存は不要です。
・/etc/zabbixは以下にコンフィグファイルがあるため、設定変更時にバックアップが必要です。

 

プロキシの監視

・Zabbixサーバから直接(プロキシを経由せずに)監視を行うのが良いと考えております。プロキシを経由すると「接続エラーやダウン」なのか「データの取得エラー」か判別しにくいためです。
・Zabbixプロキシのテンプレートは「Remote Zabbix proxy health」がデフォルトで用意されています。使用時にはマクロの設定が必要です。

 

メンテンナンス

・マイナーバージョンアップの方法について、別途ブログ記事にする予定です。

 

拡張性

・プロキシーグループにプロキシサーバを追加することで容易に拡張できます。
・障害発生時に縮退運転した際でも問題がないよう、リソースを準備する必要があります。

 

セキュリティ

・Zabbixサーバ ⇔ Zabbixプロキシ ⇔ Zabbixエージェント間の通信は暗号化することが可能です。「PSK」「証明書」と選択が可能です。

 

HA構成で気になること

スプリットブレインについて

もし、Zabbixプロキシで監視設定の情報を保持しているため、障害の状況によっては、両系のプロキシで監視を行う可能性はあると思います。
別途発生するか検証してみたいと思います。発生した場合の影響としては、以下と考えてます。
・2重で障害を検知する。両系で取得したデータが保存されるため。
・プロキシで保持している設定がZabbixサーバと同期されれば復旧する

 

フェイルバックについて

障害が発生したプロキシを復旧するだけで、Zabbixサーバは復旧を自動的に認識します。
復旧後自動的に監視対象のホストを分散します。(自動的に割り当てられるので、任意のプロキシに移動することはできません)

 

フェイルオーバー、フェイルバックを頻繁に繰り返す可能性について

マニュアルを確認したところ、頻繁に切り替わりが発生した場合、対象プロキシを切り離すなどの設定はありませんでした。

 

まとめ

プロキシグループを作成することで、簡単に冗長構成を構築することができます。
また、検知後30秒程度で切り替わりができております。さらにログ監視では欠損なく監視ができております。
SNMPトラップの監視ができませんので、要件を確認してご利用いただければと思います。

 

最後に

弊社ではZabbix関連サービスを展開しています。以下ページもご参照ください。


SCSK Plus サポート for Zabbix

★YouTubeに、SCSK Zabbixチャンネルを開設しました!★

★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★

著者について

Zabbixの構築をメインに担当しています。
■資格
 Zabbix認定プロフェッショナル
 AWS Certified Solutions Architect - Professional
 Google Certified Professional - Cloud Architect
 LPIC 303,304 ORACLE MASTER Gold DBA 11g
 CCNA Oracle Certified Java Programmer, Silver SE 7

小寺崇仁をフォローする

クラウドに強いによるエンジニアブログです。

SCSKでは、自社クラウドと3大メガクラウドの強みを活かし、ハイブリッドクラウド/マルチクラウドのソリューションを展開しています。業界の深い理解をもとに、お客様の業務要件に最適なアーキテクチャをご提案いたします。サービスサイトでは、お客様のDX推進をワンストップで支援するサービスの詳細や導入事例を紹介しています。

Zabbixソリューションプロダクト運用・監視
シェアする
タイトルとURLをコピーしました