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

欢迎留言