ホームページ  >  記事  >  運用・保守  >  es は docker でデプロイできますか?

es は docker でデプロイできますか?

WBOY
WBOYオリジナル
2022-08-15 17:09:112413ブラウズ

es は docker を使用してデプロイできます。es クラスターのデプロイは、「docker-compose」を使用して直接行うことができます。「docker-compose」は、複雑なアプリケーション、docker コンテナを使用するアプリケーションの定義と実行に使用される docker ツールです。通常、コンテナは複数のコンテナで構成されますが、「docker-compose」を使用すると、コンテナを起動するためにシェル スクリプトを使用する必要がなくなります。

es は docker でデプロイできますか?

このチュートリアルの動作環境: linux7.3 システム、docker バージョン 19.03、Dell G3 コンピューター。

es は docker でデプロイできますか?

es クラスターのデプロイは、docker-compose を使用して直接実行できます。

Docker Compose は、複雑なアプリケーションの定義と実行に使用される Docker ツールです。 。 Docker コンテナを使用するアプリケーションは通常、複数のコンテナで構成されます。 Docker Compose を使用する場合、コンテナーを起動するためのシェル スクリプトは必要なくなりました。

Compose は、構成ファイルを通じて複数の Docker コンテナを管理します。構成ファイルでは、すべてのコンテナがサービスを通じて定義され、docker-compose スクリプトを使用してアプリケーションとサービスが開始、停止、再起動されます。サービスに依存するすべてのコンテナーと同様に、複数のコンテナーを組み合わせて開発するシナリオに非常に適しています。

#知識を広げる

ES クラスターの概要

クラスターが必要な理由

単一マシンの elasticsearch データ ストレージを実行する場合、大規模なデータ ストレージの問題と単一障害点の問題という 2 つの問題に必然的に直面します。

大規模なデータ ストレージの問題: インデックス ライブラリを N 個のシャードに論理的に分割し、複数のノードに保存する

単一点障害の問題: シャード データを異なる場所に分割する ノードのバックアップ (レプリカ)

ES クラスター関連の概念

  • クラスター (クラスター): 共通のクラスター名を持つノードのグループ。

  • ノード: クラスター内の Elasticarch インスタンス

  • シャード: インデックスはさまざまな部分に分割できますストレージはシャーディングと呼ばれます。クラスター環境では、インデックスのさまざまなシャードをさまざまなノードに分割できます。

データ量が多すぎて、シングルポイントのストレージ容量が制限されているという問題を解決します。

es は docker でデプロイできますか?

ここでは、データを 3 つのシャード (shard0、shard1、shard2) に分割します。

  • プライマリ シャード: レプリカ シャードに対する相対的な定義。

  • レプリカ シャード (レプリカ シャード) 各プライマリ シャードは 1 つ以上のレプリカを持つことができ、データはプライマリ シャードと同じです。

データ バックアップにより高可用性が確保されますが、各シャードのコピーが 1 つあると必要なノード数が 2 倍になり、コストが高すぎます。

高可用性とコストのバランスを見つけるために、次のことを行うことができます:

  • 最初にデータをシャード化し、それを別のノードに保存します

  • 次に、各シャードをバックアップし、それを他のノードに配置して相互バックアップを完了します。

    #これにより、必要なサービス ノードの数を大幅に削減できます。図では、例として 3 つのシャードを使用し、各シャードの 1 つのコピーがバックアップされています。

es は docker でデプロイできますか?

ES クラスターの構築

es クラスターのデプロイは docker-compose を使用して直接実行できますが、Linux 仮想マシンには少なくとも 4G のメモリ領域が必要です。

まず、次の内容で docker-compose ファイルを作成します。 content:

version: '2.2'
services:
  es01:
    image: elasticsearch:7.12.1
    container_name: es01
    environment:
      - node.name=es01
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es02,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - elastic
  es02:
    image: elasticsearch:7.12.1
    container_name: es02
    environment:
      - node.name=es02
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es03
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data02:/usr/share/elasticsearch/data
    ports:
      - 9201:9200
    networks:
      - elastic
  es03:
    image: elasticsearch:7.12.1
    container_name: es03
    environment:
      - node.name=es03
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=es01,es02
      - cluster.initial_master_nodes=es01,es02,es03
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - data03:/usr/share/elasticsearch/data
    networks:
      - elastic
    ports:
      - 9202:9200
volumes:
  data01:
    driver: local
  data02:
    driver: local
  data03:
    driver: local
networks:
  elastic:
    driver: bridge

ファイル内容の紹介:

バージョン: 完全バージョン

es01: ノード

イメージ: ミラー

container_name: コンテナ名

environment: 環境変数

node.name: ノード名

cluster.name: クラスター名、es はクラスターを自動的に作成します

discovery.seed_hosts: 他の 2 つのアドレス。コンテナ名を使用して相互接続できます。

cluster.initial_master_nodes: 初期化されたマスター ノード。選挙に参加できます。

"ES_JAVA_OPTS=-Xms512m -Xmx512m": JVM メモリの最小値と最大値

volumes: データ ボリューム アドレス

ports: ポート マッピング

推奨学習: 「

docker ビデオ チュートリアル

以上がes は docker でデプロイできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。