HashiCorp の Consul は、複数の機能を提供する多用途ツールです 最新の DevOps 環境で。サービスの発見に広く使用されています。 ヘルスチェック、ロードバランシング、そして特に分散キーバリューとして (KV)ストア。 Consul の KV ストアは動的保存に最適です 構成データ、機能フラグ、シークレット、およびメタデータを高度なレベルで管理します。 インフラストラクチャ全体で一貫した方法で利用できるため、 分散システム内のサービスによって動的にアクセスされる可能性があります。使用する Consul の KV ストアを構成する Docker により、迅速なセットアップと 隔離された環境なので、テストと開発に最適です。
このチュートリアルでは、セットアップと開発のプロセスについて説明します。 Docker を使用して Consul の KV ストアを構成します。最後には、 KV ペアを使用して Docker で実行される完全に機能する Consul インスタンス 設定済みでアクセス可能です。この設定は動的サービスに不可欠です
Docker Hub から公式の Consul イメージをプルしましょう。この画像は HashiCorp によって保守されており、Consul を実行するために必要なものがすべて含まれています。
Ubuntu Droplet のコンソールにログインし、実行:
docker pull hashicorp/consul:latest
Outputlatest: Pulling from hashicorp/consul c8bcd218a73d: Pull complete 5f1ac8227c2a: Pull complete c51fd79d429a: Pull complete 91eff479bde6: Pull complete 4dfcc18e51db: Pull complete 3e2a8bf39bf9: Pull complete bd9ddc54bea9: Pull complete 2054d291fb84: Pull complete Digest: sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb Status: Downloaded newer image for hashicorp/consul:latest docker.io/hashicorp/consul:latest
Consul イメージがダウンロードされたので、新しい Consul を開始できます 容器。このコンテナは Consul サーバーとして機能し、 KV ストアと対話できるようになります。
コンテナを起動するには、実行:
docker run -d --name=consul-server -e
OutputCONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8ba
はこちらこのコマンドの動作:
このステップは、コア Consul サービスを設定するため重要です。 KV ストアの設定に使用します。
Consul が正しく実行されていることを確認するには、コンテナのステータスを確認し、Consul UI にアクセスする必要があります。
まず、docker ps を実行して実行中のコンテナをすべてリストし、Consul コンテナが
❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c893b6707686 hashicorp/consul "docker-entrypoint.s…" 51 seconds ago Up 50 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-server
次に、Consul がアクセス可能かどうかを確認し、Web ブラウザを開いて、 http://localhost:8500. に移動すると、Consul UI が表示されます。
これ検証ステップは、領事が次のことを行っていることを確認するために重要です。 データを KV に保存する前はインスタンスが問題なく実行されている store (ステップ 5).
Consul インスタンスに外部からアクセスする必要がある場合 (例: クラスター内の他のノード)、ファイアウォール設定を次のように調整する必要があります。 必要なポートでトラフィックを許可します。
たとえば、クラウド インスタンスで Consul を実行している場合、次のようにすることができます。 ポート 8500 (HTTP API) および 8600 (DNS) での受信トラフィックを許可する必要があります。 特定のコマンドは、ファイアウォール ソリューション (UFW、
このステップにより、Consul インスタンスが他のインスタンスからアクセスできるようになります。
Consul を実行すると、KV ストアを使用してキーと値のペアを保存できるようになります。 構成データ。 Consul CLI を使用してキーと値のペアを追加するか、 Web UI。
CLI 経由でキーと値のペアを保存するには、実行:
docker exec -it consul-server consul kv put config/db_host 192.168.1.100 Success! Data written to: config/db_host
docker exec -it consul-server consul kv put config/db_port 3306 Success! Data written to: config/db_port
はこちらこのコマンドの動作:
Web UI を使用して、
これらのコマンドとアクションは、サービスが動的にアクセスできる重要な構成データを保存します。 runtime.
いくつかの KV ペアを保存したら、それらを取得して正しく保存されていることを確認します。
CLI を使用して、次のように値を取得します。コマンド:
docker exec -it consul-server consul kv get config/db_host 192.168.1.100
Web UI を使用して、
KV ペアの取得は、次の目的に必要な手順です。データが正しく保存され、アクセスできることを確認します。
デフォルトでは、Docker コンテナは一時的です。つまり、あらゆるデータが コンテナが取り外されると、その中に保存されているデータは失われます。持続するために Consul KV データを使用するには、Docker ボリュームを使用する必要があります。
docker stop consul-server docker rm consul-server
さて、コンテナを確認すると、Consul コンテナが含まれていないことがわかります。走っている
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2. Docker ボリュームを使用して新しい Consul コンテナを実行します添付:
docker run -d --name=consul-server -e
OutputCONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul 2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1
docker ps
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2d2a7d3ff191 hashicorp/consul "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-server
-v consul_data:/consul/data オプションは、Docker ボリュームをコンテナにマウントし、コンテナの再起動後も KV ストアが保持されるようにします。
運用環境の場合デプロイメントの場合、起動を自動化することもできます。 Docker Compose を使用して Consul コンテナを作成します。 Docker Compose による簡素化 マルチコンテナの Docker アプリケーションを使用できるようになり、管理が容易になります services.
次の内容を含む docker-compose.yml ファイルを作成します:
services: consul: image: hashicorp/consul:latest environment: - CONSUL_BIND_INTERFACE=eth0 volumes: - consul_data:/consul/data ports: - "8500:8500" - "8600:8600/udp" restart: alwaysvolumes: consul_data:
それでは、実行:
docker-compose up -d
Output[ ] Running 2/2 ✔ Network work_default Created 0.0s ✔ Container consul-server Started 0.1s
docker ps
OutputWARN[0000] /Users/anandhkumar/work/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS work-consul-1 hashicorp/consul:latest "docker-entrypoint.s…" consul 40 seconds ago Up 11 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp
これコマンドは Consul を自動的に起動し、失敗した場合には確実に再起動するため、運用環境での使用に対してより堅牢になります。
Consul インスタンスの操作が終了したら、次のことを行う必要があります。 Docker 環境をクリーンアップしてリソースを解放してください。
Consul を停止して削除しましょうコンテナ:
docker stop consul-server docker rm consul-serverdocker ps
outputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
の場合Consul は完了です。Docker を削除することもできます画像:
docker rmi hashicorp/consul
outputhashicorp/consul@sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb Deleted: sha256:eff8ccb509560987755a70df8d6c0b9410538d503d99498ae1ea9f48066b0439 Deleted: sha256:b5e6402bbb78eb061d538505a30300ef7f612104eaf0f11b17839a9b29bc5603 Deleted: sha256:1c61ada2ad8074615120d13bd805260d766ae8424cafbda4bded529d6a204d6f Deleted: sha256:9b36da670e2a59f1d81c6e3c9d55906c576b384df51272977e5a9caea7131e74 Deleted: sha256:8c6e52c441c246f60ca146b71204b7d6511df75fa87a0dc0a0f91141964e8fd9 Deleted: sha256:1fce18208235de2be3c419764ec1d469229af5387447d21649c841632c653cef Deleted: sha256:68e0a114c9c35b9aa8cac31fa32b27f886361bc85fcc63f34e882e9128f33a14 Deleted: sha256:3da5b888208a9b19694bfeaf8c74a432b50f44542d717c9e1f3ab273e505855a Deleted: sha256:dea73e9287e6e2f3b7f9fcac4f20767d7badeefa24e52f990f1674e98abfa1a3 Deleted: sha256:201fa22d1f4c7d6e7ec43135c63b2260f303f4864f5eb43569faaa1731628799
クリーニングup は、整然とした開発環境を維持し、Docker リソースが不必要に消費されないようにするのに役立ちます。
以上がDocker を使用して Consul KV を構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。