天天看點

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"      

繼續閱讀