Consul用于微服务下的服务治理,主要特点有:服务发现、服务配置、健康检查、键值存储、安全服务通信、多数据中心等。
Consule的安装超级简单,去官方下载地址Download ,找到自已对应系统的压缩包,解压后里面就一个文件consul, 将这个文件放到你的PATH中,就能直接用了。
验证下安装:
$ consul version
Consul是通过Agent来运行的,Agent又分为Server Agent和Client Agent两种类型,这两类型基本上是没区别的,Server Agent会将服务的消息存储起来,至少要启动一个Server Agent,为了防止单点,集群环境中推荐3-5个。
Client Agent主要用于注销服务、健康检查及转发Server Agent的查询等,它相当于一个代理,所以他必须在集群的每台主机上都要运行。
先看下Agent的常用配置
$ consul agent --help
- --server 定义运行server agent
- --data-dir 配置consul数据存储路径
- --bootstrap-expect :期望的server节点数目,consul一直等到指定sever数目的时候才会引导整个集群
- --bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
- --node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
- --ui: web的管理ui,查看服务和节点
- --config-dir:配置文件目录,所有以.json结尾的文件都会被加载,可以是服务或consul自身的配置
- --client:提供HTTP、DNS、RPC等服务,默认是127.0.0.1,不对外提供服务,如果需要则改成0.0.0.0
启动一个Server Agent
$ consul agent --server=true --ui=true --data-dir=/tmp/consul --node=server1 --dev
上面的 --server
表示以server方式,--ui
会开启一个web ui管理界面, --dev
表示开发者模式,不需要ACL验证。不然那个web ui的打不开会报没有权限。
启动Client Agent
$ consul agent --data-dir=/tmp/consul_client --join=127.0.0.1:8301 --serf-lan-port=8303 --serf-wan-port=8305 --dns-port=8601 --server-port=8304 --http-port=8503 --server=false --config-dir=./consul.d --enable-script-checks --node=client1
上面有一个--join
表示加入到集群中,写server agent的地址就行。 config-dir的配置目录下面一个服务的配置
{
"service":{
"name":"web",
"tags":[
"local"
],
"port":80,
"check":{
"name":"ping",
"args":["/usr/bin/curl","-s", "http://localhost/"],
"interval":"10s"
}
}
}
上面的命令运行后,会启动一个名字为“web"的服务,并提供健康检查。
web管理界面
可以查看服务的定义和节点,访问[web管理界面](http://127.0.0.1:8500/ui)