使用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))