1. 作用CA型的服务发现注册中间件,支持http及dns协议,通过raft(server间)及gossip(client间)协议保证一致性。支持kv存储,可以作为简易的配置中心。通过consul-t
1. 作用
- CA型的服务发现注册中间件,支持http及dns协议,通过raft(server间)及gossip(client间)协议保证一致性。
- 支持kv存储,可以作为简易的配置中心。
- 通过consul-template,支持服务、kv变更触发通知。
- 支持健康检查,支持将consul的运行监控(telemetry)发送到 statsd或statsite。
2. 基本概念
- consul中agent有两种角色,server与client。
- client负责到server的高效通信,相对为无状态的。 唯一在后台运行的时client端执行了LAN gossip pool,只消耗极少的资源和网络带宽。
- server负责包括选举领导节点,维护cluster的状态,对所有的查询做出响应,跨数据中心的通信等等
- 数据流一般为:app -> client -> server -> other-client ->app
- server集群,建议3个及以上节点,建议每个用到client的服务器都部署一个consul-client
3-1. 部署前提
- 基于consul的0.8.3版的配置
- 假设有3台server,192.168.1.2/3/4
- 将telemetry信息发送到statsd,statsd后面我们使用的是graphite。
3. Server端
3.1 目录规划
类型 | 路径 |
---|---|
consul安装目录 | /usr/local/consul/{version}/ |
server-data目录 | /data/consul/{version}/server/data |
server-conf目录 | /data/consul/{version}/server/conf |
server-sh目录 | /data/consul/{version}/server/sh |
server-pid目录 | /data/consul/{version}/server/log |
consul_version=0.8.3mkdir -p /usr/local/consul/${consul_version}/# server端mkdir -p /data/consul/${consul_version}/server/datamkdir -p /data/consul/${consul_version}/server/log# 其余目录后续会添加
3.2 安装脚本
cd /usr/local/consul/${consul_version}/wget https://releases.hashicorp.com/consul/0.8.3/consul_0.8.3_linux_amd64.zipunzip consul_0.8.3_linux_amd64.ziprm -rf consul_0.8.3_linux_amd64.zip
3.3 配置信息
配置信息放在:/data/consul/0.8.3/server/conf/bootstart_server.conf
{ "server": true, "data_dir": "/data/consul/0.8.3/server/data", "datacenter": "datacenter-name", "node_name": "server-node-name", "log_level": "warn", "bootstrap_expect": 3, "performance": { "raft_multiplier": 4 }, "telemetry": { "statsd_address": "192.168.1.2:8125" }, "retry_join": ["192.168.1.3","192.168.1.4"]}
说明:1)每个节点需要修改node_name;2)需要根据环境配置raft_multiplier值,该值越大,实时性越高,对网络要求也越高;3)根据实际情况修改数据中心名称,建议不同环境,不同部门,使用不同的数据中心;4)修改statsd_address和retry_join地址
3.4 启动脚本
生成start-server.sh文件,放在【/data/consul/0.8.3/server/sh】,添加可执行文件
/usr/local/consul/0.8.3/consul agent -config-dir=/data/consul/0.8.3/server/conf -pid-file=/data/consul/0.8.3/server/pid >/data/consul/0.8.3/server/log/run_`date '+%Y-%m-%d_%H_%M_%S.log'` 2>&1 &
##3.5 常用脚本
# 前提服务器上只有一个consul实例# leave/usr/local/consul/0.8.3/consul leave# stopkill -2 `pgrep -f consul`# force-stopkill -9 `pgrep -f consul`# telemetrykill -USR1 `pgrep -f consul`# reloadkill -1 `pgrep -f consul`# info/usr/local/consul/0.8.3/consul info# members/usr/local/consul/0.8.3/consul members# tail-f-logtail -f /data/consul/0.8.3/*/log/`ls -t /data/consul/0.8.3/*/log/ | head -n 1`# join/usr/local/consul/0.8.3/consul join 加入的IP地址
4. Client端
4.1 目录规划
类型 | 路径 |
---|---|
client-data目录 | /data/consul/{version}/client/data |
client-conf目录 | /data/consul/{version}/client/data |
client-pid目录 | /data/consul/{version}/client |
client-sh目录 | /data/consul/{version}/client/sh |
client-log目录 | /data/consul/{version}/client/log |
consul_version=0.8.3mkdir -p /usr/local/consul/${consul_version}/# client端mkdir -p /data/consul/${consul_version}/client/datamkdir -p /data/consul/${consul_version}/client/log# 其余目录后续会添加
4.2 安装脚本
cd /usr/local/consul/${consul_version}/wget https://releases.hashicorp.com/consul/0.8.3/consul_0.8.3_linux_amd64.zipunzip consul_0.8.3_linux_amd64.ziprm -rf consul_0.8.3_linux_amd64.zip
4.3 配置信息
配置信息放在:data/consul/{version}/client/conf/bootstrap_client.conf
{ "server": false, "data_dir": "/data/consul/0.8.3/client/data", "datacenter": "datacenter-name", "node_name": "client-node-name", "log_level": "warn", "client_addr": "0.0.0.0", "ui": true, "telemetry": { "statsd_address": "192.168.1.2:8125" }, "retry_join": ["192.168.1.2","192.168.1.3","192.168.1.4"]}
说明:1)每个节点需要修改node_name;2)根据实际情况修改数据中心名称,建议不同环境,不同部门,使用不同的数据中心;3)修改statsd_address和retry_join地址
4.4 启动脚本
生成start-client.sh文件,放在【/data/consul/0.8.3/client/sh】,添加可执行文件
/usr/local/consul/0.8.3/consul agent -config-dir=/data/consul/0.8.3/client/conf -pid-file=/data/consul/0.8.3/client/pid >/data/consul/0.8.3/client/log/run_`date '+%Y-%m-%d_%H_%M_%S.log'` 2>&1 &
4.5 常用脚本
# 前提服务器上只有一个consul实例# leave/usr/local/consul/0.8.3/consul leave# stopkill -2 `pgrep -f consul`# force-stopkill -9 `pgrep -f consul`# telemetrykill -USR1 `pgrep -f consul`# reloadkill -1 `pgrep -f consul`# info/usr/local/consul/0.8.3/consul info# members/usr/local/consul/0.8.3/consul members# tail-f-logtail -f /data/consul/0.8.3/*/log/`ls -t /data/consul/0.8.3/*/log/ | head -n 1`# join/usr/local/consul/0.8.3/consul join 加入的IP地址