Alibaba Cloud Elasticsearch クラスターの YML パラメーターを設定して、インデックスの自動作成、インデックス削除ポリシー、監査ログ、Watcher などの設定を管理できます。このトピックでは、オリジン間リソース共有 (CORS)、リモート reindex ホワイトリスト、監査ログ、キューサイズに関する YML パラメーターの設定方法について説明します。
注意事項
2020 年 10 月以降、Alibaba Cloud Elasticsearch のネットワークアーキテクチャの調整により、reindex API を使用した一部のクラスター間データ移行シナリオが制限されています。reindex API を使用してクラスター間でデータを移行する必要がある場合は、「プライベートネットワーク接続を使用してセルフマネージド Elasticsearch クラスターから Alibaba Cloud Elasticsearch クラスターにデータを移行する」の注意事項の指示に従ってください。
中国 (張家口) リージョンおよび中国以外のリージョンにあるクラスターでは、ネットワークアーキテクチャの調整スケジュールが異なります。ネットワーク接続を確認するには、チケットを送信して Alibaba Cloud Elasticsearch のテクニカルサポートにお問い合わせください。
設定の変更
クラスターの詳細ページに移動します。
- Alibaba Cloud Elasticsearch コンソールにログインします。
- 左側のナビゲーションウィンドウで、[Elasticsearch クラスター] をクリックします。
- 上部のナビゲーションバーで、リソースグループとリージョンを選択します。[クラスター] ページで、目的のクラスターの ID をクリックします。
- 表示されたページの左側のナビゲーションウィンドウで、クリックします。
YML ファイル設定ページに移動します。
左側のナビゲーションウィンドウで、 をクリックします。
ES クラスター設定ページで、YML 設定 の右側にある 設定の編集 をクリックします。
YML 設定 ダイアログボックスで、必須パラメーターを設定します。
説明elasticsearch.ymlの内容を表示するには、Kibana コンソールを開き、GET _cluster/settings?include_defaultsコマンドを実行します。パラメーター
説明
自動インデックス
存在しないインデックスにドキュメントが送信されたときに、インデックスを自動的に作成するかどうかを指定します。
これは、YML ファイルの action.auto_create_index 設定に相当します。デフォルト値は false です。
Alibaba Cloud Elasticsearch は、デフォルトでインデックスの自動作成を無効にしています。次のいずれかの方法で有効にできます。
重要自動的に作成されたインデックスは、要件を満たさない可能性があります。この機能を有効にする前に、影響を評価してください。
コンソールの クラスター設定 でこの設定を有効にします。これは静的な変更であり、クラスターの再起動をトリガーします。
再起動なしで動的に有効にします。Kibana コンソールにログインし、次のいずれかのコマンドを使用してインデックスの自動作成を許可します。
すべてのインデックスの自動作成を許可する
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "true" } } }重要このコマンドは、すべてのインデックスの自動作成を許可します。この機能を無効にするには、
trueをfalseに変更します。特定のインデックスのみ自動作成を許可する。次の例では、システムインデックスのみが自動的に作成されることを許可します。
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "+.*,-*" } } }
削除する時にインデックス名の指定
インデックスを削除するために明示的に名前を付ける必要があるかどうかを指定します。ワイルドカードを使用して指定 を選択すると、ワイルドカードを使用してインデックスを一括で削除できます。削除されたインデックスは回復できません。この設定は注意して使用してください。
これは、YML ファイルの action.destructive_requires_name 設定に相当します。デフォルト値は true です。
監査ログのインデックス作成
有効にすると、システムは Elasticsearch クラスターでの作成、削除、更新、クエリなどの操作の監査ログを記録します。監査ログはディスク領域を消費し、パフォーマンスに影響を与える可能性があります。必要な場合にのみ、この機能を有効にしてください。パラメーターの詳細については、「監査ログの設定」をご参照ください。
これは、YML ファイルの xpack.security.audit.enabled 設定に相当します。デフォルト値は false です。
Watcher の有効化
有効にすると、X-Pack の Watcher 機能を使用できます。.watcher-history* インデックスが過剰なディスク領域を消費するのを防ぐために、定期的にクリーンアップしてください。
これは、YML ファイルの xpack.watcher.enabled 設定に相当します。デフォルト値は false です。
その他の設定
以下のパラメーターもサポートされています。特に指定がない限り、これらの設定はデフォルトで Elasticsearch 5.x、6.x、および 7.x と互換性があります。
http.cors.enabled
http.cors.allow-origin
http.cors.max-age
http.cors.allow-methods
http.cors.allow-headers
http.cors.allow-credentials
リモート reindex ホワイトリストの設定
reindex.remote.whitelist
Elasticsearch 7.x および 8.x バージョンは xpack.security.audit.logfile.events.include パラメーターのみをサポートします。バージョン 5.x および 6.x は以下のパラメーターをサポートします。
xpack.watcher.enabled
xpack.notification
xpack.security.audit.enabled
xpack.security.audit.index.bulk_size
xpack.security.audit.index.flush_interval
xpack.security.audit.index.rollover
xpack.security.audit.index.events.include
xpack.security.audit.index.events.exclude
xpack.security.audit.index.events.emit_request_body
xpack.security.audit.index.settings.index
LDAP 機能
5.x を除くすべてのバージョンは以下をサポートします。
xpack.security.authc.realms.ldap1
xpack.security.authc.realms.active_directory1
xpack.security.authc.realms.pki1
xpack.security.authc.realms.saml1
xpack.security.authc.realms.kerberos1
xpack.security.authc.token.enabled
thread_pool.bulk.queue_size (5.x および 6.x バージョン用)
thread_pool.write.queue_size (6.x、7.x、および 8.x バージョン用)
thread_pool.search.queue_size
カスタム SQL プラグイン設定
xpack.sql.enabled
デフォルトでは、Elasticsearch クラスターは X-Pack の組み込み SQL プラグインを有効にします。カスタム SQL プラグインをアップロードしたい場合は、xpack.sql.enabled を false に設定します。
パイプライン (前処理) の設定
index.default_pipeline:インデックスのデフォルト ingest パイプラインを指定します。このパイプラインは、個々のインデックスリクエストで指定されたパイプラインの前に実行され、ドキュメントがインデックスに書き込まれる前に処理します。
index.final_pipeline:インデックスの最終 ingest パイプラインを指定します。このパイプラインは、default_pipeline を含む他のすべてのパイプラインが完了した後に実行されます。default_pipeline とは異なり、final_pipeline は最初のドキュメント書き込み時にのみトリガーされます。デフォルトでは、更新操作は final_pipeline をトリガーしません。更新操作中に final_pipeline を強制的に実行するには、doc_as_upsert を true に設定します。
YML 設定例:
index.default_pipeline: my_pipeline index.final_pipeline: my_final_pipelineクエリ結果制限の設定
index.max_result_window:クエリの from + size パラメーターで返される結果の最大数を制御します。Elasticsearch 7.4.0 以降では、デフォルト値は 10000 です。この値は、次の REST API コマンドを実行することで変更できます (最大 100000)。
PUT /<index_name>/_settings { "index": { "max_result_window": 100000 } }重要max_result_window を大きな値に設定すると、メモリと CPU のオーバーヘッドが増加します。深いページネーションのシナリオでは、この値を増やす代わりに scroll API または search_after を使用してください。
cluster.max_shards_per_node 設定の永続化
cluster.max_shards_per_node パラメーターは、データノードあたりのシャードの最大数 (プライマリシャードとレプリカシャードを含む) を制限します。このパラメーターは、Kibana Dev Tools で次のコマンドを実行することで変更できます。
PUT /_cluster/settings { "persistent": { "cluster.max_shards_per_node": 3000 } }persistent キーワードは、この変更がクラスター設定に永続化され、Elasticsearch インスタンスの再起動後も有効であることを意味します。再起動後にこのパラメーターを再設定する必要はありません。
モニタリングデータ収集の無効化
クラスターにアクティブなクエリがないにもかかわらずメモリ使用量が高いままである場合、モニタリングデータ収集を無効にしてメモリ使用量を削減できます。Kibana Dev Tools で次のコマンドを実行します。
PUT _cluster/settings { "persistent": { "xpack.monitoring.collection.indices": "*,-.*" } }重要モニタリングデータ収集を無効にすると、Kibana の [モニタリング] ページにインデックスのモニタリング情報が表示されなくなります。インデックスのステータスを表示するには、代わりに
GET _cat/indicesコマンドを実行します。
強制アップデート
YML 設定の変更を強制するかどうかを制御します。有効な値:
閉じる:変更は強制されません。必要に応じて変更モード (インプレース更新またはブルーグリーン更新) を選択できます。システムは、ノードの可用性やシャードの割り当て状況など、クラスターの健全性をチェックして、変更が安全であることを確認します。
有効化:変更は強制されます。システムは、ノードの障害や未割り当てのシャードなど、クラスターの健全性ステータスを無視するため、再起動フェーズで不安定になる可能性があります。
アップデートモード
YML ファイルへの変更を適用する方法を指定します。有効な値:
説明強制アップデート パラメーターは、閉じる パラメーターが 閉じる に設定されている場合にのみ設定できます。
ローリングアップデート (デフォルト):システムは、更新が必要なノードに対してローリング変更を実行します。変更中にデータはコピーされず、所要時間はデータ量に影響されません。ただし、この方法はクラスターのパフォーマンスに影響を与える可能性があります。
ブルーグリーンリリースの変更:システムは同数の新しいノードを追加し、データをコピーしてから、トラフィックをシームレスに新しいノードに切り替えます。このプロセスはよりスムーズですが、時間がかかり、ノードの IP アドレスが変更されます。
変更モードの詳細については、「変更モード」をご参照ください。
重要YML ファイルを設定すると、クラスターのローリングリスタートがトリガーされます。クラスター内のインデックスにレプリカがあり、クラスターの負荷が正常 (CPU 使用率が約 60%、ヒープメモリ使用量が約 50%、load_1m が CPU コア数より低い) であれば、通常、再起動中もサービスは利用可能です。再起動の所要時間は、クラスターのサイズ、データ量、負荷によって異なります。この操作はオフピーク時に実行してください。
クラスターの負荷が高い、インデックスにレプリカがない、ワークロードに大量の書き込みまたはクエリリクエストが含まれる場合、クラスターの変更中に時折アクセスがタイムアウトすることがあります。クライアントアクセススクリプトにリトライメカニズムを設定して、サービスへの影響を最小限に抑えてください。
クラスターの YML 設定 (スケールアップやスケールダウンなど) でブルーグリーン変更が進行中で、クラスターのステータスが「更新中」の場合、追加の変更はインプレース変更のみがサポートされます。YML 設定でブルーグリーン変更が進行中かどうかは、変更履歴を表示して確認できます。
この操作は、インスタンスを再起動します。確認してから操作を行ってください。 を選択し、OK をクリックします。
確認後、Elasticsearch クラスターが再起動します。再起動中は、[タスク] リストで進捗状況を確認できます。再起動が完了すると、YML ファイルの設定が有効になります。
変更できないパラメーター
Alibaba Cloud Elasticsearch は、製品ドキュメントに記載されている YML パラメーターのみをサポートします。以下のパラメーターは変更できません。
パラメーター | 説明 |
index.store.compress.stored | ストレージ圧縮パラメーター。 |
transport.tcp.compress | トランスポート層圧縮パラメーター。 |
indices.query.bool.max_clause_count | ブール値クエリで許可される句の最大数。 |
api_key.enabled | API キー機能のスイッチ。 |
http.max_content_length | HTTP リクエストコンテンツの最大サイズ。 |
discovery.zen.ping_timeout | クラスター検出パラメーター。このパラメーターは通常、調整する必要はありません。 |
indices.breaker.total.use_real_memory | サーキットブレーカーパラメーター。 |
indices.memory.index_buffer_size | インデックス作成に使用されるメモリバッファーのサイズ。 |
discovery.zen.* パラメーターは通常、調整する必要はありません。index.translog.flush_threshold_size は、クラスターレベルの YML 設定項目ではなく、インデックスレベルの設定です。インデックス設定を使用して設定できます。
その他の設定 セクションでサポートされていないパラメーターを送信すると、システムは YML 設定が無効であり、YML 設定ファイルを確認する必要があるというエラーを返します (エラーコード:InvalidEsConfig)。
CORS アクセスの設定
オリジン間リソース共有 (CORS) を設定して、他のオリジンのブラウザが Alibaba Cloud Elasticsearch クラスターにリクエストを送信できるかどうかを制御できます。[YML ファイル設定] パネルで、次のパラメーターを使用して CORS を設定できます。
表のパラメーターは、Alibaba Cloud Elasticsearch が HTTP サポートのために提供するカスタム設定です。
表のパラメーターは静的構成のみをサポートします。変更を適用するには、設定を elasticsearch.yml ファイルに書き込む必要があります。
表のパラメーターは、クラスターの ネットワーク設定に依存します。
パラメーター | デフォルト | 説明 |
http.cors.enabled | false | CORS を有効または無効にします。有効にすると、Elasticsearch は他のオリジンからのリクエストを許可します。
|
http.cors.allow-origin | リクエストを受け入れるオリジンを指定します。デフォルトでは、クロスオリジンリクエストは許可されておらず、オリジンは設定されていません。正規表現がサポートされています。たとえば、/https?:\/\/localhost(:[0-9]+)?/ は、このパターンに一致するリクエストを許可します。 警告 アスタリスク (*) は有効な値であり、クラスターが任意のオリジンからのクロスオリジンリクエストを受け入れることを許可します。この設定はセキュリティリスクをもたらすため、推奨されません。 | |
http.cors.max-age | 1728000 (20 日) | ブラウザが OPTIONS リクエストから取得した CORS 設定情報をキャッシュできる秒単位の期間。 |
http.cors.allow-methods | OPTIONS, HEAD, GET, POST, PUT, DELETE | 許可されるリクエストメソッドを指定します。 |
http.cors.allow-headers | X-Requested-With, Content-Type, Content-Length | 許可されるリクエストヘッダーを指定します。 |
http.cors.allow-credentials | false | レスポンスヘッダーに Access-Control-Allow-Credentials 情報を含めることができるかどうかを指定します。
|
Reindex API ホワイトリストの設定
クラスター間の安全なデータ移行を確保するために、ES_2 のプライベート接続アドレスとポートを ES_1 の Reindex API ホワイトリストに追加する必要があります。
ES_1 の ページに移動し、プライベート接続の設定 の横にある 編集 をクリックします。プライベート接続の設定 サイドパネルで、ターゲットの エンドポイント ID をクリックします。
新しい接続を追加するには、インスタンスのプライベート接続を設定 サイドパネルの下部にある + プライベート接続を追加 をクリックします。
VPC コンソールの エンドポイント接続 タブで、エンドポイント ID の横にある
アイコンをクリックして、対応するドメイン名を表示します。重要Reindex API ホワイトリストに追加する前に、ドメイン名からアベイラビリティゾーン識別子を削除する必要があります。
たとえば、完全なドメイン名が "ep-bp1****************-cn-hangzhou-i.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com" の場合、アベイラビリティゾーン識別子 "-cn-hangzhou-i" を削除して、最終的なドメイン名 "ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com" を取得します。
ES_1 の YML ファイルで、Reindex API ホワイトリストを設定します。ホワイトリストのエントリは、エンドポイントのドメイン名とポートでなければなりません。
reindex: remote: whitelist: >- ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com:9200ES クラスター設定ページで、YML 設定の右側にある設定の変更をクリックします。パネルのその他の設定 YAML エディターで、前述のホワイトリスト設定を追加します。
監査ログの設定
監査ログはデフォルトで無効になっています。監査ログを表示する前に、有効にする必要があります。有効にすると、システムは作成、削除、更新、クエリなどの操作のログを記録します。監査ログを有効にし、設定し、表示する手順は、クラスターのバージョンによって異なります。
監査ログの詳細については、「監査セキュリティ設定」をご参照ください。
バージョン 7.x 以降
YML 設定 パネルに移動します。
詳細については、「設定の変更」をご参照ください。
監査ログのインデックス作成 セクションで、有効化 を選択して監査ログを有効にします。
監査ログ設定をカスタマイズします。
監査ログを有効にした後、その他の設定 で xpack.security.audit.logfile.events.include パラメーターを設定できます。例:
xpack: security: audit: logfile: events: include: >- access_denied,anonymous_access_denied,authentication_failed,connection_denied,tampered_request,run_as_denied,run_as_granted重要バージョン 7.x 以降のクラスターでは、xpack.security.audit.logfile.events.include パラメーターのみを設定できます。
デフォルトでは、監査ログ設定は拒否または失敗したリクエストのログのみを記録します。成功したリクエストのログを取得するには、access_granted イベントを追加します。これにより、すべてのアクセス情報がディスクに保存され、ディスク使用率が高くなる可能性があります。トラブルシューティング後、監査ログ機能を無効にしてください。
監査ログを表示します。
バージョン 5.x および 6.x
YML 設定 パネルに移動します。
詳細については、「YML ファイル設定」をご参照ください。
監査ログのインデックス作成 セクションで、監査ログ検索の開始 を選択して監査ログを有効にします。
以下は、監査ログのインデックス作成のデフォルト設定です。ビジネスニーズに基づいて調整できます。
xpack.security.audit.index.bulk_size: 5000 xpack.security.audit.index.events.emit_request_body: false xpack.security.audit.index.events.exclude: run_as_denied,anonymous_access_denied,realm_authentication_failed,access_denied,connection_denied xpack.security.audit.index.events.include: authentication_failed,access_granted,tampered_request,connection_granted,run_as_granted xpack.security.audit.index.flush_interval: 180s xpack.security.audit.index.rollover: hourly xpack.security.audit.index.settings.index.number_of_replicas: 1 xpack.security.audit.index.settings.index.number_of_shards: 10パラメーター
デフォルト
説明
xpack.security.audit.index.bulk_size
1000
単一のバッチリクエストで監査ログインデックスに書き込む監査イベントの数。
xpack.security.audit.index.flush_interval
1s
バッファリングされたイベントがインデックスにフラッシュされる頻度。
xpack.security.audit.index.rollover
daily
ロールオーバーによって新しいインデックスが作成される頻度。有効な値は hourly、daily、weekly、または monthly です。
xpack.security.audit.logfile.events.include
access_denied,anonymous_access_denied,authentication_failed, connection_denied,tampered_request,run_as_denied,run_as_granted
収集する監査ログイベントの種類。この機能は一部のリージョンでのみ利用可能です。詳細については、「制限事項」をご参照ください。イベントタイプの完全なリストについては、「監査イベントタイプ (7.x)」をご参照ください。
xpack.security.audit.index.events.include
access_denied, access_granted, anonymous_access_denied, authentication_failed, connection_denied, tampered_request, run_as_denied, run_as_granted
インデックスに書き込む監査ログイベントの種類。このパラメーターは、バージョン 5.x および 6.x のクラスターでのみサポートされます。イベントタイプの完全なリストについては、「監査イベントタイプ (6.x)」をご参照ください。
xpack.security.audit.index.events.exclude
null (デフォルトではイベントは除外されません)
インデックスから除外する監査ログイベント。
xpack.security.audit.index.events.emit_request_body
false
authentication_failed などの特定のイベントタイプがトリガーされたときに、REST 経由で送信されたリクエストボディを無視するか含めるかを指定します。
警告監査ログにリクエストボディ情報が含まれている場合、ログファイルに機密データが公開される可能性があります。
監査ログを表示します。
バージョン 5.x および 6.x のクラスターでは、監査ログが有効になっている場合、監査ログは .security_audit_log-* で始まる名前のインデックスに Elasticsearch クラスターに書き込まれます。したがって、Kibana コンソールで .security_audit_log-* で始まるインデックスの監査ログを表示できます。
重要監査ログインデックスはクラスターのストレージ領域を消費します。Elasticsearch は自動的に期限切れにしたり削除したりしないため、古い監査ログインデックスは手動で削除する必要があります。
オプション:監査ログインデックスのシャードを設定します。
バージョン 5.x および 6.x のクラスターでは、xpack.security.audit.index.settings を使用して監査ログインデックスのシャードを設定できます。次の設定では、プライマリシャードの数とレプリカの数の両方を 1 に設定します。
xpack.security.audit.index.settings: index: number_of_shards: 1 number_of_replicas: 1説明提供したパラメーターで監査ログインデックスを作成したい場合は、監査ログのインデックス作成を有効にするときに ( xpack.security.audit.enabled を true に設定して) この設定を渡します。そうしないと、監査ログインデックスは
number_of_shards: 5とnumber_of_replicas: 1のデフォルト設定を使用します。
キューサイズの設定
ドキュメントの書き込みおよび検索スレッドプールのキューサイズを調整できます。[YML ファイル設定] パネルで、必要に応じてキューサイズを設定します。次の例では、書き込みキューと検索キューのサイズをそれぞれ 500 と 1000 に設定します。ワークロードに基づいてこれらの値を調整してください。
バージョン 5.x および 6.x
thread_pool.bulk.queue_size: 500 thread_pool.search.queue_size: 1000バージョン 6.x、7.x、および 8.x
thread_pool.write.queue_size: 500 thread_pool.search.queue_size: 1000
パラメーター | デフォルト | 説明 |
thread_pool.bulk.queue_size | 200 | ドキュメント書き込みキューのサイズ。このパラメーターは、Alibaba Cloud Elasticsearch 5.x および 6.x バージョンに適用されます。 |
thread_pool.write.queue_size | 200 | ドキュメント書き込みキューのサイズ。このパラメーターは、Alibaba Cloud Elasticsearch 6.x、7.x、および 8.x バージョンに適用されます。 |
thread_pool.search.queue_size | 1000 | ドキュメント検索キューのサイズ。 |
前述の例の値は推奨値です。特別なシナリオでは、テクニカルサポートに変更を依頼するためにチケットを送信してください。
コンソールの YML ファイル設定パネルで thread_pool.search.queue_size を 1000 より大きい値に設定した場合、有効な値は 1000 のままです。特別なシナリオでは、テクニカルサポートに連絡して値を変更するためにチケットを送信してください。チケットの送信方法の詳細については、「テクニカルサポートの範囲と方法」をご参照ください。
よくある質問
Elasticsearch の 1プライマリ・複数レプリカモードを設定するにはどうすればよいですか?
1つのプライマリシャードと複数のレプリカを持つインデックスを設定するには、インデックスを作成するときに number_of_shards と number_of_replicas パラメーターを指定します。次の例では、1つのプライマリシャードと2つのレプリカを持つインデックスを作成します。
PUT /<index_name>
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 2
}
}この設定は、データの冗長性と読み取りスケーラビリティを向上させるために、複数のレプリカを持つ単一のプライマリシャードが必要なシナリオに適しています。各レプリカはプライマリシャードの完全なコピーであり、独立して検索リクエストを処理できます。