Consul安装比较友好,安装包解压缩后只有一个执行程序consul。
下载安装包
官网安装包下载地址:
https://www.consul.io/downloads.html
根据自己的操作系统类型,选择对应的安装包下载即可。
教程以linux为例。
将下载的安装包,解压缩到自己喜欢的目录,例如:
# 创建consul安装目录
mkdir -p ~/local/consul
# 例如,我们下载的压缩包是 consul_xxx_linux_amd64.zip
# 将压缩包内容,解压缩到~/local/consul目录
unzip -o -d ~/local/consul consul_xxx_linux_amd64.zip
为了方便搜索到命令,将~/local/consul添加到PATH环境变量中。
提示:windows系统的安装类似,下载windows版本的安装包,解压缩就得到consul程序了,同样为方便命令行工具可以找到consul命令,把你的consul安装目录,添加到windows的PATH环境变量中。
打开终端输入下面命令,如果没有提示找不到命令,就说明安装成功了。
consul
输出类似内容:
usage: consul [--version] [--help] <command> [<args>]
Available commands are:
agent Runs a Consul agent
event Fire a new event
...
consul命令介绍
通过前面,consul架构章节说明,我们知道consul主要分server和client两个组件,server负责核心数据的存储和处理数据的读写,通过client可以操作server提供的接口。
consul将server和client两个组件的实现都融合在一个叫consul的命令程序中,所以我们安装consul后,只有一个consul命令。
在consul中,无论server还是client都叫做agent,通过命令参数区分,我们运行的是server还是client。
提示:默认情况下运行的是client,下面章节会介绍如何启动server和client。
Consul默认地址
Consul部署好以后,默认对外提供接口的地址是:127.0.0.1:8500 或者 consul agent ip地址 + 8500端口号。
单机部署开发模式
作为本地开发环境,我们没有必要配置consul集群,只要一条命令就可以,以开发模式启动consul服务。
例如:
consul agent -dev
-dev参数的意思,就是以开发模式启动consul,同时具备server和client的功能,不需要单独部署server和client。
启动后得到类似的输出:
==> Starting Consul agent...
Version: 'v1.6.1'
Node ID: '9a8474ac-fd30-36d4-bb6f-e1a4960ab3d3'
Node name: 'tizidembp'
Datacenter: 'dc1' (Segment: '<all>')
Server: true (Bootstrap: false)
Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)
Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)
Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false, Auto-Encrypt-TLS: false
.....
提示:如果本地开发,只要启动开发模式即可,当然不能关闭命令窗口,否则就退出了,你可以使用consul agent -dev & 命令,在后台启动consul。
基本命令
查询集群节点
consul members
打印出集群中所有的节点信息,可以通过Status状态查看节点是否正常运行。
输出:
Node Address Status Type Build Protocol DC Segment
tizidembp 127.0.0.1:8301 alive server 1.6.1 2 dc1 <all>
我们只是启动开发模式,只有一个节点。
重新加载配置文件
consul reload
如果我们修改了配置文件,可以使用这个命令,前面单机模式,我们什么配置文件也不需要,以默认参数启动了。
优雅关闭节点
consul leave
优雅的关闭当前机器上的节点,如果你有多个节点,需要每个节点都要执行关闭命令,否则只是关闭机器中的一个节点。
查询所有注册的服务
consul catalog services
生产环境部署
生产环境节点配置,主要分server节点和client节点,至少部署一个server节点,为了高可用,通常建议部署3-5个server节点,client节点任意,client节点数量可以跟我们服务的节点数量一致,每台服务的节点部署一个client。
下图是单数据中心的部署架构:
部署server节点
通过配置文件配置启动server节点。
mkdir /etc/consul.d
# 给目录授权
chown -R consul:consul /etc/consul.d
# 创建server配置文件
touch /etc/consul.d/server.hcl
# 给文件授权
chmod 640 /etc/consul.d/server.hcl
配置文件内容:/etc/consul.d/server.hcl
datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "Luj2FZWwlt8475wD1WtwUQ=="
server = true
bootstrap_expect = 3
retry_join = ["172.16.0.11"]
参数说明:
- datacenter - 数据中心名字,唯一
- data_dir - 数据目录,有权限读写即可
- encrypt - consul节点之间通信的密钥
- server - 代表当前agent以服务端模式启动
- bootstrap_expect - 代表需要部署3个server节点。
- retry_join - 其他server节点地址(支持ip地址、域名),填一个即可,会自动加入集群。
提示:启动第一个server节点的时候,不需要配置retry_join参数,因为自己是目前唯一的server节点,没有其他server节点。
启动server命令:
~/local/consul/consul agent -config-dir=/etc/consul.d/
参数说明:
- -config-dir - 指定配置文件所在目录
注意你安装consul的目录,可能跟这里不一样,输入正确的安装路径。
提示:为了方便开机自动启动consul,你可以根据不同版本的linux系统配置开机启动,例如:centos,配置systemd。
部署client节点
client节点的配置,跟server节点类似,就是少了一些参数。
例子:
mkdir /etc/consul.d
# 给目录授权
chown -R consul:consul /etc/consul.d
# 创建client配置文件
touch /etc/consul.d/client.hcl
# 给文件授权
chmod 640 /etc/consul.d/client.hcl
配置文件内容:/etc/consul.d/client.hcl
datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "Luj2FZWwlt8475wD1WtwUQ=="
retry_join = ["172.16.0.11"]
参数说明:
- datacenter - 数据中心名字,唯一
- data_dir - 数据目录,有权限读写即可
- encrypt - consul节点之间通信的密钥
- retry_join - 其他server节点地址,填一个即可,会自动加入集群。
跟server的参数对比,主要就是少了server和bootstrap_expect参数。
启动client的命令跟server一模一样。
~/local/consul/consul agent -config-dir=/etc/consul.d/