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でカスタムフックを作成する方法を教えます

推薦する

MySQLバックアップとリカバリの実践に関する詳細な説明

1. mysqlbackup の紹介mysqlbackup は、MySQL Enterprise B...

MySQL マスター/スレーブ ステータスを監視するシェル スクリプト

Linuxでシェルスクリプトを共有して、MySQLのマスタースレーブ状態を監視し、エンタープライズW...

ES6 ループと反復可能オブジェクトの例

この記事では、ES6 の for ... of ループについて説明します。古い方法以前は、JavaS...

eCharts でパーセンテージ付きの横棒グラフを実装する方法

目次サンプルコードレンダリングコード分​​析要約するサンプルコード var データ = [220, ...

Dockerでudpポート番号を指定する問題を解決する

Docker はコンテナを起動するときにアクセス ポートを指定します。複数の -p オプションを使用...

メタタグにおける http-equiv 属性の使用の概要

metaはhtml言語のhead領域にある補助タグです。おそらく、これらのコードは不要だと思うかもし...

レスポンシブウェブデザインを実現するためにIEでCSS3メディアクエリをサポートする

今日の画面解像度は、320 ピクセル (iPhone) ほど小さいものから、2560 ピクセル以上 ...

LinuxシステムにおけるMySQLの一般的な操作コマンド

仕える: # chkconfig --list すべてのシステムサービスを一覧表示する# chkco...

docker compose helloworld を使い始めるための詳細なプロセス

前提条件Compose は、Docker コンテナをオーケストレーションするためのツールです。Doc...

MySQL ルートパスワードエラー番号 1045 の解決方法

MySQLサービスを停止するWindowsでは、マイコンピュータを右クリック--管理--サービスと...

Docker+keepalived+nginx を使用してマスタースレーブホットスタンバイを実装する方法の例

序文単一障害点を解決するには、マスター/スレーブ ホット スタンバイ ソリューションを構成する必要が...

Alibaba Cloud ECS クラウド サーバー (Linux システム) は、MySQL をインストールした後にリモートで接続できません (落とし穴)

昨日、1年間使用していた Alibaba Cloud サーバーを購入しました。システムは Linux...

NexusはAPIを使用して操作します

Nexus は RestApi を提供していますが、一部の API はまだ Groovy と組み合わ...

Vue-Jest自動テストの基本構成の詳しい説明

目次インストール構成よくある間違い事前テスト作業依存関係の扱いインスタンスとDOMを生成する要約する...

CSS3 を使用した SVG パス ストロークのアニメーション化入門チュートリアル

JavaScript に依存せず、純粋な CSS を使用してsvgストローク描画アニメーション効果と...