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

推薦する

JavaScript 開発における標準コミットメッセージの重要性の詳細な説明

目次標準コミットメッセージの重要性コミットするコミットリント依存関係をインストールする.commit...

ブラウザ内でHTMLタグを中央に配置するCSSスタイル

CSS スタイル:コードをコピーコードは次のとおりです。 <スタイル タイプ="te...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

CSSはコンテンツの高さが足りない場合にフッターを自動的に下部に固定します

UI カットのプロセスでは、ページはヘッダー、コンテンツ、フッターの 3 つの部分で構成されることが...

Dockerはホスト間のネットワーク通信を実現するためにMacvlanを導入する

基本的な概念: Macvlanの動作原理: Macvlan は、Linux カーネルでサポートされて...

CSS はモバイル互換性の問題を解決するために 0.5px の線を実装します (推奨)

【コンテンツ】: 1.背景画像のグラデーションスタイルを使用する2. スケールを使ってズームできる...

ウェブサイトの高速化における CDN、SCDN、DCDN の違いは何ですか?どうやって選ぶ?

1. CDNこれは、Web サイト上で最もよく使用される加速機能です。分散サーバー レイアウトによ...

JS の FileReader を介して .txt ファイルの内容を取得する方法

目次JSはFileReaderを通じて.txtファイルの内容を取得します。 .txtファイルの読み取...

Vue3 トランジションアニメーションの落とし穴記録について

目次背景問題の場所さらなる分析要約する背景私のコース「Vue 3 エンタープライズレベルの音楽アプリ...

Linuxコマンドとファイル検索の詳しい説明

1. ファイル名検索を実行するwhich ('実行可能ファイル' を検索) //PA...

Dockerfile を使用して Docker イメージをカスタマイズする方法

Dockerfile を使用したイメージのカスタマイズイメージのカスタマイズとは、実際には各レイヤー...

Vuexの補助関数の使い方

目次マップ状態マップゲッターマップミューテーションマップアクション複数のモジュールマップ状態 ...

Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策

目次要件の説明:要件分析:ニーズの解決問題解決私はフロントエンドの新人ですが、バックエンドのバグの中...

nginxリバースプロキシを介したデバッグコードの実装

背景現在、会社のプロジェクトは、フロントエンドとバックエンドが分離された方法で開発されています。新し...

MySQL 5.7 でパスワードを変更するときに発生する ERROR 1054 (42S22) の解決方法

MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...