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.0allow_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