一、安装方式
Linux64位系统直接运行下列命令:
wget https://releases.hashicorp.com/consul/1.2.3/consul_1.2.3_linux_amd64.zipunzip consul_1.2.3_linux_amd64.zipsudo mv consul /usr/bin |
---|
如果上述安装方式出现了consul not be found的错误,说明环境变量PATH没有配置正确,请返回检查consul安装路径是否包含在PATH中。
运行consul之前,首先介绍下consul的启动参数,consul agent 命令的常用选项,如下:
1.-data-dir
a.作用:指定agent储存状态的数据目录
b.这是所有agent都必须的
c.对于server尤其重要,因为他们必须持久化集群的状态
2.-config-dir
a.作用:指定service的配置文件和检查定义所在的位置
b.通常会指定为”某一个路径/consul.d”(通常情况下,.d表示一系列配置文件存放的目录)
3.-config-file
a.作用:指定一个要装载的配置文件
b.该选项可以配置多次,进而配置多个配置文件(后边的会合并前边的,相同的
值覆盖)
4.-dev
a.作用:创建一个开发环境下的server节点
b.该参数配置下,不会有任何持久化操作,即不会有任何数据写入到磁盘
c.这种模式不能用于生产环境(因为第二条)
5.-bootstrap-expect
a.作用:该命令通知consul server我们现在准备加入的server节点个数,该参
数
b.是为了延迟日志复制的启动直到我们指定数量的server节点成功的加入后
启动。
6.-node
a.作用:指定节点在集群中的名称
b.该名称在集群中必须是唯一的(默认采用机器的host)
c.推荐:直接采用机器的IP
7.-bind
a.作用:指明节点的IP地址
b.有时候不指定绑定IP,会报Failed to get advertise address: Multiple private IPs found. Please configure one. 的异常
8.-server
a.作用:指定节点为server
b.每个数据中心(DC)的server数推荐至少为1,至多为5
c.所有的server都采用raft一致性算法来确保事务的一致性和线性化,事务修
改了集群的状态,且集群的状态保存在每一台server上保证可用性
d.server也是与其他DC交互的门(gateway)
9.-client
a.作用:指定节点为client,指定客户端接口的绑定地址,包括:HTTP、DNS、RPC
b.默认是127.0.0.1,只允许回环接口访问
c.若不指定为-server,其实就是-client
10.-join
a.作用:将节点加入到集群
11.-datacenter(老版本叫-dc,-dc已经失效)
a.作用:指定机器加入到哪一个数据中心中
二、功能试运行
启动agent
consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul -node=s1 -bind=10.0.2.15 -ui-dir ./consul_ui/ -rejoin -client 0.0.0.0 |
---|
运行后输出如下结果:
查看成员:
consul members |
---|
三、注册服务
注册两个 Mysql 服务的实例, 数据中心在 sz-1, 端口都是 3306. 具体为以下命令:
curl -X PUT -d '{"Datacenter": "dc1", "Node": "c2", "Address": "10.0.2.15", "Service": {"Service": "Linux1", "tags": ["yeyz", "Linux"], "Port": 22}}' http://127.0.0.1:8500/v1/catalog/registercurl -X PUT -d '{"Datacenter": "dc1", "Node": "c1", "Address": "10.0.2.15", "Service": {"Service": "Linux2", "tags": ["yeyz", "Linux"], "Port": 22}}' http://127.0.0.1:8500/v1/catalog/register |
---|
查看服务节点并使用json格式化输出
curl 127.0.0.1:8500/v1/catalog/service/Linux1|python -m json.tool |
---|
使用DNS协议查看节点信息:
dig @127.0.0.1 -p 8600 Linux1.node.consul |
---|
后续将更深一步的对Consul进行调研,然后给出MHA+Cousul的高可用方案