Windows10 上Docker 安装运行Consul

背景简介

Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。 这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全服务网格。 Consul需要数据平面并支持代理和本机集成模型。 Consul附带一个简单的内置代理,因此一切都可以开箱即用,但也支持第三方代理集成,如Envoy。

Consul的主要特点是:

  • 服务发现:Consul的客户端可以注册服务,例如api或mysql,其他客户端可以使用Consul来发现给定服务的提供者。 使用DNS或HTTP,应用程序可以轻松找到它们所依赖的服务。

  • 运行状况检查:Consul客户端可以提供任意数量的运行状况检查,这些检查与给定服务(“是Web服务器返回200 OK”)或本地节点(“内存利用率低于90%”)相关联。运营商可以使用此信息来监控群集运行状况,服务发现组件使用此信息将流量路由远离不健康的主机。

  • KV存储:应用程序可以将Consul的分层键/值存储用于任何用途,包括动态配置,功能标记,协调,领导者选举等。简单的HTTP API使其易于使用。

  • 安全服务通信:Consul可以为服务生成和分发TLS证书,以建立相互的TLS连接。可以使用意图来定义允许哪些服务进行通信。可以使用可以实时更改的意图轻松管理服务分段,而不是使用复杂的网络拓扑和静态防火墙规则。

  • 多数据中心:Consul支持多个数据中心。这意味着Consul的用户不必担心构建额外的抽象层以扩展到多个区域。

Consul旨在对DevOps社区和应用程序开发人员友好,使其成为现代,有弹性的基础架构的理想选择。

基于Docker On WSL2安装Consul

docker run --publish 8600:8600 --publish 8500:8500 --publish 8300:8300 --publish 8301:8301 --publish 8302:8302 --name consul-01 --restart always \
--volume /home/username/consul/data:/consul/data \
--volume /home/username/consul/config:/consul/config \
consul:latest \
agent -server \
-bootstrap-expect=1 \
-ui \
-bind=0.0.0.0 \
-client=0.0.0.0

其中,端口示意:

  • 8500端口,用于Consul的HTTP接口及Web UI界面。
  • 8600端口,用于Consul已注册服务的DNS服务。
  • 8300端口,用于同一数据中心内Consul Server的RPC通信。
  • 8301端口,用于同一数据中心内Consul Server的gossip serf lan通信。
  • 8302端口,用于不同数据中心内Consul Server的gossip serf wan通信。

其中,参数示意:

  • –net=host docker参数, 使得docker容器越过了net namespace的隔离,免去手动指定端口映射的步骤
  • -server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求
  • -advertise 将本机私有IP传递到consul
  • -retry-join 指定要加入的consul节点地址,失败后会重试, 可多次指定不同的地址
  • -client 指定consul绑定在哪个client地址上,这个地址可提供HTTP、DNS、RPC等服务,默认是>127.0.0.1
  • -bind 绑定服务器的ip地址;该地址用来在集群内部的通讯,集群内的所有节点到地址必须是可达的,>默认是0.0.0.0
  • allow_stale 设置为true则表明可从consul集群的任一server节点获取dns信息, false则表明每次请求都会>经过consul的server leader
  • -bootstrap-expect 数据中心中预期的服务器数。指定后,Consul将等待指定数量的服务器可用,然后>启动群集。允许自动选举leader,但不能与传统-bootstrap标志一起使用, 需要在server模式下运行。
  • -data-dir 数据存放的位置,用于持久化保存集群状态
  • -node 群集中此节点的名称,这在群集中必须是唯一的,默认情况下是节点的主机名。
  • -config-dir 指定配置文件,当这个目录下有 .json 结尾的文件就会被加载,详细可参考https://www.consul.io/docs/agent/options.html#configuration_files
  • -enable-script-checks 检查服务是否处于活动状态,类似开启心跳
  • -datacenter 数据中心名称
  • -ui 开启ui界面
  • -join 指定ip, 加入到已有的集群中

通过http://192.168.1.4:8500/可以查看Web管理后台。

查看已存在节点的IP

docker inspect --format='{{.NetworkSettings.IPAddress}}' consul-01

新建第二个节点,加入主节点

docker run --publish 8501:8500 --name consul-02 --restart always \
--volume /home/username/consul-02/data:/consul/data \
--volume /home/username/consul-02/config:/consul/config \
consul:latest \
agent -server \
-ui \
-bind=0.0.0.0 \
-client=0.0.0.0 \
-join 172.17.0.7

新建第三个节点,加入主节点

docker run --publish 8502:8500 --name consul-03 --restart always \
--volume /home/username/consul-03/data:/consul/data \
--volume /home/username/consul-03/config:/consul/config \
consul:latest \
agent -server \
-ui \
-bind=0.0.0.0 \
-client=0.0.0.0 \
-join 172.17.0.7

查看Consul集群信息

docker exec -it consul-01 consul members

资源

posted @ 2020-11-16 21:22  TaylorShi  阅读(869)  评论(0编辑  收藏  举报