开启acl
// 这里的master token是用UUID生成的,保证三个server的acl配置一样
"acl":{
"enabled":true,
"default_policy":"deny",
"enable_token_persistence":true,
"tokens":{
"master":"14d54c5e-24ca-41cc-8c9e-987ba7a96ffb"
}
}
启动docker-compose up
后台报大量错误
agent: Coordinate update blocked by ACLs
解决办法:创建一个token
#使用POSTMAN,请求方法
PUT
#请求路径
http://192.168.41.128:8500/v1/acl/create
#请求JSON参数
{
"Name": "Agent Token",
"Type": "client",
"Rules": "node \"\" { policy = \"write\" } service \"\" { policy = \"read\" }"
}
#Headers加上X-Consul-Token,值为master的值
14d54c5e-24ca-41cc-8c9e-987ba7a96ffb
#返回结果
{
"ID": "db98c304-4d38-8660-fafe-6a4be56a40d0"
}
将返回的ID贴到consul节点配置中
"acl":{
"enabled":true,
"default_policy":"deny",
"enable_token_persistence":true,
"tokens":{
"master":"14d54c5e-24ca-41cc-8c9e-987ba7a96ffb",
"agent":"db98c304-4d38-8660-fafe-6a4be56a40d0"
}
}
重新启动,问题解决。
配置环境变量
docker exec consul_server_1 consul members
执行上面命令查看members的时候,发现返回为空
配置CONSUL_HTTP_TOKEN
环境变量,值为刚刚PUT请求获取的token即可。
修改docker-compose.yml
配置,所有节点增加环境变量
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
- CONSUL_HTTP_TOKEN=db98c304-4d38-8660-fafe-6a4be56a40d0
重新启动docker-compose up,再次查看members
问题解决。
登录web ui
打开后发现啥都没有,需要点击ACL,输入master
中的值