サーバ間の OpenSearch マイグレーション

概要

本トピックは、ある OpenSearch サーバから別の OpenSearch サーバへ移行を行うためのガイドです。ソース(移行元)サーバ上のすべてのデータをターゲット(移行先)サーバへインポートし、可能な限り効率的かつ簡潔に移行手順を実行することを目的としています。

重要なポイント:

  • Pandora FMS 用 OpenSearch のオンラインインストールスクリプトを使用した自動インストールでは、デフォルトの認証情報(admin:P4nd0r4!FMS)が適用されます。
  • ガイド内でスナップショットに付けられている名前は migration ですが、必要に応じて、より識別しやすい別の名前を指定することも可能です。

手順

前提条件

OpenSearch のバックアップフォルダは、サーバ上で定義されている必要があります。

両方のサーバ上の /etc/opensearch/opensearch.yml ファイルに、次の行を追加します。

path.repo: ["/var/backups/opensearch"]

以下のコマンドを使用して、両方のサーバで OpenSearch サービスを再起動します。

sudo systemctl restart opensearch

フェーズ 1

ソースサーバ上で、バックアップを格納するためのフォルダとアクセス権限を準備します。

sudo mkdir -p /var/backups/opensearch
sudo rm -rf /var/backups/opensearch/*
sudo chown -R opensearch:opensearch /var/backups/opensearch/
sudo chmod -R 775 /var/backups/opensearch/

(何らかの理由で)以前に存在していた場合に備え、セキュリティ上の理由から rm コマンドが実行され、クリーンなディレクトリの状態でプロセスが開始されます。

OpenSearch にリポジトリを登録します。以前に作成されていた場合は、削除してから再作成します。

# Just in case, we’ll delete the old record from the memory
curl \
  -X DELETE \
  "https://localhost:9200/_snapshot/migration" -u 'admin:P4nd0r4!FMS' \
  -k
 
# We checked out the repository into the local folder
curl \
  -X PUT \
  "https://localhost:9200/_snapshot/migration" \
  -u 'admin:P4nd0r4!FMS' \
  -k \
  -H "Content-Type: application/json" \
  -d '{
    "type": "fs",
    "settings": {
      "location": "/var/backups/opensearch",
      "compress": true
    }
  }'

この場合、ドキュメントの冒頭で示されているように、リポジトリ名は migration です。

スナップショットは、すべての要素を含んだ状態で生成されるようになります。

curl \
  -X PUT \
  "https://localhost:9200/_snapshot/migration/migration?wait_for_completion=true" \
  -u 'admin:P4nd0r4!FMS' \
  -k \
  -H "Content-Type: application/json" \
  -d '{
     "indices": "*",
     "include_global_state": true
  }'

wait_for_completion=true が指定されているため、処理が完了するまで端末は停止し、ロックされます。

完了後、取得したファイルを圧縮し、ターゲットサーバに送信することができます。

# 1. 実際のサイズを確認
sudo du -sh /var/backups/opensearch/
 
# 2. /tmp に圧縮
sudo tar -czvf /tmp/opensearch_migration.tar.gz -C /var/backups/opensearch .
 
# 3. 対象サーバに送信 (‘user’ と対象 IP アドレスは置き換えます)
scp /tmp/opensearch_migration.tar.gz user@TARGET_SERVER_IP_ADDRESS:/tmp/

あるいは、その他の任意のファイル転送プロトコルを使用することも可能です。

フェーズ 2

Pandora FMS が稼働しており、対象の OpenSearch に接続されている場合は、停止する必要があります。

sudo systemctl stop pandora_server

次に、バックアップを解凍し、適切な権限を適用します。ターゲットサーバ上の OpenSearch バックアップフォルダに(何らかの理由で)既にファイルなどが存在している場合は、それらを最初に削除する必要があります。

sudo mkdir -p /var/backups/opensearch
sudo rm -rf /var/backups/opensearch/* # Erase, just in case
sudo tar -xzvf /tmp/opensearch_migration.tar.gz -C /var/backups/opensearch/
 
sudo chown -R opensearch:opensearch /var/backups/opensearch/
sudo chmod -R 755 /var/backups/opensearch/

次に、ターゲットの OpenSearch サーバにリポジトリを登録します。

curl \
  -X PUT \
  "https://localhost:9200/_snapshot/migration" \
  -u 'admin:P4nd0r4!FMS' \
  -k \
  -H "Content-Type: application/json" \
  -d '{
    "type": "fs",
    "settings": {
      "location": "/var/backups/opensearch",
      "compress": true
    }
  }'

また、問題を防ぐためにデフォルトのインデックスをクリアします。

curl \
  -X DELETE \
  "https://localhost:9200/pandorafms-*,"\
  ".opensearch-observability,"\
  ".plugins-ml-config,"\
  "security-auditlog-*,"\
  "top_queries-*,"\
  ".opensearch-sap-*"\
  --cert /etc/opensearch/admin.pem \
  --key /etc/opensearch/admin-key.pem \
  -k

最後に、作成されたコピーを新しいサーバにインポートします。

curl \
  -X POST \
  "https://localhost:9200/_snapshot/migration/migration/_restore" \
  --cert /etc/opensearch/admin.pem \
  --key /etc/opensearch/admin-key.pem \
  -k \
  -H "Content-Type: application/json" \
  -d '{
    "indices": "*,-.opendistro_security",
    "include_global_state": true,
    "partial": false
  }'

.opendistro_security は、セキュリティプラグインがそれ自体をブロックしないように省略されています。

{“accepted”:true} という応答を待つ必要があります。

フェーズ 3

検証:

curl \
  -X GET \
  "https://localhost:9200/_cat/indices?v" \
  --cert /etc/opensearch/admin.pem \
  --key /etc/opensearch/admin-key.pem \
  -k

そして、PFMS サーバを再起動します。

sudo systemctl start pandora_server

この手順を実行することで、対象の OpenSearch サーバに接続された PFMS Web コンソールから、すべてのログにアクセスし、確認できるようになります。

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