consul单数据中心简单测试

Consul是同ZooKeeper、Etcd等类似的服务发现和配置管理工具,简单的测试环境搭建比较简单。
1、到官网下载编译好的二进制文件,解压放到合适的目录
https://www.consul.io/downloads.html

2、牛刀小试,最简单的架构3个agent,其中2个server运行于模式,1个运行于client模式,2个server中有一个制定ui文件,就是consul的一个简单web管理页面。

1
2
3
4
5
6
#node01该节点运行于server模式,指定了data和conf目录
$ consul agent -server -bootstrap-expect 2 -data-dir /usr/local/consul/data/ -node=n1 -bind=172.16.201.129 -config-dir=/usr/local/consul/config/ -dc=hz
#node02该节点运行于server模式,指定了data和conf目录、ui目录
$ consul agent -server -bootstrap-expect 2 -data-dir /usr/local/consul/data/ -node=n2 -bind=172.16.201.130 -config-dir=/usr/local/consul/config/ -ui-dir /usr/local/consul/ui/ -dc=hz
#node03该节点运行于client模式,指定了data和conf目录
$ consul agent -data-dir /usr/local/consul/data/ -node=n3 -bind=172.16.201.131 -config-dir=/usr/local/consul/config/ -dc=hz

单数据中心 ( hz ) 部署,bootstrap-expect指定2个server模式的agent,-data-dir运行时的数据目录,-ui-dir指定ui文件目录,-node是节点名称,-dc是数据中心的名字。
详细的配置参数可以查看命令的帮助文档或看官服文档,3个节点的consul程序都运行在控制台模式下,正式环境可以用supervisord守护运行。

3、其它
如果一个server模式的节点退出后,重新启动加入集群 consul join 时如果报错:

1
2016/05/20 14:16:01 [ERR] agent: failed to sync remote state: No cluster leader

这时查看该节点下的文件:/usr/local/consul/data/raft/peers.json然后将已知server节点的信息["172.16.201.130:8300","172.16.201.129:8300"]添加进去然后再次启动时加上 -rejoin参数即可。
consul默认端口说明

1
2
3
4
5
6
7
consul01
8500,客户端http api接口
8600,客户端DNS服务端口
8400,客户端RPC通信端口
8300,集群server RPC通信接口
8301,集群DC内部通信接口
8302,集群DC之间通信接口
----------------本文结束 感谢阅读----------------