南大通用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