consul 使用指南
关于 consul
consul 的下载地址: https://developer.hashicorp.com/consul/install
本人下载了最新版(consul_1.21.4_windows_amd64),貌似有问题,不能新建 Key/Value 。
经本人测试后,consul_1.20.6_windows_amd64 可正常使用。
本示例用 1.20.6 版本。
启动
启动 consul:
1# 启动开发模式(数据不会持久化,服务关闭后配置数据都会被清除)
2D:\dev\bin>D:\dev\consul_1.20.6_windows_amd64\consul.exe agent -dev
3
4# 启动生产模式(数据持久化;无需任何权限认证)
5D:\dev\bin>D:\dev\consul_1.20.6_windows_amd64\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect 1 -data-dir D:\dev\consul_1.20.6_windows_amd64\data
然后可在浏览器中访问 consul 控制台: http://localhost:8500/
由于使用上面的生产模式的启动参数过多,并且没有开启权限认证,我们可以可把这些配置写到配置文件中。
配置文件(bootstrap.hcl)示例:
1# 基础配置
2datacenter = "data-center"
3data_dir = "D:/dev/consul_1.20.6_windows_amd64/data"
4server = true
5bootstrap_expect = 1
6
7# ACL 配置
8acl = {
9 enabled = true
10 default_policy = "deny"
11 down_policy = "extend-cache"
12 enable_token_persistence = true
13 #"tokens" {
14 # "master" = "b8cbbabb-02ec-6894-2f88-59f904374afb"
15 #}
16}
17
18# 启用 UI
19ui_config {
20 enabled = true
21}
22
23# 网络配置
24bind_addr = "127.0.0.1"
25client_addr = "0.0.0.0"
然后在终端启动服务:
1D:\dev\bin>D:\dev\consul_1.20.6_windows_amd64\consul.exe agent -config-file=D:\dev\consul_1.20.6_windows_amd64\bootstrap.hcl
启动后,在次访问控制台,发现提示没有权限。因此先要生成可访问的 token。
1D:\dev\bin>D:\dev\consul_1.20.6_windows_amd64\consul.exe acl bootstrap
2AccessorID: 7d7b75fb-c37b-ea71-7d80-fc00d5cc23c7
3SecretID: b8cbbabb-02ec-6894-2f88-59f904374afb
4Description: Bootstrap Token (Global Management)
5Local: false
6Create Time: 2025-09-03 15:50:44.7158336 +0800 CST
7Policies:
8 00000000-0000-0000-0000-000000000001 - global-management
SecretID 就是生成的 token 。
在次访问控制台,查看node、service等菜单时,提示需要通过 token 才能访问了。
注意:
bootstrap token 只能创建一个,在创建 master token 之后该 token 就会被禁用,并且不能在次创建。
此 token 具有全局管理的权限,也就是最大的权限。它允许操作员使用令牌密钥ID来引导ACL系统。
因此,千万要保存好。
最后
本人在使用 springcloud(2021.0.3) + springboot(2.7.18) 和集成 consul 时,如果 consul 启用了权限(ACL)认证,死活无法正常运行;
反而关闭了可以正常运行。
尝试了好久,实在找不到错误原因。(spring cloud 和 consul 的版本原因?配置错误?哎,谁知道呢。)
如果找到原因,以后再补充。
评论