安裝Consul叢集
TIPS
- 本文基於Consul 1.5.3,理論適用於Consul 1.6及更低版本。
- 安裝單機版Consul詳見:
知識預熱
Consul常用命令
命令 | 解釋 | 示例 |
---|---|---|
agent | 執行一個consul agent | consul agent -dev |
join | 將agent加入到consul叢集 | consul join IP |
members | 列出consul cluster叢集中的members | consul members |
leave | 將節點移除所在叢集 | consul leave |
參考文件
這裡只列出幾個常用的命令,consul有將近20個命令,本文不作展開,詳見:
consul agent
命令詳解
常用選項
consul agent
命令的常用選項如下:
- -data-dir
- 作用:指定agent儲存狀態的資料目錄
- 這是所有agent都必須的
- 對於server尤其重要,因為他們必須持久化叢集的狀態
- -config-dir
- 作用:指定service的配置檔案和檢查定義所在的位置
- 通常會指定為”某一個路徑/consul.d”(通常情況下,.d表示一系列配置檔案存放的目錄)
- -config-file
- 作用:指定一個要裝載的配置檔案
- 該選項可以配置多次,進而配置多個配置檔案(後邊的會合並前邊的,相同的值覆蓋)
- -dev
- 作用:建立一個開發環境下的server節點
- 該引數配置下,不會有任何持久化操作,即不會有任何資料寫入到磁碟
- 這種模式不能用於生產環境(因為第二條)
- -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(老版本叫-dc,-dc已經失效)
- 作用:指定機器加入到哪一個資料中心中
示例1:命令引數方式執行
consul agent -data-dir /tmp/node2 -node=node2 -bind=192.168.11.145 -datacenter=dc1 -ui -client=192.168.11.145
示例2:配置檔案方式執行
準備一個配置檔案,名稱任意,例如consul.json,內容如下:
{
"datacenter": "us-east-1",
"data_dir": "/Users/zhouli/develop/software/consul-data/",
"addresses": {
"https": "0.0.0.0"
},
"ports": {
"http": 8500
},
"acl" : {
"enabled": true,
"default_policy": "deny",
"down_policy": "extend-cache",
"tokens" : {
"master" : "b1gs33cr3t"
}
}
}
啟動時,讓consul讀取配置檔案:
consul agent -dev -config-file="consul-config/consul.json"
參考文件
consul agent
有20來個選項,本文只列出了常用選項,其他選項未作展開,詳見:
Consul叢集搭建
主機規劃
準備三臺CentOS 7的虛擬機器,主機規劃如下:
主機名稱 | IP | 作用 | 是否允許遠端訪問 |
---|---|---|---|
node0 | 192.168.11.143 | consul server | 是 |
node1 | 192.168.11.144 | consul client | 否 |
node2 | 192.168.11.145 | consul client | 是 |
搭建步驟
- 啟動node0機器上的Consul(node0機器上執行):
consul agent -data-dir /tmp/node0 -node=node0 -bind=192.168.11.143 -datacenter=dc1 -ui -client=192.168.11.143 -server -bootstrap-expect 1
- 啟動node1機器上的Consul(node1機器上執行):
consul agent -data-dir /tmp/node1 -node=node1 -bind=192.168.11.144 -datacenter=dc1 -ui
- 啟動node2機器上的Consul(node2機器上執行):
consul agent -data-dir /tmp/node2 -node=node2 -bind=192.168.11.145 -datacenter=dc1 -ui -client=192.168.11.145
- 將node1節點加入到node0上(node1機器上執行):
consul join 192.168.11.143
- 將node2節點加入到node0上(node2機器上執行):
consul join -rpc-addr=192.168.11.145:8400 192.168.11.143
- 這樣一個簡單的Consul叢集就搭建完成了,在node1上檢視當前叢集節點:
consul members -rpc-addr=192.168.11.143:8400
結果如下:
Node Address Status Type Build Protocol DC
node0 192.168.11.143:8301 alive server 0.7.0 2 dc1
node1 192.168.11.144:8301 alive client 0.7.0 2 dc1
node2 192.168.11.145:8301 alive client 0.7.0 2 dc1
說明叢集已經搭建成功了。
我們分析一下,為什麼第5步和第6步需要加-rpc-addr
選項,而第4步不需要加任何選項呢?原因是-client
指定了客戶端介面的繫結地址,包括:HTTP、DNS、RPC,而consul join
、consul members
都是透過RPC與Consul互動的。
訪問測試
如上,我們三個節點都加了-ui
引數啟動了內建的介面。我們可以透過:http://192.168.11.143:8500/ui/
或者 http://192.168.11.145:8500/ui/
進行訪問,也可以在node1機器上透過 進行訪問,原因是node1沒有開啟遠端訪問 ,三種訪問方式結果一致。
必看文章
本文首發
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/151/viewspace-2824544/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker搭建consul叢集Docker
- Docker中建立Consul叢集Docker
- 安裝Kafka叢集Kafka
- consul叢集docker版本指令碼Docker指令碼
- 在kubernetes上部署consul叢集
- 完整安裝always on叢集
- 快速安裝 kafka 叢集Kafka
- 微服務Consul系列之叢集搭建微服務
- redis-3.0.6 安裝叢集Redis
- redis 5.0 叢集的安裝Redis
- 安裝Zookeeper和Kafka叢集Kafka
- Zookeeper3.4.14(單叢集)、Kafka_2.12-2.2.2(叢集)安裝Kafka
- Ubuntu上kubeadm安裝Kubernetes叢集Ubuntu
- Redis安裝+叢集+效能監控Redis
- CDH安裝大資料叢集大資料
- CentOS7 安裝PG叢集CentOS
- Cloudera Manager安裝 & 搭建CDH叢集Cloud
- 安裝Greenplum 5.2 叢集實戰
- ARM架構安裝Kubernetes叢集架構
- consul 多節點/單節點叢集搭建
- .Net Core微服務——Consul(4):主從、叢集微服務
- 在Ubuntu 18.04.1上安裝Hadoop叢集UbuntuHadoop
- Zookeeper-3.4.10 叢集的安裝配置
- Cassandra安裝及分散式叢集搭建分散式
- centos安裝k8s叢集CentOSK8S
- Ubuntu 安裝k8s叢集UbuntuK8S
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- consul的簡介及安裝
- Kubernetes安裝之三:etcd叢集的配置
- kubernetes叢集的安裝異常彙總
- Redis安裝之叢集-哨兵模式(sentinel)模式Redis模式
- Linux原始碼安裝RabbitMQ高可用叢集Linux原始碼MQ
- 分散式 PostgreSQL 叢集(Citus)官方安裝指南分散式SQL
- 安裝配置 zookeeper (單機非叢集模式)模式
- docker-compose安裝rocketmq雙主叢集DockerMQ
- 大資料叢集搭建 – 2. CDH叢集安裝 – NTP,MYSQL,nginx安裝大資料MySqlNginx
- Centos7安裝Nacos單機模式以及叢集模式(包含nignx安裝以及實現叢集)的相關配置CentOS模式
- Consul初探-從安裝到執行