1

Consul を使用した Docker のサービス ディスカバリについて読んだことがありますが、理解できません。

2 つの docker コンテナを実行し、Consul を使用して最初のコンテナ ホストから 2 番目のコンテナ ホストを認識し、メッセージを送信するにはどうすればよいですか?

4

1 に答える 1

3

各 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
于 2015-06-26T02:47:11.580 に答える