Docker-compose を使用して ELK クラスターを構築する方法

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構成ファイル内のパスを変更するだけで、3 インスタンスの ES クラスターと Kibana インスタンスをすばやく構築できます。

計画

クラスターを形成するために 3 つの ES インスタンスを作成し、クラスターに接続するための Kibana インスタンスを作成する予定です。各 ES インスタンスは、ローカル構成ファイルを使用して、構成ファイルの保存とバージョン管理を容易にします。 Kibana の設定ファイルもローカルに配置され、ファイル マッピングを通じてコン​​テナーにマウントされます。

全体的なディレクトリ構造は次のとおりです。

$ツリー
。
├── docker-compose.yml
├── kibana.yml
├── ノード1
│ └── es1.yml
├── ノード2
│ └── es2.yml
└── ノード3
 └── es3.yml

3 つのディレクトリ、5 つのファイル

アレンジファイル

メインのオーケストレーションファイルはdocker-compose.ymlです。

バージョン: "2.1"
サービス:
 es-ノード1:
 イメージ: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 ホスト名: es-node1
 expose: #コンテナ外のアプリケーションにポートを公開しない - "9001"
 ports: #ホストにポートを公開 - "9200:9200"
 - 「9300:9300」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 環境:
 - クラスター名=es-クラスター
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
 ulimits:
 メモリロック:
 ソフト: -1
 難しい: -1
 ネットワーク:
 es-クラスタネットワーク:
 ipv4_アドレス: 172.21.0.10
 es-ノード2:
 イメージ: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 ホスト名: es-node2
 expose: #コンテナ外のアプリケーションにポートを公開しない - "9002"
 ports: #ポートをホストに公開 - "9201:9201"
 - 「9301:9301」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 環境:
 - クラスター名=es-クラスター
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
 ulimits:
 メモリロック:
 ソフト: -1
 難しい: -1
 ネットワーク:
 es-クラスタネットワーク:
 ipv4_アドレス: 172.21.0.11
 es-ノード3:
 イメージ: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
 ホスト名: es-node3
 expose: #コンテナ外のアプリケーションにポートを公開しない - "9003"
 ports: #ポートをホストに公開 - "9202:9202"
 - 「9302:9302」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/node3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
 環境:
 - クラスター名=es-クラスター
 - bootstrap.memory_lock=true
 - "ES_JAVA_OPTS=-Xms256m -Xmx256m"
 ulimits:
 メモリロック:
 ソフト: -1
 難しい: -1
 ネットワーク:
 es-クラスタネットワーク:
 ipv4_アドレス: 172.21.0.12
 キバナ:
 イメージ: docker.elastic.co/kibana/kibana:6.7.0
 ポート:
 - 「5601:5601」
 ボリューム:
 - ~/Projects/sh-valley/docker-conf/elasticstack/cluster/kibana.yml:/usr/share/kibana/config/kibana.yml
 環境:
 -ELASTICSEARCH_URL=http://es-node1:9200
 ネットワーク:
 - es-クラスタネットワーク
ネットワーク:
 es-クラスタネットワーク:
 ドライバー: ブリッジ
 ipam:
 ドライバー: デフォルト
 設定:
 - サブネット: 172.21.0.0/16
 ゲートウェイ: 172.21.0.1

ES 構成ファイルでは、次のように 1 つの例のみが選択されます。

クラスター名: elasticsearch-cluster
ノード名: es-node1
ネットワーク.bind_host: 0.0.0.0
ネットワーク.公開ホスト: 172.21.0.10
http.ポート: 9200
トランスポート.TCP.ポート: 9300
http.cors.enabled: 有効
http.cors.allow-origin: "*"
ノードマスター: true 
ノードデータ: true 
discovery.zen.ping.unicast.hosts: ["172.21.0.10:9300","172.21.0.11:9301","172.21.0.12:9302"]
discovery.zen.最小マスターノード数: 2

Kibanaの設定ファイルは次のとおりです

サーバー名: kibana
サーバーホスト: "0"
elasticsearch.hosts: [ "http://es-node1:9200", "http://es-node2:9201", "http://es-node3:9202" ]
xpack.monitoring.ui.container.elasticsearch.enabled: 無効

起動コマンド

設定ファイルが準備できたら、クラスタを起動できます。

$ docker-compose アップ -d

起動プロセスが遅くなる可能性があります。コマンド ラインからクラスター ノードを確認できます。

$ curl http://localhost:9200/_cat/nodes
172.21.0.12 51 96 29 6.53 6.43 3.72 md - es-node3
172.21.0.11 47 96 30 6.53 6.43 3.72 mdi - es-node2
172.21.0.10 49 96 30 6.53 6.43 3.72 mdi * es-ノード1

後続の使用プロセスでは、docker-compose コマンドを使用してサービスを開始および停止できます。関連するインスタンスを保持したくない場合は、docker-compose down を使用してコンテナをシャットダウンして削除できます。

参考文献

elasticsearch ドキュメント
Docker-compose カスタム ネットワーク、固定コンテナ IP アドレス
docker-compose ポートと expose の違い

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker Compose ワンクリック ELK デプロイ方式の実装
  • Docker-compose を使用して ELK をデプロイするためのサンプル コード
  • docker compose を使用して elk システムを構築する方法
  • Docker Compose を使用して ELK を迅速にデプロイする (テスト済みで効果的)

<<:  js は axios 制限リクエスト キューを実装します

>>:  MySQL における := と = の違いをグラフィカルに紹介

推薦する

Vue3 でパンくず関数コンポーネントをカプセル化するいくつかの方法

目次序文1. パンくずリストはなぜ必要なのでしょうか? 2. 一次包装1. 実装のアイデア2. コー...

テキストエリアタグはサイズ変更できず、マウスでドラッグすることもできません

テキストエリアタグのサイズは不変ですコードをコピーコードは次のとおりです。 <textarea...

Javascript クロージャの使用シナリオの原則の詳細

目次1. 終了2. クロージャの使用シナリオ1.タイムアウトを設定する2. コールバック3. 手ぶれ...

今日、私は非常に奇妙なクリックの問題に遭遇し、自分で解決しました

...こんな感じで、今日はポップアップウィンドウを作ろうと思ったのですが、バックエンド PHP によ...

Vue3 における computed の新しい使用例のまとめ

vue3 での computed の使い方。vue3 は vue2 のオプション API と互換性が...

MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明

1. クラスター化インデックステーブル データはインデックスの順序で保存されます。つまり、インデック...

Alibaba Cloud Server に MySQL データベースをインストールする詳細なチュートリアル

目次序文1. MySQLをアンインストールする2. MySQLをインストールする要約する序文学習中に...

Vue 監視プロパティと計算プロパティ

目次1. 監視プロパティを監視する1. ショッピングカート2. すべて選択し、すべて選択解除する2....

フレックスレイアウトのスペース間の最後の行の左揃えの問題を解決する方法

まずはコードと効果を見てみましょう↓ <スタイル> 。主要 { アウトライン: 1px ...

MySQL でストリーミングクエリを使用してデータ OOM を回避する

目次1. はじめに2. JDBCはストリーミングクエリを実装する3. パフォーマンステスト3.1. ...

MySQL のインデックスとデータ テーブルを管理する方法

目次テーブルの競合を見つけて修正するインデックス統計の更新テーブルの競合を見つけて修正するデータ テ...

CSS における zoom:1 属性の定義と機能

今日、CSS の zoom 属性は何のために使用されるのかと尋ねられました。この属性は、フローティン...

Unicode の一般的な文字の概要

初期のコンピューターのほとんどは ASCII 文字しか使用できませんでしたが、その後、主要な西洋のア...