consul集群部署

您所在的位置:网站首页 consul集群部署及应用 consul集群部署

consul集群部署

2023-07-03 14:18| 来源: 网络整理| 查看: 265

consul 集群部署

consul 高可用部署方式,支持测试生产环境部署

consul 基于 docker 环境和基于 cloudiac 部署高可用模式,支持 client+server 模式,同时支持开启 acl 控制和 tls 通信机制

所有证书配置文件均放在服务器的 /opt/consul 下, 挂载到容器的 /consul/config 下

开启 acl 和 tls 准备 配置文件准备

配置文件主要有开启 acl 的配置,开启 tls 的配置,需要的 token,证书相关文件

token 可以使用任意 consul 服务生成,可以移植使用

tls 证书可以使用 openssl , 官方发布的证书,以及 consul 自身生成的证书,此处我们使用 consul 自身生成的证书来演示

acl 配置准备 1. 启动 consul 容器 # /usr/yunji/tls 证书生成的目录 $ mkdir -p /opt/consul $ docker run -v /opt/consul:/consul/config -d --name=acl-server-consul -p 8500:8500 consul:latest 复制代码 2.  开启 acl $ cd /opt/consul # cat acl.json { "acl":{ "enabled": true, "default_policy": "deny", "enable_token_persistence":true }, "datacenter":"dc1", "primary_datacenter": "dc1" } 复制代码 3. 重启consul $ docker resrat acl-server-consul 复制代码 4. 生成token # 生成 acl 的 token # 进入容器 ➜ docker exec -it acl-server-consul sh # 生成 key $ consul acl bootstrap AccessorID: dbeae895-cb7c-0bb4-b6fe-f49bad9d7526 SecretID : 5ecc86f0-fa68-6ddc-e848-ef382d7737ec Description: Bootstrap Token (Global Management) Local: false Create Time: 2022-04-18 06:29:28.7108916 +0000 UTC Policies: 00000000-0000-0000-0000-000000000001 - global-management # 把生成的 SecretID 写入 acl.json /consul/config # cat acl.json { "acl":{ "enabled": true, "default_policy": "deny", "enable_token_persistence":true, "tokens":{ "master":"5ecc86f0-fa68-6ddc-e848-ef382d7737ec" } }, "datacenter":"dc1", "primary_datacenter": "dc1" } 复制代码 tls 证书准备 1. 证书生成 # 进入 consul 容器 $ docker exec -it acl-server-consul sh cd /consul/config /consul/config # ls acl.json /consul/config # consul tls ca create ==> Saved consul-agent-ca.pem ==> Saved consul-agent-ca-key.pem /consul/config # ls acl.json consul-agent-ca-key.pem consul-agent-ca.pem /consul/config # consul tls cert create -server -dc dc1 ==> WARNING: Server Certificates grants authority to become a server and access all state in the cluster including root keys and all ACL tokens. Do not distribute them to production hosts that are not server nodes. Store them as securely as CA keys. ==> Using consul-agent-ca.pem and consul-agent-ca-key.pem ==> Saved dc1-server-consul-0.pem ==> Saved dc1-server-consul-0-key.pem /consul/config # ls acl.json consul-agent-ca-key.pem consul-agent-ca.pem dc1-server-consul-0-key.pem dc1-server-consul-0.pem 复制代码

挂载目录下 /opt/consul 的文件说明

acl.json  开启 acl 配置 以及 token配置

consul-agent-ca.pem:CA公共证书

dc1-server-consul-0.pem:数据中心的 Consul 服务器节点公共证书 dc1

dc1-server-consul-0-key.pem:数据中心的 Consul 服务器节点私钥 dc1

consul基于docker环境的集群部署

模式采用3节点 server+1节点 client 端 ,同时支持开启 acl 控制访问和 tls 通信保护

TLS:使用 https 加密 consul 的 API、GRPC ACl:控制 Services、Nodes、KV 的读写权限 配置说明 server 端配置

acl 和 tls 配置说明

acl.json 用来控制 acl 访问

server-tls.json 用来控制 tls 通信保护访问

所有的配置文件和证书都放在服务器的 /opt/consul 目录下

$ cat acl.json { "acl":{ "enabled": true, "default_policy": "deny", "enable_token_persistence":true, "tokens":{ "master":"5ecc86f0-fa68-6ddc-e848-ef382d7737ec" } }, "datacenter":"dc1", "primary_datacenter": "dc1" } # tls配置 $ cat server-tls.json { "verify_incoming": true, "verify_outgoing": true, "verify_server_hostname": true, "ca_file": "/consul/config/consul-agent-ca.pem", "cert_file": "/consul/config/dc1-server-consul-0.pem", "key_file": "/consul/config/dc1-server-consul-0-key.pem", "auto_encrypt": { "allow_tls": true } } 复制代码 client 端配置

client-acl-tls.json 控制开启 acl 和 tls

$ cat client-acl-tls.json { "verify_incoming": false, "verify_outgoing": true, "verify_server_hostname": true, "ca_file": "/consul/config/consul-agent-ca.pem", "auto_encrypt": { "tls": true }, "acl":{ "enabled": true, "default_policy": "deny", "enable_token_persistence":false, "tokens":{ "agent":"5ecc86f0-fa68-6ddc-e848-ef382d7737ec" } }, "datacenter":"dc1", "primary_datacenter": "dc1" } 复制代码 docker 启动部署 server 端

服务器列表, 此处通过阿里云服务器,内网互通的模式下测试

服务器 ip节点类型192.168.0.147server1server 主节点192.168.0.149server2server192.168.0.150server3server 启动 server 服务 #主节点 server1 启动 docker run -d --name consul-1 --net host -v /opt/consul/:/consul/config consul:latest agent -server -bootstrap-expect 3 -ui -bind 0.0.0.0 -client 0.0.0.0 -advertise 192.168.0.147 -node 192.168.0.147 -enable-script-checks=true #节点 server2 启动 docker run -d --name consul-2 --net host -v /opt/consul/:/consul/config consul:latest agent -server -ui -bind 0.0.0.0 -client 0.0.0.0 -retry-join 192.168.0.147 -advertise 192.168.0.149 -node 192.168.0.149 -enable-script-checks=true #节点 server3 启动 docker run -d --name consul-2 --net host -v /opt/consul/:/consul/config consul:latest agent -server -ui -bind 0.0.0.0 -client 0.0.0.0 -retry-join 192.168.0.147 -advertise 192.168.0.150 -node 192.168.0.150 -enable-script-checks=true 复制代码 client 端

服务器列表

服务器 ip节点类型192.168.0.148client-cliclient 启动 client 服务 # client 节点启动 docker run -d --name consul-2 --net host -v /opt/consul/:/consul/config consul:latest agent -client -ui -bind 0.0.0.0 -client 0.0.0.0 -retry-join 192.168.0.147 -advertise 192.168.0.148 -node client-cli -enable-script-checks=true 复制代码 演示效果

基于 cloudiac

基于 cloudiac 模式,可以一键申请阿里云资源,同时部署 consul 集群服务,使用完可以随时销毁, cloudiac 以『环境即服务』的方式来管理基础设施以及应用,后续会出一个详细教程,大家感兴趣的可以移步 github 了解,完全开源免费 cloudiac



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3