Spring Cloud Finchley.SR1 的學習與應用 2 - Consul

Spring Cloud Consul

簡介

consul是google開源的一個使用go語言開發的服務發現、配置管理中心服務。內置了服務註冊與發現框 架、分佈一致性協議實現、健康檢查、Key/Value存儲、多數據中心方案,再也不須要依賴其餘工具(好比ZooKeeper等)。服務部署簡單,只有一個可運行的二進制的包。每一個節點都須要運行agent,他有兩種運行模式server和client。每一個數據中心官方建議須要3或5個server節點以保證數據安全,同時保證server-leader的選舉可以正確的進行。node

Consul的安裝

1.安裝linux

mkdir -p /opt/consul
cd /opt/consul/
wget https://releases.hashicorp.com/consul/1.2.0/consul_1.2.0_linux_amd64.zip
unzip consul_1.2.0_linux_amd64.zip

2.啓動consulgit

mkdir -p /opt/consul/config
mkdir -p /opt/consul/data

#啓用Gossip加密方式,只須要在啓動Agent時設置加密密鑰。經過encrypt參數設置密鑰:設置的值是包含密鑰的配置文件。

$ ./consul keygen
xZpdVT6DUTzQrYyf2B2uCQ==



vim /opt/consul/config/config.json


{
    "advertise_addr": "192.168.2.161",
    "bind_addr": "192.168.2.161",
    "client_addr": "0.0.0.0",
    "domain": "consul",
    "bootstrap_expect": 3,
    "server": true,
    "datacenter": "dc1",
    "data_dir": "/opt/consul/data",
    "encrypt": "xZpdVT6DUTzQrYyf2B2uCQ==",
    "ui": true,
    "enable_syslog": true,
    "performance": {
      "raft_multiplier": 1
    },
    "dns_config": {
        "allow_stale": true,
        "max_stale": "15s"
    },
    "retry_join": [
        "192.168.2.162",
        "192.168.2.163"
    ],
    "retry_interval": "10s",
    "skip_leave_on_interrupt": true,
    "leave_on_terminate": false,
    "rejoin_after_leave": true
}


#啓動節點1(server模式)
nohup ./consul agent -config-dir /opt/consul/config -node node1 &
命令 解釋 示例
agent 運行一個consul agent consul agent -dev
join 將agent加入到consul集羣 consul join IP
members 列出consul cluster集羣中的members consul members
leave 將節點移除所在集羣 consul leave

consul agent 命令的經常使用選項github

-data-dir 做用:指定agent儲存狀態的數據目錄,這是全部agent都必須的,對於server尤爲重要,由於他們必須持久化集羣的狀態算法

-config-dir 做用:指定service的配置文件和檢查定義所在的位置,一般會指定爲」某一個路徑/consul.d」(一般狀況下,.d表示一系列配置文件存放的目錄)json

-config-file 做用:指定一個要裝載的配置文件,該選項能夠配置屢次,進而配置多個配置文件(後邊的會合並前邊的,相同的值覆蓋)bootstrap

-dev 做用:建立一個開發環境下的server節點,該參數配置下,不會有任何持久化操做,即不會有任何數據寫入到磁盤,這種模式不能用於生產環境(由於第二條)vim

-bootstrap-expect 做用:該命令通知consul server咱們如今準備加入的server節點個數,該參數是爲了延遲日誌複製的啓動直到咱們指定數量的server節點成功的加入後啓動。瀏覽器

-node 做用:指定節點在集羣中的名稱,該名稱在集羣中必須是惟一的(默認採用機器的host),推薦:直接採用機器的IP安全

-bind 做用:指明節點的IP地址,有時候不指定綁定IP,會報Failed to get advertise address: Multiple private IPs found. Please configure one. 的異常

-server 做用:指定節點爲server,每一個數據中心(DC)的server數推薦至少爲1,至多爲5,全部的server都採用raft一致性算法來確保事務的一致性和線性化,事務修改了集羣的狀態,且集羣的狀態保存在每一臺server上保證可用性,server也是與其餘DC交互的門面(gateway)

-client 做用:指定節點爲client,指定客戶端接口的綁定地址,包括:HTTP、DNS、RPC,默認是127.0.0.1,只容許迴環接口訪問,若不指定爲-server,其實就是-client

-join 做用:將節點加入到集羣

-datacenter 做用:指定機器加入到哪個數據中心中 -ui 做用:使得客戶端能夠直接經過url訪問服務端的consul ui

#啓動節點2-3(server模式)

#更改advertise_addr、bind_addr、retry_join 參數,啓動節點2-3
nohup ./consul agent -config-dir /opt/consul/config -node node2 &

nohup ./consul agent -config-dir /opt/consul/config -node node3 &

打開瀏覽器,輸入http://192.168.2.161:8500/ui/ consul

consul

#查看下集羣的狀態
[root@node1 consul]# ./consul members
Node   Address             Status  Type    Build  Protocol  DC   Segment
node1  192.168.2.161:8301  alive   server  1.2.0  2         dc1  <all>
node2  192.168.2.162:8301  alive   server  1.2.0  2         dc1  <all>
node3  192.168.2.163:8301  alive   server  1.2.0  2         dc1  <all>

2.安裝git2consul

原生的Consul不支持Git來作,須要藉助Consul 社區提供的另一個工程git2consul

配置以下:

{
    "version":"1.0",
    "local_store": "本地倉庫備份地址",
    "logger":{
        "name":"git2consul",
        "streams":[
            {
                "level":"trace",
                "type":"rotating-file",
                "path":"生成日誌路徑/git2consul.log"
            }
        ]
    },
    "repos":[
        {
            "name":"pig-config",
            "url":"遠程倉庫地址",
            "include_branch_name" : true,  //分支信息是否包含到請求中,建議使用
            "branches":[
                "dev"
            ],
            "hooks":[  
                {
                  "type" : "polling", //更新策略定時刷新的
                  "interval" : "1"   //1分鐘
                }
            ]
        }
    ]
}

個人配置:

{
  "version": "1.0",
  "local_store": "/opt/git2consul/git2consul_cache",
  "logger" : {
    "name" : "git2consul",
    "streams" : [{
      "level": "trace",
      "stream": "process.stdout"
    },
    {
      "level": "debug",
      "type": "rotating-file",
      "path": "/opt/git2consul/logs/git2consul.log"
    }]
  },
  "repos" : [{
    "name" : "woqu_configuration",
    "url" : "https://github.com/zhangorrin/woqu.git",
    "branches" : ["master"],
    "hooks": [{
      "type" : "polling",
      "interval" : "1"
    }]
  }]
}

啓動時候指定上邊的腳本:

./git2consul --config-file git2consul.json

啓動後能夠在key/value中看到githup上的配置文件 consul

至此,consul服務端安裝已經完成,後續在實際項目中講解如何使用consul client

相關文章
相關標籤/搜索