list
前言
在建设数据库高可用的时候,采用了consul的机制实现,在开发相关组件的时候,使用了consul的锁机制。但是由于使用的不正确,带来了一些问题,下面主要介绍我的使用场景及使用方式,出现的问题,以及正确的使用方法。
我的使用场景及使用方式简介
在进行数据库高可用的选举组件设计时,考虑使用consul的锁来进行consul-server的选举,谁先获取到锁,谁就成为consul-server的leader,由leader实施数据库选主。
组件开发选用python进行开发,consul驱动使用的是python的consul驱动:【https://pypi.org/project/python-consul/】
驱动对于consul的相关操作基本与consul提供的api功能保持一致。
设计中每一套高可用服务都有一个锁k-v,选举动作触发的时候,所有consul-server都会尝试对这个锁k-v加锁,绑定自己的session id,完成选主动作后,再释放锁,即:
import consul
lock_key = "app1/master1/lock_key"
CONSUL_CLI = consul.Consul