Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Consul部署

Consul部署

作者头像
陳斯托洛夫斯記
发布于 2022-10-27 07:17:45
发布于 2022-10-27 07:17:45
69600
代码可运行
举报
文章被收录于专栏:XBDXBD
运行总次数:0
代码可运行

集群部署

节点IP

节点名称

192.168.1.181

consul-01

192.168.1.182

consul-02

192.168.1.183

consul-03

节点一配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建目录
mkdir -p /data/consul/{data,conf,bin,logs}

# 下载consul压缩包,解压到/data/consul/bin/目录下

# 创建配置文件
vim /data/consul/conf/consul-01.json

{
    "datacenter": "dc1",
    "primary_datacenter": "dc1",
    "bootstrap_expect": 3,
    "start_join":[
        "192.168.1.181",
        "192.168.1.182",
        "192.168.1.183"
    ],
    "retry_join":[
        "192.168.1.181",
        "192.168.1.182",
        "192.168.1.183"
    ],
    "advertise_addr": "192.168.1.181",
    "bind_addr": "192.168.1.181",
    "client_addr": "0.0.0.0"
    "server": true,
    "ui": true,
    "connect":{
        "enabled": true
    },
    "node_name": "consul-01",
    "data_dir": "/data/consul/data/",
    "enable_script_checks": false,
    "enable_local_script_checks": false,
    "log_file": "/data/consul/logs/",
    "log_level": "info",
    "log_rotate_bytes": 100000000,
    "log_rotate_duration": "24h",
    "encrypt": "Nliwp+3S19aCAY8Sq7G5NJUqVkBwqNyG13v1BExCMd4=",	# consul keygen 生成
    "acl": {
        "enabled": true,
        "default_policy": "deny",		# 默认allow,如果需要自定义权限,将其设置为deny
        "enable_token_persistence": true,	# 开启token持久化,持久化到磁盘上
	"enable_key_list_policy":true		# 允许KV的递归操作
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建启动脚本
vim /usr/lib/systemd/system/consul.service


[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
Type=notify
User=root
ExecStart=/data/consul/bin/consul agent -config-dir=/data/consul/conf/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=10240
LimitNPROC=10240

[Install]
WantedBy=multi-user.target
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动服务
systemctl daemon-reload
systemctl enable consul
systemctl start consul

节点二配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建目录
mkdir -p /data/consul/{data,conf,bin,logs}

# 下载consul压缩包,解压到/data/consul/bin/目录下

# 创建配置文件
vim /data/consul/conf/consul-02.json

{
    "datacenter": "dc1",
    "primary_datacenter": "dc1",
    "bootstrap_expect": 3,
    "start_join":[
        "192.168.1.181",
        "192.168.1.182",
        "192.168.1.183"
    ],
    "retry_join":[
        "192.168.1.181",
        "192.168.1.182",
        "192.168.1.183"
    ],
    "advertise_addr": "192.168.1.182",
    "bind_addr": "192.168.1.182",
    "client_addr": "0.0.0.0",
    "server": true,
    "ui": true,
    "connect":{
        "enabled": true
    },
    "node_name": "consul-02",
    "data_dir": "/data/consul/data/",
    "enable_script_checks": false,
    "enable_local_script_checks": false,
    "log_file": "/data/consul/logs/",
    "log_level": "info",
    "log_rotate_bytes": 100000000,
    "log_rotate_duration": "24h",
    "encrypt": "Nliwp+3S19aCAY8Sq7G5NJUqVkBwqNyG13v1BExCMd4=",
    "acl": {
        "enabled": true,
        "default_policy": "deny",
        "enable_token_persistence": true,
	"enable_key_list_policy":true
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建启动脚本
vim /usr/lib/systemd/system/consul.service


[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
Type=notify
User=root
ExecStart=/data/consul/bin/consul agent -config-dir=/data/consul/conf/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=10240
LimitNPROC=10240

[Install]
WantedBy=multi-user.target
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动服务
systemctl daemon-reload
systemctl enable consul
systemctl start consul

节点三配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建目录
mkdir -p /data/consul/{data,conf,bin,logs}

# 下载consul压缩包,解压到/data/consul/bin/目录下

# 创建配置文件
vim /data/consul/conf/consul-03.json

{
    "datacenter": "dc1",
    "primary_datacenter": "dc1",
    "bootstrap_expect": 3,
    "start_join":[
        "192.168.1.181",
        "192.168.1.182",
        "192.168.1.183"
    ],
    "retry_join":[
        "192.168.1.181",
        "192.168.1.182",
        "192.168.1.183"
    ],
    "advertise_addr": "192.168.1.183",
    "bind_addr": "192.168.1.183",
    "client_addr": "0.0.0.0",
    "server": true,
    "ui": true,
    "connect":{
        "enabled": true
    },
    "node_name": "consul-03",
    "data_dir": "/data/consul/data/",
    "enable_script_checks": false,
    "enable_local_script_checks": false,
    "log_file": "/data/consul/logs/",
    "log_level": "info",
    "log_rotate_bytes": 100000000,
    "log_rotate_duration": "24h",
    "encrypt": "Nliwp+3S19aCAY8Sq7G5NJUqVkBwqNyG13v1BExCMd4=",
    "acl": {
        "enabled": true,
        "default_policy": "deny",
        "enable_token_persistence": true,
	"enable_key_list_policy":true
    }
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建启动脚本
vim /usr/lib/systemd/system/consul.service


[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
Type=notify
User=root
ExecStart=/data/consul/bin/consul agent -config-dir=/data/consul/conf/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=10240
LimitNPROC=10240

[Install]
WantedBy=multi-user.target
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动服务
systemctl daemon-reload
systemctl enable consul
systemctl start consul

启用 ACL 访问控制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 重新启动consul,在任意一节点上初始化consul acl
[root@i-lra7lmuy ~]# consul acl bootstrap
AccessorID:       9bf939ae-cb49-655a-0cc5-adbf6d29b239
SecretID:         98633362-4795-75e0-2c4b-849a7195e3c9
Description:      Bootstrap Token (Global Management)
Local:            false
Create Time:      2022-04-03 12:34:28.883028023 +0800 CST
Policies:
   00000000-0000-0000-0000-000000000001 - global-management
该命令只能执行一次,生成的SecretID拥有最高权限

# 修改三个节点的配置文件,启用ACL
...
    "acl": {
        "enabled": true,
        "default_policy": "deny",
        "enable_token_persistence": true,
	"enable_key_list_policy":true,
	"tokens": {
            "master": "98633362-4795-75e0-2c4b-849a7195e3c9",
	    "agent": "98633362-4795-75e0-2c4b-849a7195e3c9"
        }
    }

配置规则

浏览器访问http://ip:8500,输入上面生成的SecretID

默认Policy:global-management,这个是拥有最高权限的SecretID,等于超级管理员

AccessorID:访问ID。唯一,对应有一个token Scope:作用范围 Roles & Policies:拥有权限或者策略,AccessorID通过关联不同角色和策略来控制访问权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 服务策略
service_prefix "" {
    policy = "write"		# 表示所有服务可写
}

# node策略
node_prefix "" {
    policy = "write"
}

# kv 策略
kv_prefix "" {
    policy = "list"		# 所有kv可执行递归list操作
}

kv_prefix "" {
    policy = "write"		# 所有kv可执行写操作
}

kv_prefix "config/" {
    policy = "read"		# 以config/开头的key可执行读操作
}

单机部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下载
https://releases.hashicorp.com/consul/1.11.4/consul_1.11.4_linux_amd64.zip

# 解压
mkdir -p /data/consul/{conf,data,logs,bin}
unzip consul_1.11.4_linux_amd64.zip -d /data/consul/bin/

# 自动补全
consul -autocomplete-install
complete -C /usr/local/bin/consul consul

# 编辑配置文件
vim /data/consul/conf/consul.json
{
       "bind_addr": "192.168.1.100",
       "bootstrap_expect": 1,
       "client_addr": "192.168.1.100",
       "data_dir": "/data/consul/data/",
       "datacenter": "dec1",
       "disable_update_check": false,  
       "enable_syslog": true,
       "log_level": "INFO",
       "server": true, 
       "syslog_facility": "local0",
       "ui": true,
       "performance": {
            "raft_multiplier": 1
      }
   }

# 创建启动脚本
vim /usr/lib/systemd/system/consul.service


[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target

[Service]
Type=notify
User=root
ExecStart=/data/consul/bin/consul agent -config-dir=/data/consul/conf/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=10240
LimitNPROC=10240

[Install]
WantedBy=multi-user.target

# 启动
systemctl daemon-reload
systemctl start consul

consul备份与还原

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 备份
consul snapshot save --http-addr=http://127.0.0.1:8500 -token=98633362-4795-75e0-2c4b-849a7195e3c9 consul.snap

# 查看备份consul状态文件
consul snapshot inspect consul.snap

# 还原consul服务器状态
consul snapshot restore --http-addr=http://127.0.0.1:8500 -token=98633362-4795-75e0-2c4b-849a7195e3c9 consul.snap

KV的导出与导入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导出所有kv键值对,最一个参数是导出键值对的前缀,为空时说明要导出所有
consul kv export --http-addr=http://127.0.0.1:8500 -token=98633362-4795-75e0-2c4b-849a7195e3c9 '' > kv.json

# 导入,最后一个@consul_kv.sjon也可以指定绝对路径@/data/consul/consul_kv.json
consul kv import --http-addr=http://127.0.0.1:8500 -token=98633362-4795-75e0-2c4b-849a7195e3c9 @kv.json
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Consul 集群部署
默认Policy:global-management,这个是拥有最高权限的SecretID,等于超级管理员
陳斯托洛夫斯記
2024/08/07
760
Consul 集群部署
Consul 的多数据中心架构配置
Consul是一个开源的分布式服务发现和配置管理系统。它支持多数据中心部署,可以跨多个地理位置扩展和管理服务。Consul的多数据中心架构非常适合大型企业和全球范围的部署,可以提供高可用性和灵活性。
堕落飞鸟
2023/04/18
7080
consul微服务治理中心踩坑
本工程完整演示了以consul为微服务治理中心的标准微服务架构各个基本模块功能,通过该项目能够完整了解微服务注册、发现、健康监测、负载均衡、全链路监控、配置中心、权限控制等。
IT运维技术圈
2022/06/26
9120
consul微服务治理中心踩坑
Consul单机部署
创建启动脚本 vim /usr/lib/systemd/system/consul.service
陳斯托洛夫斯記
2024/08/07
1650
Consul 备份与还原
陳斯托洛夫斯記
2024/08/07
1770
Prometheus监控神器-服务发现篇(三)
上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。Server之间通过局域网或广域网通信实现数据一致性。每个Server或Client都是一个consul agent。
Kubernetes技术栈
2020/09/07
1.5K0
安装Consul集群
TIPS •本文基于Consul 1.5.3,理论适用于Consul 1.6及更低版本。•安装单机版Consul详见:《安装单机版Consul》
用户1516716
2019/12/23
1.7K0
通过Y20流水线安装Consul集群
Consul是在微服务架构中做注册中心的一个程序,非常小巧。它可以和openresty配合做网关路由,和springcloud配合做服务发现。除了单机运行,它还能部署为高可用集群。下面,我先讲一下如何手动安装Consul节点并加入集群,再演示如何通过流水线安装Consul集群。
airxiechao
2022/04/14
3050
微服务 - 搭建Consul集群服务,Consul配置中心
传统配置文件的弊端 静态化配置,例如env文件 配置文件无法区分环境 配置文件过于分散 历史版本无法查看 配置中心如何解决的呢?配置中心的思路是把项目中的配置参数全部放在一个集中的地方来管理,并提供一
stark张宇
2023/04/22
7820
grafana+prometheus+Consul自动服务发现监控平台
一、安装prometheus 安装包下载地址:https://prometheus.io/download/
@凌晨
2020/12/07
2.1K0
微服务Consul系列之集群搭建
在上一篇中讲解了Consul的安装、部署、基本的使用,使得大家有一个基本的了解,本节开始重点Consul集群搭建,官方推荐3~5台Server,因为在异常处理中,如果出现Leader挂了,只要有超过一半的Server还处于活跃状态,consul就会重新选举新的Leader,保证集群可以正常工作。
五月君
2019/07/12
1.2K0
微服务Consul系列之集群搭建
Consul多数据中心及数据同步
在上一篇文章中,我们讲解了单数据中心的搭建流程,这边文章将在其基础之上构建多数据中心。我们另选一个region的两个节点,按照单数据中心的方式搭建好,然后执行如下命令,先查看下数据中心情况:
tunsuy
2022/10/27
2.4K0
基于Docker的Consul集群实现服务发现
其实简单说,服务发现就是解耦服务与IP地址之间的硬绑定关系, 以典型的集群为例,对于集群来说,是有多个节点的,这些节点对应多个IP(或者同一个IP的不同端口号),集群中不同节点责任是不一样的。 比如说一个数据集群中,可以分为读节点或者写节点,写节点和读节点都是相对的,不是硬绑定的,某一个逻辑节点,随着故障转移及恢复,是可以变换身份的(写变读,读变写;主降从,从升主等等) 集群对外提供服务的时候,对于外界来说,集群中节点身份变换的时候需要对外透明,外界无需因为集群节点的身份变换而更改配置,这就需要一个解耦合的服务。
星哥玩云
2022/07/29
4880
基于Docker的Consul集群实现服务发现
基于Docker使用Consul-template实现动态配置Nginx服务
在服务发现和注册的基础上,本文将引入 Nginx反向代理服务器和 Consul-template[1] 组件,实现动态的服务负载均衡。
公众号: 云原生生态圈
2021/01/13
2K0
基于Docker使用Consul-template实现动态配置Nginx服务
Prometheus 通过 consul 分布式集群实现自动服务发现
本次演示环境,我是在虚拟机上安装 Linux 系统来执行操作,以下是安装的软件及版本:
哎_小羊
2020/04/08
2.2K0
Prometheus 通过 consul 分布式集群实现自动服务发现
微服务Consul系列之服务部署、搭建、使用
以上只是列举的笔者曾经遇到的几点问题,当然问题还不止于这些,下面介绍的Consul可以有效解决这些问题,当然还有一些其它的优点,让我们一起期待下文的Consul的讲解。
五月君
2019/07/12
1.6K0
微服务Consul系列之服务部署、搭建、使用
consul安全加固
最近的工作需要对默认安装的consul集群进行安全加固,这里将安全加固的步骤记录下来。
jeremyxu
2019/03/13
6.6K0
consul安全加固
Nomad 系列-安装
关于 Nomad 的简介,之前在 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad[2] 有提到过,这里再快速过一遍:
东风微鸣
2023/09/14
5250
Nomad 系列-安装
consul配置ACL
因为牵扯到自动注册服务,需要在脚本中使用linux命令,所以不使用docker方式启动consul,直接使用下载安装包,命令启动,具体如下:
用户4877748
2020/07/21
1.7K0
Consul与Kubernetes的集成
Kubernetes是一种流行的容器编排平台,可以帮助企业自动化部署、扩展和管理容器化应用程序。Consul可以与Kubernetes集成,以提供服务发现、健康检查和流量路由等关键功能。
堕落飞鸟
2023/04/18
1.1K0
相关推荐
Consul 集群部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验