二、不同机房如何在同一etcd集群上进行注册,如何规划
这个其实看起来复杂,实施起来非常简单,为了节省资源,不可能每个机房都对应建etcd集群,这个时候就可以复用etcd集群,比如北显和亦庄机房的注册,可以使用改变默认etcd键值目录来实现:
prefix = "/service_sgin_bx"
prefix = "/service_sgin_yz"
三、confd更新频率如何周期可控制,k/v每有变化实时触发reload太敏感,况且每个容器要注册多个k/v,在整体注册完之前,是不需要reload的
这个同样,看起来复杂,其实confd改一下模式就能实现,不要用watch模式,改而周期性去探测etcd的键值变化,比如说2秒探测一次,对应启动时的命令如下:
./confd -backend="etcd" -node=10.211.103.151:2379 -interval=2
四、confd启动时如何关联多个etcd的地址,保证高可用
同样,只要修改下confd的启动命令即可,让confd监控更多node,我目前的etcd有3个node,全部监控进去如下:
./confd -backend="etcd" -node=10.211.103.151:2379 -node=10.211.103.152:2379 -node=10.211.103.153:2379 -interval=2
五、权限问题的处理
对于权限有两种方式,一个是证书,一个是账号,业务本就跑到内网,再加之账号的配合是灵活迅速的,就从账号着手了,对于etcd的权限,主要是通过用户、规则来管理的,将用户和规则对应起来就是用户的权限,默认安装后是不开启权限的,整理后相关的权限操作如下:
用户管理:
etcdctl user add root:123 #加root用户,开启权限必须先加
etcdctl auth enable #权限管理开启
etcdctl --username root:123 user list #查看用户
etcdctl --username root:123 user remove test_user #删除用户
role规则管理:
etcdctl --username root:123 role add test_role
etcdctl --username root:123 role grant --path "/*" --rw test_role #加权限
etcdctl --username root:123 role revoke --path "/*" --write test_role #减权限
etcdctl --username root:123 role remove test_role
etcdctl --username root:123 role list
etcdctl --username root:123 role get test_role
用户规则管理:
etcdctl --username root:123 user add test_user:123
etcdctl --username root:123 user grant --roles test_role test_user #加规则
etcdctl --username root:123 user revoke --roles test_role test_user #减规则
etcdctl --username root:123 user get test_user #查看某个用户下的规则
备注:1、guest用户的规则是guest,默认是全部权限;
2、confd是以访客guest身份监控k/v的,对应的规则就是guest;
后附:etcd的集群配置,扩容
假设初始化3台etcd分别是10.211.103.152、10.211.103.153、10.211.103.154,etcd下载下来就可以用,主要是如何配置启动,分别再三台机器上编写如下启动脚本etcdnew.sh,然后依次启动即可:
10.211.103.152服务器:
#/bin/sh
#writer:gaolixu
/usr/local/etcd/etcd --name etcd152 --data-dir /data1/etcd \
--initial-advertise-peer-urls :2380 \
--listen-peer-urls :2380 \
--listen-client-urls :2379 \
--advertise-client-urls :2379 \
--initial-cluster-token etcd-cluster-1 \
--initial-cluster etcd152=http://10.211.103.152:2380,etcd153=http://10.211.103.153:2380,etcd154=http://10.211.103.154:2380 \
--initial-cluster-state new &