1.dockerミラーリングプル領事
docker pull consul
2.consul引数は詳細に
- -net =ホストドッカーパラメータ、手動のステップを排除ドッカー分離ネットネームスペース上容器は、ポートマッピングを指定するように
- -server領事は、サーバーまたはクライアントモードの動作をサポートするために、サーバはコアサービス発見モジュールであり、クライアントは主に前方の要求に使用されています
- アドレスを変更するには、私たちのために-advertise通知アドレスは、クラスタ内の他のノードに宣伝しました。デフォルトでは、-bindアドレスが通知されます。
- 領事を追加するように指定-retryジョインノードアドレス、失敗した試行の後に、異なるアドレスが複数回指定することができます
- -client領事は、HTTPおよびDNSサーバを含むクライアントインタフェースのアドレスを、バインドします。デフォルトでは、これが唯一のループバック接続を許可する、「127.0.0.1」です。
- アドレスは、結合の内部クラスタ通信を-bind。これは、クラスタ内の他のすべてのノードのIPアドレスがアクセスすることができるはずです。デフォルトでは、これが到達可能である必要があり、クラスタ内のすべてのノードに対応するために、「0.0.0.0」であります
- このフラグは、データセンター内のサーバーの数を提供することが期待されて-bootstrap、期待しています。他のサーバーと一致して、この値を提供してはならない、または値が人口に焦点を当てる必要があります。あなたが指定した後、領事は、使用可能なサーバーの指定された数を待ってから、クラスタを起動します。自動選挙のリーダーを許可するが、従来の-bootstrapマークを使用することはできません、サーバーモードで実行する必要があります。
- このフラグは、エージェントのステータスデータ格納ディレクトリを提供-data-DIR。これは、すべてのエージェントのために必要とされます。あなたが再起動するディレクトリが長続きする必要があります。彼らは、クラスタの状態を維持できなければならないので、これはサーバモードで動作しているエージェントのために特に重要です。また、ディレクトリは、ファイルシステムのロックの使用、適切でないかもしれない、ロードされたフォルダの特定のタイプ(例えばVirtualBoxのようなフォルダを共有)することを意味をサポートしなければなりません
- クラスタ内で一意である必要があり、クラスタ内のこのノードの-node名前は、デフォルトでは、ノードのホスト名です。
- ファイルがロードされます。このディレクトリの終わりを.jsonある場合-config-dirが設定ファイルを指定します
- オープンハートに似-enable-スクリプトチェックサービスがアクティブであるかどうかを確認するために、
- データセンターの名前-datacenter。提供されていない場合、デフォルトでは「DC1」です。領事は、複数のデータセンターのためのファーストクラスをサポートしているが、それは正しい構成に依存します。同じデータセンター内のノードは、単一のLANに配置する必要があります。
- -ui - 内蔵のWeb UIのHTTPサーバと必要なルートを有効にします。これは、領事のWeb UIとバイナリファイルの別々のメンテナンスの必要性を排除します。
- 指定されたIP -join、既存のクラスタに追加
3.領事を使用します
1. consul1と呼ばれる最初のノード、
docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul agent -server -bootstrap-expect 2 -ui -bind=0.0.0.0 -client=0.0.0.0
詳細なポート
- 8500:HTTPインタフェースとWeb UIにアクセスするためのHTTPポート。
- 8300:通信ポートを介してサーバーのRPCポートの間で、同一のデータセンタ領事サーバ
- 8301:農奴LANポート、ポートを介して同一のデータセンタ領事クライアント通信は、LANデータセンター内の現在の通信を処理するためのゴシップ
- 8302:農奴、ポート、ポートを介して異なるデータセンターコンサルサーバ通信のWAN、他のデータセンターゴシップとの通信のプロセスを使用して、エージェントサーバ。
- 8600:登録されたサービス発見のためのDNSポート。
コンテナのIPアドレスを確認してください2。
consul1 IPアドレスを見ます docker inspect --format='{{.NetworkSettings.IPAddress}}' consul1
# 输出172.17.0.5
3.启动第二个consul服务(端口8501):consul2, 并加入consul1(使用join命令)
docker run --name consul2 -d -p 8501:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.5
4.启动第三个consul服务(端口8502):consul3, 并加入consul1(使用join命令)
docker run --name consul3 -d -p 8502:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.5
5.查看consul集群信息
docker exec -it consul1 consul members
// 可以看到集群里的三个节点
Node Address Status Type Build Protocol DC Segment
618e9f617509 172.17.0.5:8301 alive server 1.6.2 2 dc1 <all>
6ba34e2feb66 172.17.0.6:8301 alive server 1.6.2 2 dc1 <all>
8cba36da0384 172.17.0.7:8301 alive server 1.6.2 2 dc1 <all>
6.通过访问8500/8501/8502端口查看web界面
6.通过访问8500/8501/8502端口查看web界面
我是在阿里云上,记得开放安全端口