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 における := と = の違いをグラフィカルに紹介

推薦する

Vue.js スロットにおけるスコープ付きスロットの使用法の詳細な説明

目次スロットなしVue2.x スロットスロット付き名前付きスロットスロット属性なしスロットの簡単なサ...

カスタム変数を使用した MySQL クエリの最適化

目次並べ替えクエリの最適化変更されたばかりのデータ行を繰り返し取得しないようにする遅延ロードされた結...

フロントエンドJSサンドボックスを実装するいくつかの方法についての簡単な説明

目次序文iframeはサンドボックスを実装しますdiffメソッドを使用したサンドボックスの実装プロキ...

MySQL マスタースレーブレプリケーションプロセスの詳細な説明

1. マスタースレーブレプリケーションとは何ですか?マスター データベースの DDL および DML...

gbk utf8 GBK と UTF-8 ウェブページエンコーディングを正しく理解して使用する方法

Web ページ エンコーディングは英語では web page encoding と翻訳され、Web ...

MySQL でテーブル データを削除した後もディスク領域がまだ占有されているのはなぜですか?

目次1.MySQLデータ構造2. テーブルファイルのサイズは変更されておらず、MySQLの設計に関連...

Nginx設定の原理と実装プロセスの詳細な説明https

Linuxユーティリティcertbotを使用してhttps証明書を生成するこのツールは Let&#...

Reactで例外を適切にキャプチャする方法

目次序文エラー境界エラー境界を超えてトライ/キャッチwindow.onerror、エラーイベント未処...

Nginx ドメイン名の書き換えとワイルドカードドメイン名の解決を設定する方法

この記事では、ドメイン名の書き換えとワイルドカードドメイン名の解決を行うための Nginx の設定方...

Google Recaptcha 認証を使用した Vue 実装例

最近のプロジェクトでは、Google ロボット認証を使用する必要があります。これには VPN が必要...

Vue はコンポーネント間の通信をどのように実装しますか?

目次1. 父と息子のコミュニケーション1.1 親コンポーネント --> 子コンポーネント1.2...

Innodb で MySQL の 2T テーブルをすばやく削除する方法の例

序文この記事は主に、MySQL の Innodb で 2T の大きなテーブルをすばやく削除する方法に...

MySql8 WITH RECURSIVE 再帰クエリ親子コレクションメソッド

背景コメントに似た機能を開発する場合は、必要に応じてすべてのコメントのサブセットをクエリする必要があ...

ウェブページを作る前に、これらのいわゆる仕様を見てみましょう

この記事では、Web ページを作成する前に確認すべき、いわゆる仕様をいくつかまとめました。皆様のお役...

HTML リスト タグ dl、ul、ol の使用例

コードをコピーコードは次のとおりです。 <!--リストタグ: <dl>: 階層リス...