Consul を使用した Docker のサービス ディスカバリについて読んだことがありますが、理解できません。
2 つの docker コンテナを実行し、Consul を使用して最初のコンテナ ホストから 2 番目のコンテナ ホストを認識し、メッセージを送信するにはどうすればよいですか?
各 Docker コンテナー内でConsul Agentをクライアント モードで実行する必要があります。各 Docker コンテナには、サービスを Consul サーバーにアドバタイズするようエージェントに知らせるために、 Consul サービス定義ファイルが必要です。
それらは次のようになります。
{
"service": {
"name": "redis",
"tags": ["master"],
"address": "127.0.0.1",
"port": 8000,
"checks": [
{
"script": "/usr/local/bin/check_redis.py",
"interval": "10s"
}
]
}
}
そして、サービスの正常性を監視するためのサービス ヘルス チェック。このようなもの:
{
"check": {
"id": "redis",
"name": "Redis",
"script": "/usr/local/bin/check_redis_ping_returns_pong.sh",
"interval": "10s"
}
}
他の Docker コンテナでは、コードは DNS または Consul Servers HTTP API を介して Redis サービスを見つけます。
dig @localhost -p 8500 redis.service.consul
curl $CONSUL_SERVER/v1/health/service/redis?passing