Etcd新增节点(开启SSL证书验证情况下)
介绍
目前使用Etcd作为自建配置中心的数据存储,现需要在新机器上增加新的节点
,但之前集群使用自签证书,peer证书的host限定了使用机器IP,没办法复用到新机器直接使用,所以需要重新制作证书。
执行思路
经研究,无需替换旧机器节点的证书文件,只需使用相同ca,在新机器上重新制作一份peer证书给新节点即可使用。对于新机器新节点,只需复用之前ca信息(ca.pem,caconfig.json,ca-key.pem),在新机器上指定hosts,为新机器制作peer证书即可。
ETCD集群创建,证书生成可看下文,这里只记录新加节点
新增节点
复制ca.pem、ca-key.pem、ca-config.json到新机器,创建peer-csr.json,设置hosts为新机器IP、之前机器IP执行命令生成peer.pemcfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer peer-csr.json | cfssljson -bare peer
peer-csr.json
{ "CN":"etcd-peer", "hosts":[ "ip" ], "key":{ "algo":"rsa", "size":4096 }, "names":[ { "C":"CN", "L":"Beijing", "O":"ETCD", "OU":"Base", "ST":"Beijing" } ] }
加入集群&启动节点
# 查看集群状态 etcdctl --endpoints=““ --user= --password= member list --write-out=table # 删除节点,当新加节点失败时,及时剔除节点 etcdctl --endpoints=““ --user= --password= member remove memberId # 加入节点 learner=true很有必要,learner不参与选举可以避免新节点异常,导致新加入节点扰乱集群选举 etcdctl --endpoints=““ --user= --password= member add node-name --peer-urls=url --learner=true # 升级节点为选举节点 当新加入节点启动正常后,可以执行该命令,该节点会在同步到同一数据高度后自动升级到flower节点 etcdctl -- endpoints="" --user= --password= member promote memberId
启动节点参数和创建一样,将 cluster-state=new改为existing即可
注:启动后新节点可能出现auth相关操作提示 etcdserver: invalid auth token
之类的错误,经测试重启节点可以解决