HAProxy を使用した OpenSearch クラスタのバランシング

概要

このドキュメントでは、HAProxy を使用したバランスの取れた OpenSearch クラスタの設定について説明します。

OpenSearch クラスタのインストールと設定

OpenSearch クラスタのインストールと設定については、次の公式ドキュメントに従います。

Pandora FMS 用の OpenSearch クラスタの設定

完了すると、機能的なクラスタを備えたマルチノードアーキテクチャが完成します。 アーキテクチャの例として、3ノードクラスタについて説明します。

  • os-node1
  • os-node2
  • os-node3

HAProxy のインストールと設定

別のマシンに HAProxy バランサをインストールして設定します。
今回のケースでは、Rocky Linux 9 OS を搭載した Pandora FMS ノードと同じマシンでこれを行いますが、別のマシンでも構いません。

設定ファイルを編集するために、HAProxy および Vim パッケージをインストールします (Pandora FMS ノードの場合は、Vim はデフォルトですでにインストールされているはずです)。

dnf install -y haproxy vim

インストールが完了したら、デフォルトの HAProxy 設定ファイルのコピーを作成します。

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.default

ここで、次の設定でファイル /etc/haproxy/haproxy.cfg を編集します。

global
   #log /dev/log local0
   log /dev/log local1 notice
   maxconn 4096
   user haproxy
   group haproxy
   daemon
   tune.ssl.default-dh-param 2048

defaults
   log     global
   mode    http
   #option  httplog
   option  dontlognull
   timeout connect 5s
   timeout client  30s
   timeout server  30s
   retries 3

# ====================================
# Frontend -- HTTP 
# ====================================
frontend opensearch_frontend
   #bind *:9200
   bind *:9200 ssl crt /etc/haproxy/certs/haproxy.pem
   default_backend opensearch_backend

# ====================================
# Backend -- Nodos HTTPS con auth
# ====================================
backend opensearch_backend
   balance roundrobin
  

   # Conectar a backends HTTPS
   server node1 <ip-node1>:9200 ssl verify none check
   server node2 <ip-node2>:9200 ssl verify none check
   server node3 <ip-node3>:9200 ssl verify none check

# ====================================
# Stats page optional
# ====================================
listen stats
   bind *:8404
   mode http
   stats enable
   stats uri /haproxy?stats
   stats refresh 10s
   stats auth admin:Pandor4!

<ip-nodex> をクラスター内の各 OpenSearch ノードの IP アドレスに置き換え、クラスターが大きい場合は同じ形式に従ってノードを追加します。
保存して終了します。

これは参考の設定ファイルなので、タイムアウト、再試行、SSL 証明書の検証など、環境のニーズに応じていくつかのオプションを設定できます。

統計ページ

設定に統計 URL を追加します。これは HAProxy の状態監視に役立ちます。これはオプションであり、Stats page optional で始まるブロックを削除することで無効にできます。

公開IPアドレスを制限したり、ポートを変更したり、アクセス認証情報を変更したりすることでアクセスを制限することもできます。
この例では、統計情報ウェブサイトは以下の通りです。

http://<nodo.pandorafms>:8404/haproxy?stats

認証情報 admin:Pandor4! を使用します。

HTTPS HAProxy の証明書

ご覧のとおり、以下の証明書を参照が、

bind *:9200 ssl crt /etc/haproxy/certs/haproxy.pem

設定ファイルに記載されています。本番環境では、信頼できる CA によって署名された公式証明書を使用するのが最適です。ラボテストでは、以下のコマンドで作成した自己生成証明書を使用します。

sudo mkdir -p /etc/haproxy/certs

# Generate private key and self-signed certificate
sudo openssl req -x509 -nodes -days 365 \
   -newkey rsa:2048 \
   -keyout /etc/haproxy/certs/haproxy.key \
   -out /etc/haproxy/certs/haproxy.crt \
   -subj "/CN=haproxy.local"

次に、鍵と証明書を連結して .pem ファイルを作成します。有効な証明書を使用する場合は、証明書ファイルを使用する点を除き、手順は同様です。

# Combine certificate and key into a single file (required by HAProxy)
sudo cat /etc/haproxy/certs/haproxy.key /etc/haproxy/certs/haproxy.crt > /etc/haproxy/certs/haproxy.pem

HAProxy サービスを再起動します。

systemctl restart haproxy

HAProxy をインストールしたノードのターミナルから実行して、HTTPS を使用して OpenSearch ノードにアクセスできることを確認します。

curl -XGET -ku admin:'P4nd0r4!FMS' "https://127.0.0.1:9200/_cat/nodes?v"

API ルートに対して数回の呼び出しを行うと、呼び出しがノード間で分散されていることを確認できます。

curl -XGET -ku admin:'P4nd0r4!FMS' "https://127.0.0.1:9200/

Pandora FMS コンソールでの設定

HAProxy は他のインスタンスにインストールすることも可能ですが、クラスタにマシンを追加する手間を省くため、Pandora FMS ノード自体に直接インストールしました。そのため、設定には localhost を使用します。ただし、別のマシンに HAProxy が設定されている場合は、そのマシンの IP アドレスを使用する必要があります。

Pandora FMS コンソールの設定セクション 管理(Management) → セットアップ(Settings) → システム設定(System Settings) → ログ収集(Log collector) に移動し、必要なフィールドに入力して、証明書を設定している場合は HTTPS を使用するを有効にします。

OpenSearch が Pandora FMS に設定され接続されたことを示す緑色のチェックマークが表示されます。

Pandora FMS ドキュメント一覧に戻る