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

推薦する

Redmine の Docker インストール手順

イメージをダウンロードします(オプションの手順です。省略した場合は、手順 3 と 4 で自動的にイン...

MySQL テーブルの断片化を解消し、スペースを再利用する方法

目次MySQL テーブルの断片化の原因行の断片化行内断片化空き領域の断片化MySQL で極度に断片化...

JavaScript 配列メソッド - 体系的な概要と詳細な説明

目次一般的な配列メソッド配列要素の追加と削除配列ヘッダーの操作配列の末尾を操作する任意の場所に追加ま...

Ubuntu で FTP サーバーを構築する方法の詳細な説明 (成功保証)

1. 今日の午後、コースの要件により、Ubuntu で FTP サーバーを設定する実験を行う必要が...

Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法

序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...

MySQL 5.7.18 MSI インストール グラフィック チュートリアル

この記事では、参考までにMySQL 5.7.18 MSIインストールチュートリアルを紹介します。具体...

HTMLポップアップdivはモバイルの中央揃えを実現するのに非常に便利です

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

UbuntuにMySQLをインストールするときにデフォルトのパスワードを変更する詳細な手順

ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...

Linux ps および pstree コマンドの知識ポイントのまとめ

Linux の ps コマンドは Process Status の略です。 ps コマンドは、システ...

HTMLで下線を設定するには?HTMLでテキストに下線を付ける方法

HTML で下線を引くには、以前はテキストを <u></u> タグで囲む必要...

Win10環境にMysql5.7.23をインストールする際の問題点と落とし穴

たくさんのチュートリアルを読みましたが、うまくインストールできませんでした。しばらく試行錯誤した後、...

CSS 標準: vertical-align プロパティ

<br />原文: http://www.mikkolee.com/13私は最近、ver...

Nginx 正規表現関連のパラメータとルールの紹介

序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...

Nginx は rtmp ライブ サーバーの実装コードを構築します

1. nginxソースディレクトリに新しいrtmpディレクトリを作成し、git clone http...