一种实现KV存储服务高可用的方法与流程

文档序号:20348520发布日期:2020-04-10 22:48阅读:329来源:国知局
一种实现KV存储服务高可用的方法与流程

本发明涉及存储服务技术领域,具体提供一种实现kv存储服务高可用的方法。



背景技术:

容器技术是比较流行的提供微服务的paas技术,而kubernetes(容器编排管理组件)是近期最流行的容器编排管理技术。kubernetes是一个全新的基于容器技术的分布式架构领先方案,在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列功能,提高了大规模容器集群管理的便捷性和高可用性。kubernetes的元数据存储在etcd服务中,etcd服务是一个流行的高性能kv服务,保证etcd服务的高可用对kubernetes非常关键。而浪潮云提供的容器服务是基于kubernetes实现的,因此掌握了etcd服务的高可用技术就可以实现浪潮容器云的高可用。



技术实现要素:

本发明的技术任务是针对上述存在的问题,提供一种能够保证浪潮容器云元数据的高可用,同时也能保证给租户提供可持续的高可用容器服务的实现kv存储服务高可用的方法。

为实现上述目的,本发明提供了如下技术方案:

一种实现kv存储服务高可用的方法,在etcd集群中设有证书认证、集群扩容、集群缩容、数据备份、异常修复和定时检测功能,证书认证为每个etcd节点生成并配置好认证证书,支持每个etcd节点的证书认证;集群扩容为在etcd集群中新增节点;集群缩容为在etcd集群中删除节点;数据备份为对etcd集群数据定时备份;异常修复为在etcd集群异常后,修改etcd集群;定时检测功能为定时检测etcd集群。

所述kv即key-value键值对。etcd为分布式kv存储服务。

作为优选,所述证书认证功能包括生成根证书、生成etcd节点key和公钥及etcd节点使用证书配置,其中etcd集群共用一个根证书。

作为优选,所述集群扩容功能包括生成新etcd节点的证书、在新增etcd节点增加etcd配置文件和镜像并查看etcd集群状态、新增member、在新增etcd节点启动etcd服务并查看集群状态。

此处的新增member指新增kv集群成员。

作为优选,所述集群缩容功能包括查看etcd集群状态、查看member集合、删除member、关闭删除节点的etcd服务及查看集群状态。

作为优选,所述数据备份功能包括使用snapshot命令对etcd集群进行备份及设置定时备份程序。

作为优选,所述异常修复功能包括查看集群状态、使用可用节点备份数据、修改可用节点的配置文件、在可用节点恢复数据、启动可用节点的etcd服务及查看集群状态。

作为优选,异常修复功能在etcd集群异常后,修改etcd集群包括删除异常节点、扩容正常节点及重启etcd集群。

作为优选,所述定时检测功能包括定时检测、异常节点移除、异常集群修复和扩容master节点。

与现有技术相比,本发明的实现kv存储服务高可用的方法具有以下突出的有益效果:所述实现kv存储服务高可用的方法可以有效提升etcd(kv存储)服务的高可用性,提升浪潮容器云元数据的稳定性,提升浪潮容器云的高可用性,为用户提供高可用的容器服务,能够保证浪潮容器云元数据的高可用,同时也能保证给租户提供可持续的高可用容器服务,具有良好的推广应用价值。

附图说明

图1是本发明所述实现kv存储服务高可用的方法的示意图;

图2是本发明所述实现kv存储服务高可用的方法的具体实施流程图。

具体实施方式

下面将结合附图和实施例,对本发明的实现kv存储服务高可用的方法作进一步详细说明。

实施例

如图1所示,本发明的实现kv存储服务高可用的方法在etcd集群中设有证书认证、集群扩容、集群缩容、数据备份、异常修复和定时检测功能。

一、证书认证

证书认证为每个etcd节点生成并配置好认证证书,支持每个etcd节点的证书认证。证书认证功能包括以下方面:

1)生成根证书,etcd集群共用一个根证书

opensslgenrsa-outca-key.pem2048

opensslreq-x509-new-nodes-keyca-key.pem-days36500-outca.pem-subj"/cn=etcd-ca"

2)生成etcd节点key和公钥

opensslgenrsa-outetcd-slave1-key.pem2048

opensslreq-new-keyetcd-slave1-key.pem-outetcd-slave1.csr-subj"/cn=etcd-member"-config/etc/ssl/etcd/openssl-slave1.conf

opensslx509-req-inetcd-slave1.csr-caca.pem-cakeyca-key.pem-cacreateserial-outetcd-slave1.pem-days36500-extensionsssl_client-extfile/etc/ssl/etcd/openssl-slave1.conf

注:openssl-slave1.conf文件存放slave1节点的ip等关键信息

可以针对每个节点配置一个conf文件,根据配置文件生成指定节点的证书,保证每个节点的证书只允许在指定节点执行。

3)etcd节点使用证书配置(/etc/etcd.env)

etcd_trusted_ca_file=/etc/ssl/etcd/ssl/ca.pem

etcd_cert_file=/etc/ssl/etcd/ssl/etcd-slave1.pem

etcd_key_file=/etc/ssl/etcd/ssl/etcd-slave1-key.pem

etcd_client_cert_auth=true

etcd_peer_trusted_ca_file=/etc/ssl/etcd/ssl/ca.pem

etcd_peer_cert_file=/etc/ssl/etcd/ssl/etcd-slave1.pem

etcd_peer_key_file=/etc/ssl/etcd/ssl/etcd-slave1-key.pem

etcd_peer_client_cert_auth=tru

其中openssl:生成证书工具;etcd.env:etcd配置文件。

二、集群扩容

集群扩容为在etcd集群中新增节点。集群扩容功能包括以下方面:

1)生成新etcd节点的证书,与证书认证步骤生成新节点的证书相同。

2)在新增etcd节点增加etcd配置文件和镜像

etcd文件包括:

/etc/systemd/system/etcd.service:服务配置文件

/etc/etcd.env:etcd启动加载的环境变量

/usr/local/etcd:启动etcd容器的命令

3)查看etcd集群状态

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemcluster-health

其中只有etcd集群的所有节点健康时,才能正常增加节点。

4)新增member

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemmemberaddetcd4https://192.168.0.136:2380

memberaddetcd4https://192.168.0.136:2380命令增加新节点,etcd4是节点名称,https://192.168.0.136:2380是etcd节点交互的url。

5)在新增etcd节点启动etcd服务:在slave1节点执行命令:systemctlrestartetcd

6)查看集群状态:

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemcluster-health

若新节点正常加入,会显示新加入的节点健康,并且集群健。

三、集群缩容

集群缩容为在etcd集群中删除节点。集群缩容功能包括以下方面:

1)查看etcd集群状态

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemcluster-health

其中,只有etcd集群健康时,才能正常删除节点。

2)查看member集合

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemmemberlist

memberlist命令显示所有member的id。

3)删除member

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemmemberremovememberid

memberremovememberid删除指定的memberid。

4)关闭删除节点的etcd服务:systemctlstopetcd。

5)查看集群状态

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemcluster-health

若缩容节点正常删除,集群状态健康。

四、数据备份

数据备份为对etcd集群数据定时备份,数据备份功能包括以下方面:

1)使用snapshot命令对etcd集群进行备份

etcdctl_api=3etcdctl--cacert=/etc/ssl/etcd/ssl/ca.pem--cert=/etc/ssl/etcd/ssl/member-master2.pem--key=/etc/ssl/etcd/ssl/member-master2-key.pem--endpoints=https://192.168.0.93:2379snapshotsaveetcd-snapshot.db。

2)设置定时备份程序。可以设置一个定时任务,在所有master节点上,每天0时备份etcd的数据,可以只保留7天的数据即可。

五、异常修复

异常修复为在etcd集群异常后,修改etcd集群。异常修复功能在etcd集群异常后,修改etcd集群包括删除异常节点、扩容正常节点及重启etcd集群。

异常修复功能包括以下方面:

1)查看集群状态

etcdctl--endpoint=https://192.168.0.93:2379--ca-file=/etc/ssl/etcd/ssl/ca.pem--cert-file=/etc/ssl/etcd/ssl/member-master2.pem--key-file=/etc/ssl/etcd/ssl/member-master2-key.pemcluster-health

使用cluster-health命令查询集群状态,当集群unhealthy时,集群就不能正常提供服务,这个时候需要对集群进行修复

这个命令也会显示哪些节点能连上,能连上的节点就是可用的节点。

2)使用可用节点备份数据

在一个可用节点上执行以下命令,对数据进行备份:

etcdctl_api=3etcdctl--cacert=/etc/ssl/etcd/ssl/ca.pem--cert=/etc/ssl/etcd/ssl/member-master2.pem--key=/etc/ssl/etcd/ssl/member-master2-key.pem--endpoints=https://192.168.0.93:2379snapshotsaveetcd-snapshot.db。

3)修改可用节点的配置文件

/etc/etcd.env:

etcd_initial_cluster=etcd2=https://192.168.0.93:2380,etcd3=https://192.168.0.77:2380

注:只保留可用节点

systemctlstopetcd:关闭etcd服务

删除/var/lib/etcd目录。

4)在可用节点恢复数据

etcdctl_api=3etcdctl--cacert=/etc/ssl/etcd/ssl/ca.pem--cert=/etc/ssl/etcd/ssl/member-master2.pem--key=/etc/ssl/etcd/ssl/member-master2-key.pemsnapshotrestoreetcd-snapshot.db--endpoints="https://192.168.0.93:2379"--nameetcd2--initial-advertise-peer-urlshttps://192.168.0.93:2380--data-dir=/var/lib/etcd--initial-clusteretcd2=https://192.168.0.93:2380,etcd3=https://192.168.0.77:2380

注:恢复命令中指定节点的名称、peerurl等信息,在每个可用节点上都需要执行恢复命令。

5)启动可用节点的etcd服务:systemctlstart。

6)查看集群状态

通过cluster-health命令,查询集群状态正常,节点指定的正常节点。

六、定时检测

定时检测功能为定时检测etcd集群。定时检测功能包括以下方面:

1)定时检测

设置一个定时任务,每3分钟检测一次etcd集群状态。当集群节点都正常时,不做任何处理。当集群正常,但是有异常节点时,需要把异常节点移除,保证n/2+1尽量小,才能最大可能维持集群的稳定。当集群异常,需要对集群做恢复处理。当集群节点个数小于master节点个数时,若没有在集群中的master节点可用,则扩容可用节点到集群中。

2)异常节点移除,与集群缩容功能对异常节点做移除相同。

3)异常集群修复,与异常集群修复对异常集群做修复动作相同。

4)扩容master节点,把没有在集群中,并可用的master节点扩容到etcd集群中。

如图2所示,本发明的实现kv存储服务高可用的方法的一个具体实施过程:

用户向etcd节点中添加新节点,并生成和配置证书,加入到etcd集群中。用户通过集群扩容功能扩容集群,添加新节点到etcd节点,并生成和配置证书,加入到etcd集群中。用户通过集群缩容进行缩容集群,删除指定的etcd节点。用户通过定时检测功能启动定时检测,当有异常集群时,通过异常修复功能进行异常集群修复。

以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1