概述
Consul作为注册中心,提供服务发现、配置、健康检查、安全服务通信以及多数据中心等功能, 这些功能可以根据需要单独使用,也可以一起使用来构建完整的微服务系统。
Consul agent
Consul agent是Consul的核心进程。它是运行在Consul节点上,这些节点共同组成Consul集群。agent
进程用于维护成员信息、注册服务、成员健康检查等功能,agent
有如下两种模式运行:
- 客户端模式(client)通过Client模式启动节点加入Consul集群中,这种模式启动的节点数量没有限制,而且它们可以轻松扩展到数千或数万。在同一个数据中心组成的集群中,所有节点参与gossip协议。通过使用gossip协议检测节点故障, 比单纯的心跳方案具有更大的可扩展性。它还为节点提供故障检测;如果
agent
不可达,则节点可能出现故障。Client节点缓存server节点的数据,用以提高性能和可用性。 - 服务端模式(server)通过Server模式启动agent节点参与选举。在生产环境中3到5台服务器组成。这在故障情况下的可用性和性能之间取得了平衡,因为随着增加更多的服务器,一致性会逐渐变慢。集群中所有Server启动模式的agent节点参与Raft协议,共同选举出领导者。选举出领导者的节点负责查询数据以及数据同步到其它Server节点上
agent节点启动
-
从官网下载Consul压缩包。
-
解压启动。如下:
[root@unite-test consul]# consul agent -data-dir=/tmp/consul -node=server184.43 -datacenter=unite-dc -server=true ==> Starting Consul agent... Version: 'v1.7.2' Node ID: '74124b5b-aedc-59c3-5e6c-436443f2c025' Node name: 'server184.43' Datacenter: 'unite-dc' (Segment: '<all>') Server: true (Bootstrap: false) Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600) Cluster Addr: 172.27.185.43 (LAN: 8301, WAN: 8302) Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false ==> Log data will now stream in as it occurs: 2022-03-14T11:50:01.620+0800 [WARN] agent: Node name will not be discoverable via DNS due to invalid characters. Valid characters include all alpha-numerics and dashes.: node_name=server184.43 2022-03-14T11:50:01.625+0800 [INFO] agent.server.raft: initial configuration: index=0 servers=[] 2022-03-14T11:50:01.625+0800 [INFO] agent.server.serf.wan: serf: EventMemberJoin: server184.43.unite-dc 172.27.185.43 2022-03-14T