我们从 Consul 0.6.x 版本开始使用,中间也遇到的一些各种各样的问题,比较常见的操作问题就是 consul 的升级问题(比如解决 BUG,早期 Consul 的 BUG 也遇到了好几个)。
平滑升级时,我们常见的方式一般为替换 consul 可执行文件,然后执行 Graceful 重启
常见 Consul 的 Graceful leave 的方法有以下两种:
- 发送
SIGINT
信号至 Consul; - 连接要升级的 consul,使用命令
consul leave
发送离开命令;
这两种方式都会让该节点主动退出集群并结束进程,如下:
[INFO] agent: Caught signal: terminated
[INFO] agent: Graceful shutdown disabled. Exiting
[INFO] agent: Requesting shutdown
[INFO] consul: shutting down server
[WARN] serf: Shutdown without a Leave
[ERR] agent: Coordinate update error: No cluster leader
[ERR] agent: failed to sync remote state: No cluster leader
[WARN] serf: Shutdown without a Leave
[INFO] manager: shutting down
[INFO] agent: consul server down
[INFO] agent: shutdown complete
[INFO] agent: Stopping DNS server 10.135.218.10:53 (tcp)
[INFO] agent: Stopping DNS server 10.135.218.10:53 (udp)
[INFO] agent: Stopping HTTP server 10.135.218.10:8500 (tcp)
[INFO] agent: Waiting for endpoints to shut down
[INFO] agent: Endpoints down
[INFO] agent: Exit code: 1
之后重新启动 consul 进程即可。