天天看点

Consul集群部署

Consul

    consul是一种提供服务发现的工具,类似于zookeeper和etcd。但是它也有一些自己的一些特性:

        1:service discovery:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。

        2:health checking:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。

        3:key/value storage:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。

        4:multi-datacenter:无需复杂的配置,即可支持任意数量的区域。

Consul的agent角色 

    Consul的agent分成Server和Client两种角色,不论Server和Client都是Consul的节点,所有的服务都可以注册到这些节点上,通过这些节点实现服务注册信息的共享。

    Server和Client的区别在于,Server会把信息持久化到本地保存,便于故障后的恢复。而Client则是把服务信息转发到Server,本身并不做持久化。

Consul集群的部署

    这里我们部署一个拥有3个Server的consul集群,信息如下:

    node1:172.16.0.201

    node2:172.16.0.122

    node3:172.16.0.238

    1:下载consul软件:https://www.consul.io/downloads.html

    2:解压并部署

# unzip consul_1.4.3_linux_amd64.zip      

     创建consul的相关目录,并把解压出来的程序文件拷贝到目录

# mkdir -p /usr/local/consul/{bin,conf,logs,data}
# cp -rp consul /usr/local/consul/bin/consul      

    3:创建consul配置文件

     这里以172.16.0.201为例:(各节点基本相似,注意修改node_name与ip)

# vi /usr/local/consul/conf/consul.json
     {
    "datacenter": "Amazon_fra",
    "data_dir": "/usr/local/consul/data/consul",
    "log_level": "INFO",
    "node_name": "SKUFRA000201",
    "server": true,
    "ui": true,
    "bootstrap_expect": 2,
    "bind_addr": "172.16.0.201",
    "client_addr": "172.16.0.201",
    "retry_join": ["172.16.0.238","172.16.0.122"],
    "retry_interval": "10s",
    "protocol": 3,
    "raft_protocol": 3,
    "enable_debug": false,
    "rejoin_after_leave": true,
    "enable_syslog": false
}      

    4:分别在各节点启动consul

# nohup /usr/local/consul/bin/consul agent -config-file /usr/local/consul/conf/consul.json >> /usr/local/consul/logs/consul.log 2>&1 &      

    5:启动完成后查看集群成员,以及集群的leader:

# /usr/local/consul/bin/consul members -http-addr=http://172.16.0.201:8500
Node          Address            Status  Type    Build  Protocol  DC          Segment
SKUFRA000122  172.16.0.122:8301  alive   server  1.4.3  3         amazon_fra  <all>
SKUFRA000201  172.16.0.201:8301  alive   server  1.4.3  3         amazon_fra  <all>
SKUFRA000238  172.16.0.238:8301  alive   server  1.4.3  3         amazon_fra  <all>
# curl http://172.16.0.201:8500/v1/status/leader
"172.16.0.201:8300"      

继续阅读