Consul
what is consul ?
Consul是一种网络服务解决方案提供,提供了服务发现、配置、分段功能的全功能控制平台;其中每一个特性都可以单独使用,或者一起构建一个全方位的网络服务解决方案。
Consul的主要功能
- 服务发现(Service Discorivy)
- 健康检查(Health Checking)
- Key-Value存储(KV-Store)
- 服务间安全通信(Secure Service Communication)
基础架构
说明:其中每个数据中心(data center)需要有一组servers,servers用于存储数据
Consul集群搭建
集群规划
主机 | 功能 |
---|---|
n1 | Server |
n2 | Server |
n3 | Server |
n4 | Client |
共四台主机,每台主机都是consul agent,其中n1、n2、n3为Cunsul集群Server,n4为普通client节点,官方建议Server节点数量为3-5个
安装准备
为集群中每个节点(n1,n2,n3,n4)安装consul
1
2
3
4
5wget https://releases.hashicorp.com/consul/1.2.3/consul_1.2.3_linux_amd64.zip
unzip consul_1.2.3_linux_amd64.zip.zip
解压后会发现只有一个 consul工具
consul
展示consul使用帮助集群中每个节点准备配置数据目录
1
2mkdir -p /etc/consul.d
mkdir -p /tmp/consul
Consul Server配置启动
登陆node1节点执行
1
2
3
4
5
6
7
8
9
10consul agent -server -syslog \
-ui \
-client 0.0.0.0 \
-bootstrap-expect=2 \
-data-dir=/tmp/consul \
-node=n1 \
-bind=172.16.117.65 \
-enable-script-checks=true \
-config-dir=/etc/consul.d/conf \
-pid-file=/etc/consul.d/consul.pid &参数说明
server : 作为Consul集群server节点
ui :该节点启动内置web-ui 默认地址 http://ip:8500/ui
client : client绑定时访问的IP地址,配置维0.0.0.0,在外部浏览器才能访问到web ui
bootstrap-expect : 期望启动后server的数量
data-dir : 数据存储目录
node : 节点名称,不指定时默认为主机名称
bind : 绑定的IP地址,该参数最好指定,否则可能会使用系统IPV6地址
enable-script-checks : 开启健康检查脚本
config-dir : 配置存放目录
pid-file : 启动后进程ID存放文件
登陆node2节点执行
1
2
3
4
5
6
7
8
9
10
11consul agent -server -syslog \
-ui \
-client 0.0.0.0 \
-bootstrap-expect=2 \
-data-dir=/tmp/consul \
-node=n2 \
-bind=172.16.117.64 \
-enable-script-checks=true \
-config-dir=/etc/consul.d/conf \
-pid-file=/etc/consul.d/consul.pid
-join 172.16.117.65 &参数说明:
join :指定启动后加入65节点所在集群
登陆node3节点node3配置与node2节点相同
1
2
3
4
5
6
7
8
9
10
11consul agent -server -syslog \
-ui \
-client 0.0.0.0 \
-bootstrap-expect=2 \
-data-dir=/tmp/consul \
-node=n3 \
-bind=172.16.117.63 \
-enable-script-checks=true \
-config-dir=/etc/consul.d/conf \
-pid-file=/etc/consul.d/consul.pid
-join 172.16.117.65 &登陆node4节点
1
2
3
4
5
6
7
8consul agent -client -syslog \
-data-dir=/tmp/consul \
-config-dir=/etc/consul.d/conf \
-node=n4 \
-bind=172.16.117.62 \
-client=172.16.117.62 \
-join=172.16.117.65 \
-pid-file=/etc/consul.d/consul.pid &参数说明:
client : 指定为client节点
集群检查
登陆任意节点
1 | consul members |
此时会发现成功建立起一个4个节点的集群
1 | Node Address Status Type Build Protocol DC Segment |
总结
本文还是粗略进行了Consul的探索,其中为后续Spring Cloud使用Consul作为配置中心进行的调研,发现Consul有很多丰富功能,对于集群管理、安全性、跨机房调用都有支持;其中功能还有待进一步学习。