南大通用GBase 8c分布式高可用服务是由相关组件来控制的,支持DCS(等效于etcd)提供管理集群各服务组件的启停以及高可用的选主功能。etcd集群若宕机不稳定,将直接影响高可用服务的使用。或者当数据库所在主机上存在其他服务,同样使用etcd,那么此时可能面临着管理南大通用GBase 8c数据库的etcd服务与其他组件的etcd服务冲突的情况,同样威胁数据库的高可用服务。当etcd服务面临冲突时,则需要重新手动部署,具体分为以下两种情况:

  • 服务器上还有其他组件已经占用了默认的etcd服务(etcd.service)或者etcd运行目录(/var/lib/etcd);
  • GBase 8c的etcd服务需要在指定的集群下部署,也就是说和其他服务组件共用etcd集群;

这些情况下,我们可以通过手动安装etcd集群,并通过服务名、端口、运行目录等方式来隔离或共用etcd服务。本文建议DBA或有一定技术基础的数据库从业人员参考。

手动配置南大通用GBase 8c etcd集群步骤如下:

(1)规划etcd集群配置

etcd节点名

IP

端口

etcd运行目录

etcd-1

192.168.0.100

12379

/var/lib/etcd_gbase

etcd-2

192.168.0.101

12379

/var/lib/etcd_gbase

etcd-3

192.168.0.102

12379

/var/lib/etcd_gbase

(2)分别在三台服务器上创建etcd服务运行的目录,目录名不能和其他服务需要的etcd运行目录重复

$ makdir -p /var/lib/etcd_gbase

(3)手动编辑3个节点etcd配置文件

特别注意:在arm服务器上配置etcd时需要添加额外配置项:

ETCD_UNSUPPORTED_ARCH=arm64

1) 192.168.0.100节点的etcd-1配置文件

$ cat /etc/etcd/etcd.conf
ETCD_NAME=etcd-1
ETCD_DATA_DIR="/var/lib/etcd_gbase"
ETCD_LISTEN_PEER_URLS="http://192.168.0.100:12380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.0.100:12379,http://192.168.0.100:12379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.100:12380"
ETCD_INITIAL_CLUSTER="etcd-1=http://192.168.0.100:12380,etcd-2=http://192.168.0.101:12380,etcd-3=http://192.168.0.102:12380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="singless"

2) 192.168.0.101节点的etcd-2配置文件

$ cat /etc/etcd/etcd.conf
ETCD_NAME=etcd-2
ETCD_DATA_DIR="/var/lib/etcd_gbase"
ETCD_LISTEN_PEER_URLS="http://192.168.0.101:12380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.0.101:2379,http://192.168.0.101:12379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.101:12380"
ETCD_INITIAL_CLUSTER="etcd-2=http://192.168.0.100:12380,etcd-2=http://192.168.0.101:12380,etcd-3=http://192.168.0.102:12380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="singless"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.101:12379"

3) 192.168.0.102节点的etcd-3配置文件

$ cat /etc/etcd/etcd.conf
ETCD_NAME=etcd-3
ETCD_DATA_DIR="/var/lib/etcd_gbase"
ETCD_LISTEN_PEER_URLS="http://192.168.0.102:12380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.0.102:12379,http://192.168.0.102:12379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.0.101:12380"
ETCD_INITIAL_CLUSTER="etcd-2=http://192.168.0.100:12380,etcd-2=http://192.168.0.101:12380,etcd-3=http://192.168.0.102:12380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="singless"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.0.102:12379"

(4)编辑etcd的server服务,若etcd.server已经存在且处于运行状态,则需要修改server名称,且每个节点的配置均相同。

$ cat /usr/lib/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
User=root
Type=notify
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target

(5)启动etcd服务,并加入开机启动

systemctl start etcd
systemctl enable etcd

(6)etcd服务配置完成。

(7)查看etcd集群成员信息

$ etcdctl --endpoints http://192.168.0.101:12379 member list
897226ebfbede926: name=etcd-1 peerURLs=http://192.168.0.100:12380 clientURLs=http://192.168.0.100:12379 isLeader=false
938287ed98cae601: name=etcd-2 peerURLs=http://192.168.0.101:12380 clientURLs=http://192.168.0.101:12379 isLeader=true
b5fb7b1cab0fff45: name=etcd-3 peerURLs=http://192.168.0.101:12380 clientURLs=http://192.168.0.102:12379 isLeader=false