安裝Consul集群

2021-02-19 IT牧場

點擊上方"IT牧場",選擇"設為星標"技術乾貨每日送達!

TIPS

•本文基於Consul 1.5.3,理論適用於Consul 1.6及更低版本。•安裝單機版Consul詳見:《安裝單機版Consul》

知識預熱Consul常用命令命令解釋示例agent運行一個consul agentconsul agent -devjoin將agent加入到consul集群consul join IPmembers列出consul cluster集群中的membersconsul membersleave將節點移除所在集群consul leave參考文檔

這裡只列出幾個常用的命令,consul有將近20個命令,本文不作展開,詳見:https://www.consul.io/docs/commands/index.html[1]

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來個選項,本文只列出了常用選項,其他選項未作展開,詳見: https://www.consul.io/docs/agent/options.html[2]

Consul集群搭建

主機規劃

準備三臺CentOS 7的虛擬機,主機規劃如下:

主機名稱IP作用是否允許遠程訪問node0192.168.11.143consul server是node1192.168.11.144consul client否node2192.168.11.145consul 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  DCnode0  192.168.11.143:8301  alive   server  0.7.0  2         dc1node1  192.168.11.144:8301  alive   client  0.7.0  2         dc1node2  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機器上通過 http://127.0.0.1:8500/ui/ 進行訪問,原因是node1沒有開啟遠程訪問 ,三種訪問方式結果一致。

必看文章

•使用Consul做服務發現的若干姿勢[3]

乾貨分享

最近將個人學習筆記整理成冊,使用PDF分享。關注我,回復如下代碼,即可獲得百度盤地址,無套路領取!

•001:《Java並發與高並發解決方案》學習筆記;•002:《深入JVM內核——原理、診斷與優化》學習筆記;•003:《Java面試寶典》•004:《Docker開源書》•005:《Kubernetes開源書》•006:《DDD速成(領域驅動設計速成)》•007:全部•008:加技術討論群

近期熱文

•安裝單機版Consul•微服務治理實踐:探尋業務的單點異常自愈能力•支付寶的架構到底有多牛逼!還沒看完我就跪了!•配置熱更新,不想重啟,如何更新Bean的狀態?•如何模擬 5 萬的並發用戶•一篇文章搞定:掃碼登錄實現原理

References

[1]: https://www.consul.io/docs/commands/index.html
[2]: https://www.consul.io/docs/agent/options.html
[3] 使用Consul做服務發現的若干姿勢: http://blog.bossma.cn/consul/consul-service-register-and-discovery-style/

想知道更多?長按/掃碼關注我吧↓↓↓>>>技術討論群<<<喜歡就點個"在看"唄^_^

相關焦點

  • ClickHouse實戰-高可用集群安裝
    本篇基於Ansible這款強大的運維工具,介紹快速搭建生產可用的ClickHouse集群的詳細步驟。Ansible遠程安裝Zookeeper1.3.1. zk集群配置文件$ ll zk_conftotal 8-rw-r--r-- 1 admin admin 2715 Oct 1 20:35 log4j.properties-rw-rw-r-- 1 admin admin 323 Oct 1 20:35 zoo.cfg
  • Galera for MySQL集群安裝手冊終極版
    1.Galera Cluster for MySQL 安裝官方指引Galera Cluster for MySQL 安裝手冊文字版 https://galeracluster.com
  • 走進 Redis:Redis 的安裝、使用以及集群的搭建
    一、Redis的安裝Redis的安裝是很簡單的,安裝之前我們需要c語言的編譯環境。如果沒有gcc需要在線安裝。 yum install gcc-c++。安裝步驟:第一步:redis的源碼包上傳到linux系統。第二步:解壓縮redis。 tar-zxvf redis-3.0.0.tar.gz第三步:編譯。
  • ​Kube-Install一鍵離線安裝多K8S集群,支持命令行和Web定時安裝
    Kube-Install是一鍵離線安裝kubernetes集群的工具,支持Web界面和定時安裝,它採用二進位方式同時並發進行多套kubernetes集群的部署,無需事先在目標主機上安裝任何軟體,只需要純淨的裸機即可完成部署。Kube-Install同時支持Web界面和命令行等多種安裝模式,此外還有定時計劃、Web終端、一鍵擴容節點等功能。
  • Rabbitmq集群高可用部署詳細
    該模式帶來的副作用也很明顯,除了降低系統性能外,如果鏡像隊列數量過多,加之大量的消息進入,集群內部的網絡帶寬將會被這種同步通訊大大消耗掉。所以在對可靠性要求較高的場合中適用。準備集群環境安裝RabbitMQ我的環境如下:1、兩臺Centos7的機器,hostname分別為:F , G .
  • Redis 集群搭建
    Redis 集群通過分區(partition)來提供一定程度的可用性(availability):即使集群中有一部分節點失效或者無法進行通訊,集群也可以繼續處理命令請求。Redis 集群提供了以下兩個好處:集群說明集群數據共享Redis 集群使用數據分片(sharding)而非一致性哈希(consistency hashing)來實現:一個 Redis 集群包含 16384 個哈希槽(hash slot),資料庫中的每個鍵都屬於這 16384 個哈希槽的其中一個,集群使用公式 CRC16(key) % 16384 來計算鍵 key 屬於哪個槽
  • 集群文件系統
    文件擴展:隨著VOD的應用,單個文件的大小不斷增大,使用64位的文件系統可以滿足目前的需求。同時考慮到對大文件的操作,因此必須在文件系統一級實現對文件訪問的多I/OPath的實現。文件系統的擴展:與存儲硬體設備的關係比較大,在基於消息傳輸和共享設備的數據傳輸中的實現方式各有不同。
  • Kubenetes高可用集群搭建
    搭建外部etcd集群: etcd是kubernetes集群中的一個十分重要的組件,用於保存集群所有的網絡配置和對象的狀態信息。本次實驗通過kubelet部署static pod方式在集群外部部署一個3節點的etcd集群。2.
  • ELK教程1:ElasticSearch集群的部署
    安裝計劃本文主要講解如何部署ElasticSearch 集群,部署的ElasticSearch的版本為7.2,計劃用三臺機器組成一個ElasticSearch集群,從而組成高可用,機器分配如下:| 節點 | 規則 | 數量 | | --- | : | :----: | | 192.168.1.1 | 2核4G | 1 | | 192.168.1.2 | 2核4G | 1
  • redis詳解、哨兵模式、集群模式
    哨兵模式搭建完畢,下面來搞集群redis的集群Redis 集群實現了對Redis的水平擴容,即啟動N個redis節點,將整個資料庫分布存儲在這N個節點中,每個節點存儲總數據的Redis 集群通過分區(partition)來提供一定程度的可用性(availability):即使集群中有一部分節點失效或者無法進行通訊, 集群也可以繼續處理命令請求。
  • 使用Mesos和Marathon管理Docker集群
    安裝Mesos和Marathon系統環境主機名IP位址軟體環境dev-master-01192.168.2.210Mesos Master、Zookeeper、Marathondev-node-01192.168.2.211Mesos Slave、Docker我們使用mesosphere提供的安裝包進行安裝。
  • 記錄一個集群的搭建過程
    ,更適合人腦調度,從來沒有做成過集群。近日得到了搭建一個具有20個E5-2686v3節點的集群的機會,其間多有折騰,特此記錄,或許能給後來者帶來一定幫助。本文首先發表於思想家公社。在搭建過程中參考了公社壇友coolrainbow的pdf版集群搭建指南,基本思路一致,不過由於年代久遠,書中一些命令已經不能在當前流行的軟體版本上使用了。
  • MySQL Cluster集群探索與實踐
    )系統裡應用內存資料庫集群的技術。MySQL集群是一種分布式設計,目標是要達到沒有任何單點故障點。因此,任何組成部分都應該擁有自己的內存和磁碟。任何共享存儲方案如網絡共享,網絡文件系統和SAN設備是不推薦或不支持的。通過這種冗餘設計,MySQL聲稱數據的可用度可以達到99.999%。實際上,MySQL集群是把一個叫做NDB的內存集群存儲引擎集成與標準的MySQL伺服器集成。
  • k8s系列第八篇~k8s集群環境搭建
    1、kubernetes集群介紹及規劃kubernetes集群分為兩類:一主多從、多主多從。目前Kubernetes集群安裝方式有kubeadm、minikube、二進位包、源碼編譯。kubeadm:快速搭建kubernetes集群的工具,安裝簡單方便。
  • 進攻機動作戰中的機器人集群
    機器人集群將結合自身特點對上述作戰樣式加以靈活運用。在下一節中,我們將解釋這些機動樣式,提供戰例案例,並假想機器人集群對這種機動樣式的運用方法。與空降作戰或強襲作戰不同,通過亞音速或超音速飛彈投送集群的作戰樣式無需容易暴露的大型飛機,也不用建立空中走廊、大規模集結運輸飛機,從而減少師級、旅級、團級作戰人員的傷亡風險。      也就是說,集群滲透戰術只需要少量人類戰鬥員的支持,以便在戰場進行補給實現持續作戰能力。少數人類傘兵戰鬥員將陪伴機器人集群進入戰場,他們作為集群控制員、維護員和充電站安裝員參與作戰。
  • .NET Core+MongoDB集群搭建與實戰
    (方法1)如果你要安裝穩定版本,則直接使用一條命令安裝:sudo apt install mongodb執行命令檢查 MingoDB 的狀態:sudo systemctl status mongodbapt 倉庫安裝(方法2)
  • 一款 VM 大規模集群管理工具
    Google 提到,企業將越來越多的工作負載轉移到雲上,但管理和運行大規模虛擬機集群會非常複雜,特別是對基礎設施和運營管理者來說,在雲上大規模管理基礎設施,其安全性是一大挑戰。因此Google開發了VM Manager雲原生工具,提供類似本地端基礎設施管理的工具,以簡化用戶操作和資源管理工作。
  • 使用kubeadm快速部署一套K8S集群
    部署地址:https://kubernetes.io/docs/setup/minikube/Kubeadm也是一個工具,提供kubeadm init和kubeadm join,用於快速部署Kubernetes集群。
  • 使用 kube-vip 搭建高可用 Kubernetes 集群
    kube-vip 最初是為 Kubernetes 控制平面提供 HA 解決方案而創建的,隨著時間的推移,它已經發展為將相同的功能合併到 Kubernetes 的 LoadBalancer 類型的 Service 中了。帶有 ARP(第 2 層)或 BGP(第 3 層)的控制平面。帶有 kubeadm(靜態 Pod)的控制平面 HA。
  • 大數據技術棧實踐私教級教程-4.Hadoop集群搭建
    1集群搭建的過程集群啟動和集群測試前三步我們已經在之前的章節Hadoop100主機中完成,現在只需要在VM中複製一下再做相應的修改即可。2VM虛擬機克隆通過VM將Hadooop_template複製三份名字分別為Hadoop102、Hadoop103、Hadoop104。