服务发现系统consul-agent

consul agent:


任何agent都可以运行在两种模式:client和server。server节点会反馈更多的响应,


运行agent,可以使用consul agent来启动agent,该命令会被block,程序一直运行,直到你停止它。输出的内容如下:
$ consul agent -data-dir=/tmp/consul
==> Starting Consul agent...
==> Starting Consul agent RPC...
==> Consul agent running!
       Node name: 'Armons-MacBook-Air'
      Datacenter: 'dc1'
          Server: false (bootstrap: false)
     Client Addr: 127.0.0.1 (HTTP: 8500, DNS: 8600, RPC: 8400)
    Cluster Addr: 192.168.1.43 (LAN: 8301, WAN: 8302)


==> Log data will now stream in as it occurs:


    [INFO] serf: EventMemberJoin: Armons-MacBook-Air.local 192.168.1.43


node name:可以通过-node来指定
datacenter:可以通过-dc来指定
server:显示agent是运行在client还是server
client addr:可以通过-rpc-addr来指定
cluster addr:这个地址用来在集群中的agents进行通讯,每一个在集群中的agent都不能使用相同的端口,但是这个地址必须是所有节点可达的。


如果要停止agent怎么办?有两种办法:优雅的和强制的。优雅的做法就是输入中断命令,一般就是在终端中输入Ctrl-C,agent会提醒集群它要离开了,这样集群中的其他成员会直到这个节点进入left状态了。另一种就是直接kill掉这个进程,这时agent是突然退出的,集群中的其他成员几秒种之后才直到这个节点died了,然后集群宣告该节点failed。


agent在集群中的生命周期,当一个agent第一次启动的时候,它还不知道集群中的其他节点,为了发现这些伙伴,它必须加入集群中,可以使用join命令实现,一旦agent加入集群后,信息会流遍整个集群(八卦人员),意味着所有的节点都会注意到彼此,如果agent是server,则已经存在的server会开始复制新的节点。如果网络出现问题,部分节点会不能彼此到达,在这种情况下,不能到达的节点会被标记为failed,很难判断是网络问题还是节点crash,所以两者的处理是一样的,一旦节点被标记为failed,这个信息会在service catalog中进行更新,这里有一些细微的差别,xxxxx,一旦网络恢复正常,或者agent恢复正常,集群会进行自我修复,取消failed节点标记,健康检测的状态也会在catalog中显示出来。
当一个节点离开,集群会把该节点标记成left,不像failed的情况,所有该节点注册的服务都会被立即撤销,如果该节点是server,复制则会被立即停止,为了防止累积dead nodes,consul会自动从catalog中获取故障节点,这个操作在一个不可配置的时间范围内(72小时)

你可能感兴趣的:(consul)