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

推薦する

ユーザーエクスペリエンスの76の経験ポイントの要約

ウェブサイト体験の分類1. 感覚体験:快適性を重視した視聴覚体験をユーザーに提供します。 2. イン...

HTML で vue-router を使用するサンプル コード

vue と vue-router の紹介 <script src="https://...

Linux で PHP を 5.6 にアップグレードする実用的な方法

1: ターミナルに入ったらPHPのバージョンを確認する php -v出力は次のようになります。 PH...

React 入門レベルの詳細なメモ

目次1. Reactの基本的な理解1. はじめに2. Reactの特徴3. Reactが効率的な理由...

Centos7 での python3 のインストールとアンインストールに関するチュートリアル

1. Python 3をインストールする1. 依存パッケージをインストールしますyum instal...

MySQL インデックス データ構造の詳細な分析

目次概要インデックスデータ構造バイナリツリー赤黒木BツリーB+ツリーハッシュ索引InnoDB インデ...

Vueはデータを初期状態にリセットします

場合によっては、データ内のデータを再利用する必要がありますが、データ内のデータはさまざまなフォーム、...

MySQL NULLデータ変換方法(必読)

MySQL を使用してデータベースをクエリし、左結合を実行すると、関連付けられたフィールドの一部に...

Docker で php-nginx-alpine イメージをゼロから構築する方法

これまでにも Docker 環境でいくつかのプロジェクトを実行したことはありますが、まだイメージをよ...

React Hooksを使用する際のよくある落とし穴

React Hooks は React 16.8 で導入された新しい機能で、クラスを使用せずに状態や...

血の写輪眼と輪廻眼の特殊効果コードを実現するためのHTML+CSS

結果 (完全なコードは下部にあります): 実装は難しくありませんが、繰り返しコードが多くなります。実...

オブジェクトアニメーションによってブロックされずにオブジェクトに div を表示する方法

今日はメニューボタンを作りました。マウスをボタンに移動するすると、ドロップダウンサブメニューが表示さ...

SSL を実装するために nginx を設定する方法の例

環境説明サーバーシステム: Ubuntu 18.04 64ビットnginx: 1.14この記事では主...

HTML 編集の基礎 (初心者必読)

DREAMWEAVER を開き、新しい HTML を作成します。 。ボディの特性: bgcolor...

Expressはログイン認証を実装

この記事では、ログイン認証を実装するためのExpressの具体的なコードを例として紹介します。具体的...