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

推薦する

dockerでnginxを実行するときにdaemon offが使用される理由についての簡単な説明

とても嬉しいです。この問題に遭遇したとき、私はDockerコンテナのプロセス原理について話さなければ...

Tomcatアーキテクチャの原則をアーキテクチャ設計に分析する

目次1. 学習目標1.1. Tomcatアーキテクチャの設計と原則をマスターして社内スキルを向上させ...

Linux での MySQL 8.0.25 のインストールと設定のチュートリアル

LinuxにMySQL 8.0.25をインストールするための最新のチュートリアルを参考にしてください...

Linux でパスワードを入力せずに sudo コマンドを実行する方法

sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...

MySQL 学習データベースバックアップの詳細な説明

目次1.DB、DBMS、SQL 2. データベースの特徴3. SQL分類4. MySQLを起動および...

Vue.js $refs 使用例の説明

プロパティやイベントがあるにもかかわらず、JavaScript で子コンポーネントに直接アクセスする...

高品質なコードを書く Web フロントエンド開発実践書の抜粋

(P4) Web 標準は一連の標準で構成されています。中心となる概念は、Web ページの構造、スタイ...

Vue+canvas は、ウォーターフォール チャートを上から下までリアルタイムに更新する効果を実現します (QT と同様)

早速ですが、デモ画像をご紹介します。実装されている機能は、左側に凡例、右側にウォーターフォール チャ...

CSS で 3D ブック効果を実装するためのサンプル コード

さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...

react-beautiful-dnd を使用してリスト間のドラッグ アンド ドロップを実装する

目次react-beautiful-dndを選ぶ理由基本的な使い方基本概念使い方使用中に発生した問題...

MySQL 8.0 における非同期レプリケーションの 3 つの方法について簡単に説明します。

この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...

DockerをインストールしてAlibaba Cloud Image Acceleratorを構成する方法

DockerのインストールDocker はオープンソースなので、Windows システムへのインスト...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

CSS3 フレックスレイアウトを使用して要素を均等に分散するサンプルコード

この記事では主に、CSS3 フレックスレイアウトを使用して要素を均等に配置する方法を紹介します。自分...