docker compose を使用して consul クラスタ環境を構築する例

docker compose を使用して consul クラスタ環境を構築する例

領事の基本概念

サーバーモードとクライアントモード
サーバー モードとクライアント モードは、consul ノードのタイプです。クライアントはユーザー クライアントを指すものではありません。

  • サーバー モードでは、データ永続化機能が提供されます。
  • クライアント モードでは永続性が提供されず、実際には機能せず、ユーザー クライアントの要求をサーバー モード ノードに転送するだけです。したがって、クライアント モード ノードは、要求の転送のみを担当する LB (負荷分散) として考えることができます。
  • 通常、サーバー モード ノードの数は、3 や 5 などの複数に設定する必要があります。クライアント モードではノードの数に制限はありません。

サーバーモードを開始するためのコマンドラインパラメータ

  • -server: 現在使用されているサーバー モードを示します。指定されていない場合は、クライアント モードを示します。
  • -node: クラスター内の現在のノードの名前を指定します。
  • -config-dir: サービスを定義する構成ファイルのパスを指定します。パスの下にある .json で終わるすべてのファイルにアクセスします。デフォルト値は /consul/config です。
  • -data-dir: consul がデータを保存するディレクトリ。デフォルト値は /consul/data です。
  • -datacenter: データセンター名。デフォルト値は dc1 です。
  • -ui: Consul の組み込み Web UI インターフェースを使用します。
  • -join: 既存のクラスターに参加します。
  • -enable-script-checks: ハートビートの有効化と同様に、サービスがアクティブかどうかを確認します。
  • -bind: サーバーの IP アドレスにバインドします。
  • -client: クライアントは IP アドレスにアクセスできます。デフォルト値は「127.0.0.1」で、ループバック接続のみが許可されることを意味します。
  • -bootstrap-expect: データセンター内のサーバーノードの予想数。Consul が起動すると、このサーバー数に達するまで待機してから、クラスター全体を起動します。このパラメータの値は、同じデータセンター内のすべてのサーバー ノードで一貫している必要があります。

ここに別のパラメータ、bootstrap があります。これは、サーバーがブートストラップ モードで実行されるかどうかを制御するために使用されます。サーバーがブートストラップ モードの場合、そのサーバーは自身をリーダーとして選出できます。データ センターでは、ブートストラップ モードにできるサーバーは 1 つだけであることに注意してください。したがって、このパラメータは通常、1 台のサーバーのみを含む開発環境でのみ使用できます。複数のサーバーを含むクラスター実稼働環境では、このパラメータは使用できません。複数のサーバーがリーダーとしてマークされている場合、データの不整合が発生します。また、このフラグは -bootstrap-expect と同時に指定することはできません。

docker-composeを使用して次のconsulクラスタ環境を構築します。

  • クラスターには3つのサーバーが含まれています: node1、node2、node3
  • クラスターには 1 つのクライアント (node4) が含まれており、クライアント上で Web UI アクセス サービスを提供します。 。

docker-compose.ymlファイルを編集する

バージョン: '2'
ネットワーク:
  投稿者:
 
サービス:
  領事1:
    画像: 領事
    コンテナ名: ノード1
    コマンド: エージェント -server -bootstrap-expect=3 -node=node1 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
    ネットワーク:
      - バイfn
 
  領事2:
    画像: 領事
    コンテナ名: ノード2
    コマンド: エージェント -server -retry-join=node1 -node=node2 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
    依存:
        -領事1
    ネットワーク:
      - バイfn
 
  領事3:
    画像: 領事
    コンテナ名: node3
    コマンド: エージェント -server -retry-join=node1 -node=node3 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1
    依存:
        -領事1
    ネットワーク:
      - バイfn
 
  領事4:
    画像: 領事
    コンテナ名: node4
    コマンド: agent -retry-join=node1 -node=ndoe4 -bind=0.0.0.0 -client=0.0.0.0 -datacenter=dc1 -ui 
    ポート:
      - 8500:8500
    依存:
        -領事2
        -領事3
    ネットワーク:
      - バイfn

サービスを開始する

$ docker-compose を起動します
$ docker exec -t node1 コンサルメンバー
ノード アドレス ステータス タイプ ビルド プロトコル DC セグメント
node1 172.21.0.2:8301 稼働サーバー 1.4.0 2 dc1 <すべて>
node2 172.21.0.4:8301 稼働サーバー 1.4.0 2 dc1 <すべて>
node3 172.21.0.3:8301 稼働サーバー 1.4.0 2 dc1 <すべて>
ndoe4 172.21.0.5:8301 alive client 1.4.0 2 dc1 <デフォルト>

http://127.0.0.1:8500 にアクセスしてください

登録構成センターの例

春:
  応用:
    名前: クラウド決済サービス
  ####領事登録センターアドレスクラウド:
    領事:
      有効: true
      ホスト: 127.0.0.1
      ポート: 8500
      発見:
        ホスト名: 127.0.0.1
        優先IPアドレス: true
        サービス名: ${spring.application.name}
        #ヘルスチェック間隔: 15秒
        インスタンス ID: ${spring.application.name}-8002
        有効: true

KVアクセスの例

$ docker exec -t node4 consul kv put foo "こんにちは foo"
$ docker exec -t node4 consul kv put foo/foo1 "こんにちは foo1"
$ docker exec -t node4 consul kv put foo/foo2 "こんにちは foo2"
$ docker exec -t node4 consul kv put foo/foo21 "こんにちは foo21"
$ docker exec -t node4 consul kv get foo
こんにちは、フー
$ docker exec -t node4 consul kv get -detailed foo/foo1
インデックス作成 124
フラグ 0
キー foo/foo1
ロックインデックス 0
インデックス変更 ​​124
セッション -
値 Hello foo1
$ docker exec -t node4 consul kv get -keys -separator="" foo
フー
フー/フー1
フー/フー2
フー/フー2/フー21
$ docker exec -t node4 consul kv get 実際のキーではない
エラー! 次の場所にキーが存在しません: not-a-real-key

以上が、docker compose を使って consul クラスター環境を構築する詳細です。docker compose クラスター環境の詳細については、123WORDPRESS.COM 内の他の関連記事にも注目してください。

以下もご興味があるかもしれません:
  • Docker Consul の概要とクラスター環境構築手順(グラフィカルな説明)

<<:  より人気がありクリエイティブなダーク背景のウェブデザインの例

>>:  Reactでカスタムフックを作成する方法を教えます

推薦する

2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...

MySQL パーティション テーブルの基本入門チュートリアル

序文最近のプロジェクトでは、大量のデータを保存する必要があり、このデータには有効期限があります。クエ...

スライドボタン効果を実現するネイティブJS

Jsで作ったスライドボタンの具体的なコードは参考までに。具体的な内容は以下のとおりですまずエフェク...

MySQLデータベースの共通操作スキルのまとめ

この記事では、MySQL データベースの一般的な操作テクニックをまとめます。ご参考までに、詳細は以下...

CSS ペイント API: CSS のような描画ボード

1. Canvas画像をCSS背景画像として使用するCSS ペイント API は、Canvas キャ...

Linux LVM 論理ボリューム構成プロセス (作成、増加、削減、削除、アンインストール) の詳細な説明

Linux LVM論理ボリューム構成プロセスの詳細な説明多くの Linux ユーザーは、オペレーティ...

JQueryセレクターの詳細な説明

目次基本的なセレクター:レベルセレクター:属性セレクター:フィルターセレクター:フォーム属性セレクタ...

MySQL InnoDB 監視 (システム層、データベース層)

MySQL InnoDB 監視 (システム層、データベース層) MySQL の監視に関しては、My...

Linux ユーザー状態とカーネル状態間の通信方法の詳細な説明

CPU 権限の制限により、Linux ユーザー状態とカーネル状態間の通信は、プロセス間通信を使用した...

JavaScript カスタム カレンダー効果

この記事では、JavaScriptカスタムカレンダーエフェクトの具体的なコードを参考までに紹介します...

Vue はネストされたルーティングメソッドの例を実装します

1. ネストされたルーティングはサブルーティングとも呼ばれます。実際のアプリケーションでは、通常、ネ...

Mac ノードの削除と再インストールのケーススタディ

Macノードの削除と再インストール消去 ノード -v sudo npm アンインストール npm -...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較

1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...