1、consul介紹及部署

1. 作用

  • CA型的服務發現註冊中間件,支持http及dns協議,通過raft(server間)及gossip(client間)協議保證一致性。
  • 支持kv存儲,可以作爲簡易的配置中心。
  • 通過consul-template,支持服務、kv變更觸發通知。
  • 支持健康檢查,支持將consul的運行監控(telemetry)發送到 statsd或statsite。

2. 基本概念

  • consul中agent有兩種角色,server與client。
    • client負責到server的高效通信,相對爲無狀態的。 唯一在後臺運行的時client端執行了LAN gossip pool,只消耗極少的資源和網絡帶寬。
    • server負責包括選舉領導節點,維護cluster的狀態,對所有的查詢做出響應,跨數據中心的通信等等
  • 數據流一般爲:app -> client -> server -> other-client ->app
  • server集羣,建議3個及以上節點,建議每個用到client的服務器都部署一個consul-client

3-1. 部署前提

  • 基於consul的0.8.3版的配置
  • 假設有3臺server,192.168.1.2/3/4
  • 將telemetry信息發送到statsd,statsd後面我們使用的是graphite。

3. Server端

3.1 目錄規劃

類型路徑
consul安裝目錄/usr/local/consul/{version}/
server-data目錄/data/consul/{version}/server/data
server-conf目錄/data/consul/{version}/server/conf
server-sh目錄/data/consul/{version}/server/sh
server-pid目錄/data/consul/{version}/server/log
consul_version=0.8.3
mkdir -p /usr/local/consul/${consul_version}/
# server端
mkdir -p /data/consul/${consul_version}/server/data
mkdir -p /data/consul/${consul_version}/server/log
# 其餘目錄後續會添加

3.2 安裝腳本

cd /usr/local/consul/${consul_version}/
wget https://releases.hashicorp.com/consul/0.8.3/consul_0.8.3_linux_amd64.zip
unzip consul_0.8.3_linux_amd64.zip
rm -rf consul_0.8.3_linux_amd64.zip

3.3 配置信息

配置信息放在:/data/consul/0.8.3/server/conf/bootstart_server.conf

{
    "server": true,
    "data_dir": "/data/consul/0.8.3/server/data",
    "datacenter": "datacenter-name",
    "node_name": "server-node-name",
    "log_level": "warn",
    "bootstrap_expect": 3,
    "performance": {
        "raft_multiplier": 4
    },
    "telemetry": {
        "statsd_address": "192.168.1.2:8125"
    },
    "retry_join": ["192.168.1.3","192.168.1.4"]
}

說明:1)每個節點需要修改node_name;2)需要根據環境配置raft_multiplier值,該值越大,實時性越高,對網絡要求也越高;3)根據實際情況修改數據中心名稱,建議不同環境,不同部門,使用不同的數據中心;4)修改statsd_address和retry_join地址

3.4 啓動腳本

生成start-server.sh文件,放在【/data/consul/0.8.3/server/sh】,添加可執行文件

/usr/local/consul/0.8.3/consul agent -config-dir=/data/consul/0.8.3/server/conf -pid-file=/data/consul/0.8.3/server/pid >/data/consul/0.8.3/server/log/run_`date '+%Y-%m-%d_%H_%M_%S.log'` 2>&1 &

##3.5 常用腳本

# 前提服務器上只有一個consul實例
# leave
/usr/local/consul/0.8.3/consul leave

# stop
kill -2 `pgrep -f consul`

# force-stop
kill -9 `pgrep -f consul`

# telemetry
kill -USR1 `pgrep -f consul`

# reload
kill -1 `pgrep -f consul`

# info
/usr/local/consul/0.8.3/consul info

# members
/usr/local/consul/0.8.3/consul members

# tail-f-log
tail -f /data/consul/0.8.3/*/log/`ls -t /data/consul/0.8.3/*/log/ | head -n 1`

# join
/usr/local/consul/0.8.3/consul join 加入的IP地址

4. Client端

4.1 目錄規劃

類型路徑
client-data目錄/data/consul/{version}/client/data
client-conf目錄/data/consul/{version}/client/data
client-pid目錄/data/consul/{version}/client
client-sh目錄/data/consul/{version}/client/sh
client-log目錄/data/consul/{version}/client/log
consul_version=0.8.3
mkdir -p /usr/local/consul/${consul_version}/
# client端
mkdir -p /data/consul/${consul_version}/client/data
mkdir -p /data/consul/${consul_version}/client/log
# 其餘目錄後續會添加

4.2 安裝腳本

cd /usr/local/consul/${consul_version}/
wget https://releases.hashicorp.com/consul/0.8.3/consul_0.8.3_linux_amd64.zip
unzip consul_0.8.3_linux_amd64.zip
rm -rf consul_0.8.3_linux_amd64.zip

4.3 配置信息

配置信息放在:data/consul/{version}/client/conf/bootstrap_client.conf

{
    "server": false,
    "data_dir": "/data/consul/0.8.3/client/data",
    "datacenter": "datacenter-name",
    "node_name": "client-node-name",
    "log_level": "warn",
    "client_addr": "0.0.0.0",
    "ui": true,
    "telemetry": {
        "statsd_address": "192.168.1.2:8125"
    },
    "retry_join": ["192.168.1.2","192.168.1.3","192.168.1.4"]
}

說明:1)每個節點需要修改node_name;2)根據實際情況修改數據中心名稱,建議不同環境,不同部門,使用不同的數據中心;3)修改statsd_address和retry_join地址

4.4 啓動腳本

生成start-client.sh文件,放在【/data/consul/0.8.3/client/sh】,添加可執行文件

/usr/local/consul/0.8.3/consul agent -config-dir=/data/consul/0.8.3/client/conf -pid-file=/data/consul/0.8.3/client/pid >/data/consul/0.8.3/client/log/run_`date '+%Y-%m-%d_%H_%M_%S.log'` 2>&1 &

4.5 常用腳本

# 前提服務器上只有一個consul實例
# leave
/usr/local/consul/0.8.3/consul leave

# stop
kill -2 `pgrep -f consul`

# force-stop
kill -9 `pgrep -f consul`

# telemetry
kill -USR1 `pgrep -f consul`

# reload
kill -1 `pgrep -f consul`

# info
/usr/local/consul/0.8.3/consul info

# members
/usr/local/consul/0.8.3/consul members

# tail-f-log
tail -f /data/consul/0.8.3/*/log/`ls -t /data/consul/0.8.3/*/log/ | head -n 1`

# join
/usr/local/consul/0.8.3/consul join 加入的IP地址
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章