Consul平滑升级的一点建议

我们从 Consul 0.6.x 版本开始使用,中间也遇到的一些各种各样的问题,比较常见的操作问题就是 consul 的升级问题(比如解决 BUG,早期 Consul 的 BUG 也遇到了好几个)。

平滑升级时,我们常见的方式一般为替换 consul 可执行文件,然后执行 Graceful 重启

常见 Consul 的 Graceful leave 的方法有以下两种:

  1. 发送 SIGINT 信号至 Consul;
  2. 连接要升级的 consul,使用命令 consul leave 发送离开命令;

这两种方式都会让该节点主动退出集群并结束进程,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[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 进程即可。