安装cosnul
1. wget https://releases.hashicorp.com/consul/0.8.1/consul_0.8.1_linux_amd64.zip
2. unzip consul_0.8.1_linux_amd64.zip
3. mv consul /usr/local/bin
4. consul agent -server -bootstrap-expect=3 -data-dir=/tmp/consul -node=consul1 -bind=consul服务器ip
-client=0.0.0.0(允许哪些客户端访问) -dc=dc1 (-ui 有ui界面)
1. - server 表示是server模式
2. - bootstrap-expect=2 表示是集群中有2台服务器 bootstrap该模式node可以指定自己作为leader , 如果是非 leader可不加该参数
3. - data-dir=/tmp/consul 目录
4. - node=n2 该服务器节点名
5.- bind=192.168.56.101 节点绑定的ip
6 - ui 非必须 webui的路径 用web来管理consul
7. - dc=dc1 集群的名称
8 -config-dir /etc/consul.d 配置文件目录
consul 操作
查看节点 consul members
将节点加入集群 consul join 192.168.56.101
注册:
首先写一个json文件
{
"ID": "userServiceId", //服务id(相同服务内不要重复 会覆盖)
"Name": "userService", //服务名
"Tags": [ //服务的tag,自定义,可以根据这个tag来区分同一个服务名的服务
"primary",
"v1"
],
"Address": "节点ip",//服务注册到consul的IP,服务发现,发现的就是这个IP
"Port": 8000, //服务注册consul的PORT,发现的就是这个PORT
"EnableTagOverride": false,
"Check": {
"tcp": "节点ip:端口",
"interval": "3s",
"timeout": "3s"
}
}
注册接口
注册
curl --request PUT --data @a.json http://consulip:8500/v1/agent/service/register
取消注册服务
curl --request PUT http://consulip:8500/v1/agent/service/deregister/xxxx
取消注册服务的某一id
curl --request PUT http://consulip:8500/v1/agent/service/deregister/服务id
我是通过ansible批量去处理json文件的
ansible-playbook node.yml
---
- hosts: newnode
remote_user: root
any_errors_fatal: true
max_fail_percentage: 0
serial: 100%
tasks:
- name: “*********传输node.json********“
template: src=./node.json dest=/root/
- shell: 'curl --request PUT --data @node.json http://<consul ip>:8500/v1/agent/service/register'
args:
chdir: /root/
register: ll
- debug: var=ll verbosity=0