1. 启动consul
consul agent -dev(开发环境下启动)
consul agent -server(服务器状态下启动)
2. consul配置文件
1. 创建bootstrap.json文件
2. 启动consul时候,带上-config-dir [path],这样就可以启动consul的配置文件(json格式)
3. consul基本配置选项
1. acl: acl相关的操作
2. agent:
3. event: 事件管理
4. key: key/value操作
5. Keyring:
6. node: 节点管理
7. operator: 集群层面,使用这个做操作api
8. query: 查询管理
9. server: 服务层面的操作
10. session: 会话管理
4. ACL配置:
1. acl.enabled 开启acl
2. default_policy: 黑名单,白名单配置
3. down_policy: 远程错误时的应对策略
4. policy_ttl: 策略缓存的ttl
5. token_ttl: token的ttl
配置好之后,首先 acl.tokens.master将会首先被加到全局策略中,对于队长模式,这个节点是最重要的。一旦修改之后,新的选举将会开始。
一开始必须创建 acl.tokens.agent,这样才可以得到权限的分配
5. Consul的服务管理
1. 节点管理,consul使用的是选举,发现模式,注意集群成功运行的基本原则,大数可用原则
2. 启动集群,consul agent -server
3. 加入集群: consul join
4. -retry-join=["52.10.110.11","52.10.110.12","52.10.100.13"] 用于设定重试的集群
5. 离开集群: consul leave
6. 强制离开集群: consul force leave
6. Autopilot管理
1. autopilot用于实时的管理consul集群的健康状况
2. 查询命令为consul operator autopilot get-config
修改的命令为consul operator autopilot set-config
3. 常见的配置参数:
CleanupDeadServers: 自动清理已经死亡的服务节点
LastContactThreshold:
ServerStabilizationTime: 当有新的节点加入后,这个时间用于确保节点的正常装载
RedundancyZoneTag:用于标注第一个被装载的zone
DisableUpgradeMigration: 如果节点内有一个更新版本的实例,那么在达到一定比例之前,是不会强制更新集群的版本的
UpgradeVersionTag: 升级版本的标签
4. 查看健康状态:
curl localhost:8500/v1/operator/autopilot/health
7. 启动模式
1. consul启动分为server/client模式,server模式必须运行在集群的状态中,client则是stateless的
2. 创建集群:
-join -start_join -retry-join
3. raft.last_log_index用于标注最后的生成log
8. 基本指令
1. 基本的帮助模式: consul join -help
2. 环境变量:
CONSUL_HTTP_ADDR 基本地址 127.0.0.1:8500
CONSUL_HTTP_TOKEN 用于acl访问token
CONSUL_HTTP_AUTH username:password 用户名密码方式的验证
CONSUL_HTTP_SSL 是否启用https
CONSUL_HTTP_SSL_VERIFY 是否验证https证书
CONSUL_CACERT https的ca证书
CONSUL_CLIENT_CERT https的ca验证证书路径
CONSUL_CLIENT_KEY https的client密钥
CONSUL_TLS_SERVER_NAME https的tls服务名称
CONSUL_GRPC_ADDR grpc通信的服务地址
3. consul catalog 用于描述consul的相应状态
datacenters 数据中心指令
nodes 节点指令
services 注册服务查看
4. consul connect
1. ca: 证书方面的连接配置
2. proxy: 用于配置代理
3. envoy: 用于配置envoy
9. debug模式
1. consul debug 这样就可以开启consul的调试模式
2. 可以根据所需,配置相关的log抓取参数,比如抓取时间,输出路径,以及是否压缩
3. agent host cluster metrics logs pprof等相关的debug参数
10. 事件中心:
1. consul event: 用于针对整个数据中心进行相应的广播
2. consul event [options] [payload]: 整个指令的集合
发送参数为-name: 事件名称
-node: 接收事件的节点
-service: 接收事件的服务
-tag: 接收事件的标签
11. 执行命令
1. consul exec [options] [-|command...] 用于consul执行一些相关的操作
12. 服务意图管理
1. 用于管理网络拓扑
2. check: 用于检查是否两个节点可以互联
3. create: 创建两个节点的网络拓扑
4. delete: 删除一个节点间拓扑
5. get: 获取拓扑的详情
6. match: 匹配拓扑
13. 密钥管理
1. consul keygen/keyring
2. keyring: 相关的指令:
-list: 列举全部的密钥
-install: 安装一个新的密钥
-use: 更换原始的密钥,使用新的密钥
-remove: 删除密钥
-relay-factor: 回路因子,最大值为5
14. kv指令
1. 用于在最高级别提供基本的crud操作
2. kv相关的子集指令:
delete 从kv池中删除相关的数据
export 导出部分的kv数据,json格式
get 获取kv集合中的数据列表
import 导入部分的kv数据
put 修改一部分的kv数据
15. leave指令
1. 剥离集群
16. 分布式锁
1. consul lock 分布式锁,用于kv之间的加锁操作
2. 非阻塞式锁,当子集终止后,会自动释放
3. consul lock [options] prefix child... 针对子集进行加锁
1. -child-exit-code 如果子集意外终止,则返回2(如果这个选项设置为true)
2. -monitor-retry 控制重试机制
3. -n 加锁的倍数,用于多层加锁确保
4. -name 对于当前的session,绑定一个可选的名字
5. -shell 开启一个shell,用于管理当前的session
6. -pass-stdin 把标准输入传递给子集
7. -timeout 阻塞锁的超时时间
8. -try 尝试获取锁的时限
9. -verbose 提高log等级
17. 服务管理模式
1. consul maint
2. -enable/-disable
3. -reason: 可选项,写一个把这个服务设置为维护模式的字条
4. -service: 可选项,针对特定业务进行维护
5. 维护模式下,该业务不会在内部dns中出现,也就是暂时下线的状态,一般用于发版本
18. 成员管理模式
1. -detailed 详细列举成员的状态
2. -status 过滤
3. -wan城域网
这个指令用于列举当前连接consul的成员的状态,分为存活alive, 丢失left以及错误failed
19. 日志控制
1. monitor, --log-level用于控制输出的日志等级
20. 操作指令
1. 这个用于操作一些集群级别的修改,慎用
主要是autopilot以及raft
21. 重载配置文件
1. consul reload 重新读取配置文件,等于重启consul
22. RTT网络回包时间
1. consul rtt [options] node1 [node2]
2. 主要用于评估物理层面的节点间的网络拥塞状况,用于排查问题的第一步
23. 服务挂载指令
1. consul services register -name=web 挂载一个名字为web的服务
2. consul services deregister -id web 卸载一个名字为web的服务
3. 可以通过catalog进行服务的查看
24. 服务状态快照
1. consul snapshot 用于保存服务快照,包括还原服务的某些状态
2. inspect 用于检查当前的consul状态
3. restore 用于还原consul的某一节点
4. save 保存consul的节点信息
5. consul snapshot save backup.snap 保存某一快照
6. consul snapshot restore backup.snap 还原快照
7. consul snapshot inspect backup.snap 查看快照的一些基本信息
25. 配置文件检查
1. consul validate /etc/consul.d用于检查配置文件的有效性
26. 版本信息
1. consul version查看consul的版本
27. 监控数据
1. consul watch 监控consul系统的相关变化
2. 可监控项目: -key 监控key
-event 事件 -passingonly -prefix 前置信息 -service 监视的服务
-shell shell -state
Consul运行
consul本身包含两种模式,server和client模式
1. consul agent -data-dir=/tmp/consul 启动consul, 并且数据落在tmp/consul下
2. 停止consul有两种形式,优雅的或者强制的,和一般的集群操作一致
3. dns检测分为节点轮询与服务轮询
配置流程:
1. 基本的配置生效顺序是命令行> 环境变量> 配置文件
2. basic_config.json 会优先于 extra_config.json
3. 命令行:
-advertise 用于改变局域网的注册地址
-advertise-wan 广域网注册地址
-bootstrap 标注一个服务是否是bootstrap模式
-bind 用于标注对内的连接地址
-client 用于标注客户端的连接ip
-config-file 用于标注配置文件的路径
-config-dir 用于标注配置文件的目录,里面会考虑json或者hcl文件
-config-format 配置文件格式json/hcl
-data-dir 数据目录的地址
-disable-keyring-file 禁用持久化key
-dns-port dns的开放端口
-domain 替换consul的子域名
-enable-script-checks 启用脚本检测,不安全
-enable-local-script-checks 仅限于本地生效
-encrypt 加密密钥
-grpc-port protobuf grpg的开放端口
-hcl hcl格式的配置文件
-http-port http的端口
-log-file log文件的位置
-log-rotate-bytes log书写的限制
-log-rotate-duration log同步时间
-join 加入的集群,可以为多个
-retry-join 带重试的加入集群
配置文件
配置文件示例:
{"datacenter":"east-aws","data_dir":"/opt/consul","log_level":"INFO","node_name":"foobar","server":true,"watches":[{"type":"checks","handler":"/usr/bin/health-check-handler.sh"}],"telemetry":{"statsite_address":"127.0.0.1:2180"}}