简介
consul提供了服务注册与发现框 架、分布一致性协议实现、健康检查、KV存储、多数据中心方案等功能。
- 一致性:采用的是RAFT算法保证分布式节点的一致性。
- 服务发现:采用http和dns协议。
- 服务注册:1、通过http API,由服务自己调用API实现注册,2、通过JSON配置文件实现注册,将需要注册的服务以JSON格式的配置文件给出。
- 服务间的通讯协议:使用gossip协议管理成员关系、广播消息到整个集群
角色
1、client
客户端模式:将所有注册到当前节点的服务会被转发到server,自己是不持久化数据。
2、server
server模式:功能和客户端模式一样,不同的是会把所有的信息持久化的本地。
3、server-leader
server leader模式:其它server的领导者,和其它server不一样的是需要负责同步注册的信息给其它的server,同时也要负责各个节点的健康监测。
安装
CentOS 上可以直接使用yum进行安装
- sudo yum install -y yum-utils
- sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
- sudo yum -y install consul
也可以直接下载二进制包,解压就可以直接使用。
- tar zxvf consul_1.9.6_linux_amd64.zip -C /usr/local/bin/
启动服务(单节点)
- nohup consul agent -server -data-dir=/data/consul-data/ -node=node1 -bind=0.0.0.0 -bootstrap-expect=1 -client=0.0.0.0 -ui > /data/consul-data/consul.log &
- –server 指定server agent
- –data-dir l数据存储路径
- –bootstrap-expect 期望的server节点数目,consul一直等到指定sever数目才会引导整个集群
- –bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
- –node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
- –ui: web的管理ui,查看服务和节点,可以通过访问:8500端口要访问UI
- –client:提供HTTP、DNS、RPC等服务,默认是127.0.0.1,不对外提供服务,如果需要则改成0.0.0.0
单节点扩容
- nohup consul agent -bind=0.0.0.0 -client=0.0.0.0 -data-dir=/data/consul-data/ -node=node2 -join=192.168.122.100 > /data/consul-data/consul.log 2>&1 &
192.168.122.100就是刚才那台服务器的IP
总结
consul部署很方便,可以试试。