Consul 单机部署

1
2
3
yum install -y yum-utils
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum -y install consul

修改 /etc/consul.d/consul.hcl 文件,配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
log_level = "INFO"
log_file = "/var/log/consul/"
log_rotate_bytes = 10485760
log_rotate_max_files = 3
connect = {
  enabled = true
}
data_dir = "/data/consul"
client_addr = "0.0.0.0"
ui_config{
  enabled = true
}
server = true
bootstrap_expect=1
encrypt = "2choh8YtnexKoVw8M9L6rcKGG21QwjfvnRYaKTJPdSw="

由于 consul 部署为单机环境,bootstrap_expect 需要配置为 1, encrypt 参数的值可以通过 consul keygen 命令生成

启动 consul 服务

1
systemctl start consul

consul 服务端口说明

  • 8300: 集群内数据的读写和复制
  • 8301: 单个数据中心 gossip 协议通讯
  • 8302: 跨数据中心 gossip 协议通讯
  • 8500: 提供获取服务列表、注册服务、注销服务等HTTP接口;提供UI服务
  • 8600: 采用 DNS 协议提供服务发现功能

consul 默认是不启用访问权限控制的,为了服务的安全需要启用访问权限控制

准备 acl.hcl 文件

1
2
3
4
5
acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
}

acl.hcl 文件放到 /etc/consul.d 目录下,重启 consul 服务

1
2
mv acl.hcl /etc/consul.d
systemctl restart consul

创建初始引导令牌

1
consul acl bootstrap

保存上面命令输出信息

SecretID 写入 acl.hcl 文件中

1
2
3
4
5
6
7
8
acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
  tokens = {
    master = "<token_strings>"
  }
}

保存,重启 consul 服务即可,以后访问 consul 服务需要带上 token 通过身份验证

浏览器中打开 http://<server_ip>:8500/ui/dc1/kv

点击 key/value 创建 key/value 值,如下图