Consul-working-with-microservices
領事-マイクロサービスの使用
この章では、MicroservicesがConsulと連携する方法を理解します。 また、次のコンポーネントがConsulに与える影響についても学習します。
- ドッカーを使用する
- サービス発見のための登録者の構築
- rktとNomadを使用する
次に、これらのそれぞれについて詳しく説明します。
Dockerを使用する
開始する前に、*このセットアップは実稼働では使用しないでください*デモ目的でのみ使用されます。 Dockerはコンテナベースのサービスであり、これを使用してアプリケーションを簡単にデプロイできます。 Consulを使用するには、次のリンクの画像を使用します–0
[[1]]
システムにDockerがインストールされ、適切に構成されていることを前提としています。 次のコマンドを実行して、Dockerハブからイメージをプルダウンしてみます-
$ docker pull progrium/consul
出力は、次のスクリーンショットのようになります。
次の方法で、ポートを使用していくつかのインターフェイスを公開します(Dockerの-pオプションを使用)。
- 8400(RPC)
- 8500(HTTP)
- 8600(DNS)
また、プルごとに、ホスト名の名前を node1 に設定します。以下に示すように、独自のホスト名で* -hフラグ*を使用して、任意の名前に変更できます。
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap
出力は、次のスクリーンショットのようになります。
また、を使用して領事のUIモードを有効にすることができます-
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir/ui
*http://localhost:8500* でUIベースの出力を確認できます。 次のスクリーンショットは、UIベースの出力に関するより良いアイデアを提供します。
異なるノード上のさまざまなdockerコンテナでconsulを使用するために、異なるノードで次のコマンドを実行できます-
Node1で
$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
ここで、*-bootstrap-expect 3 *は、3つのピアが接続されるまでconsulサーバーが待機してから、自己ブートストラップして作業クラスターになることを意味します。
先に進む前に、コンテナを検査してコンテナの内部IPを取得する必要があります。 ケースの目的で使用するために、 $ JOIN_IP を宣言します。
$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
Node2で
したがって、Node2を起動し、上記のプログラムで宣言された変数を使用してNode1に参加するように指示しましょう。
$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
Node3で
$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
サービス発見のための登録者の構築
登録者は、コンテナがオンラインになると検査することにより、Dockerコンテナのサービスを自動的に登録および登録解除します。 現在使用する登録者は、現在 Consul、Etcd 、および SkyDNS2 を含むプラグ可能なサービスレジストリをサポートしています。 ネットワークを介してさまざまなサービスとやり取りする場合は、Registratorの使用を強くお勧めします。
$ docker pull gliderlabs/registrator:latest
出力は、次のスクリーンショットのようになります。
$ docker run -d \
--name = registrator \
--net = host \
--volume =/var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://localhost:8500
出力は、次のスクリーンショットのようになります。
受け取った出力は、開始したばかりのDockerコンテナーのIDです。 コマンドを使用して、コンテナが実行されているかどうかを確認できます-
$ docker ps -a
出力は次のスクリーンショットのようになります。
次のコマンドを使用して、登録者のログを表示することもできます。
$ docker logs registrator
rktとNomadを使用する
rktは別のコンテナベースのサービスであり、環境で使用できます。 CoreOS によって構築されます。 rktを構築する主な理由は、2013-14年にまだ開発中だったDockerの危機的な問題の1つであったセキュリティを改善するためです。
Consulについては、Rkt Registratorを使用して、Consulでのサービス検出に取り組んでいます。 rktの対象となるこの特定の登録者プロジェクトは開発中であり、生産レベルでの使用にはお勧めできません。
rktがインストールされているかどうかは、パスに移動して次のコマンドを実行することで確認できます。
$ ./rkt
次のスクリーンショットに示すように、出力が正しくインストールされているかどうかをチェックして確認できます。
rktとConsulを試すには、https://github.com/r3boot/rkt-registratorをチェックしてください。
ノマドツール
最も一般的に使用され、お気に入りのオプションの1つはNomadツールです。 Nomadは、マシンのクラスターを管理し、それらでアプリケーションを実行するためのツールです。 Mesos または Kubernetes に似ています。 デフォルトでは、NomadはDockerおよびrktドライバー自体をカバーします。 したがって、Consulを使用したコンテナの大規模な展開を探している場合。 遊牧民はそれに対する良い解決策かもしれません。 Nomadの詳細については、https://www.nomadproject.io/docs/drivers/rktlを確認してください。