使用 python 脚本删除 consul 中注册的无效实例, 脚本可以结合 crontab 定时任务执行。
python 版本: python3.x
安装依赖库
git clone https://github.com/gmr/consulate.git
cd consulate
python3 setup.py install
注意依赖库不要使用 pip install consulate 来安装,因为这样安装的是 2015 年的代码,代码有问题,使用的时候会出现删除不了的情况。
如果你想使用老版本的代码,需要修改 site-packages/consulate/api/agent.py 第 246 行代码
# 更改前
return self._get_no_response_body(['deregister', service_id])
# 更改后
return self._put_no_response_body(['deregister', service_id])
完整代码实例
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
# author : ddn
import consulate
consul = consulate.Consul(host='127.0.0.1')
error_list = []
services = consul.agent.checks()
for server in services:
if services[server]['Status'] == "critical":
error_list.append(services[server]['ServiceID'])
consul.agent.service.deregister(services[server]['ServiceID'])
print('删除的节点:',','.join(error_list))