如何在滴滴雲 DC2 上搭建 ETCD 叢集
簡介
ETCD 是一個開源的分散式 Key-Value 儲存,它採用 Raft 演算法來保證資料的強一致性,故常常用來存取分散式系統中對一致性要求比較苛刻的配置資訊,被廣泛應用。它具有如下特點:
-
簡單:為使用者提供了簡單而友好的 API 介面(gRPC)
-
安全:客戶端認證授權自動支援 TLS
-
快速:基準測試效能可達每秒 10000 寫操作
-
可靠:採用 Raft 演算法實現的分散式一致
ETCD 被很多公司在生產環境中廣泛使用。ETCD 也是Kubernetes、Locksmith、Vulcand、Doorman 等著名開源專案的核心元件。
ETCD 支援兩種組建叢集的方式,第一種方式是靜態配置,第二種是服務發現。
靜態配置一個 ETCD 叢集需要提前知道叢集的成員節點 IP 地址或主機名。在有些場景下,叢集成員節點的 IP 地址無法提前知道,那麼也可以透過服務發現的方式來啟動叢集。
一旦一個 ETCD 叢集啟動並執行起來後,新增和移除叢集成員節點就需要透過執行時重新配置(Runtime Reconfiguration)的方式來完成。
在本文中,我們介紹基於靜態配置組建 ETCD 叢集的機制,靜態配置叢集也是生產環境中使用 ETCD 的常用方式。
基本環境要求
我們使用三個 滴滴雲 DC2 伺服器(奇數個 quorum,5個或7個伺服器更好)來搭建一個最小化的 ETCD 叢集,伺服器的主機名與 IP 地址資訊如下:
-
etcd-1: 10.255.1.211
-
etcd-2: 10.255.1.40
-
etcd-3: 10.255.1.181
登陸 DC2,檢視三個伺服器的 IP 與 Hostname 詳細資訊如下:
第一個伺服器的 IP 與主機名資訊
第二個伺服器的 IP 與主機名資訊
第三個伺服器 IP 與主機名資訊
另外,要求上面所有伺服器上的防火牆配置開放 2380 與 2379 埠的訪問,前者用於監聽 ETCD 客戶端請求,後者用於 ETCD 叢集其他節點的通訊。
配置 ETCD 叢集
步驟1 :CD 到 home 目錄:
步驟2 :從GitHub下載最近的 ETCD 發行版,並且解壓。在寫作本文時,最新的發行版為 3.3.10。
步驟3 :將解壓得到的 ETCD 程式新增到系統可執行檔案目錄。
[ dc2 - user @ etcd - 1 ~ ] $ sudo mv etcd - v3 . 3.10 - linux - amd64 / etcd* / usr / local / bin /
這裡步驟 1 至步驟 3 需要在所有伺服器上執行。
在靜態配置的情況下,因為我們已經知道叢集成員節點的 IP 地址和叢集規模,我們可以使用一個啟動配置來組建叢集,啟動配置需設定 initial-cluster 標誌。
每臺機器需要配置如下環境變數:
或者配置如下的 ETCD 引數:
注意這裡 initial-cluster 指定的 URL 必須與 initial-advertise-peer-urls 指定的保持一致。
另外,在配置叢集時還有個引數特別有用必須切記不要忘了設定,即 initial-cluster-token。將每個 initial-cluster-token 設定為唯一的值,可以防止人為失誤的錯誤配置而導致一個節點加入兩個叢集的問題。
ETCD 監聽 listen-client-urls 指定的地址來接受客戶端請求,但是隻有在 advertise-client-urls 中指定的地址才會能被叢集其他成員、叢集代理或客戶端訪問到。一個常見的錯誤是將 advertise-client-urls 配置為 localhost 或不配置而是用預設值,這會導致叢集不能被其他機器的客戶端訪問到。
步驟4 :在每個伺服器上,依次使用如下命令來啟動 ETCD,使用上面我們提到的引數。
在 etcd-1 伺服器上的啟動命令如下:
在 etcd-2 伺服器上的啟動命令如下:
在 etcd-3 伺服器上的啟動命令如下:
命令列引數 -initial-cluster 只在叢集初次啟動時生效。再次啟動時可以不傳這個引數。如果需要在執行時修改配置,請參考 ETCD 的執行時改配置幫助文件。
驗證叢集狀態
ETCD 安裝包內帶有一個 etcdctl 命令列工具,可以用來獲取叢集狀態資訊。可以在任意叢集節點上執行如下的命令檢查叢集狀態。
檢查叢集是否健康:
使用如下命令檢查叢集成員節點:
預設情況下,etcdctl 使用 ETCD v2 介面與服務端互動。你可以顯示指定 ETCDCTL_API=3 來使用 etcd v3 版本的功能。
可以透過設定 Linux 系統環境變數來設定使用 etcd v3 版本功能,也可以在每次命令列執行時指定該環境變數。
現在我們往叢集寫入幾個 key-value 鍵值對來驗證一下。
現在可以使用下面的命令讀取剛才寫入的鍵值。
ETCD 還支援指定獲取 key 範圍或字首批次讀取。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2221773/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在滴滴雲 DC2 上搭建高可用 MySQL 叢集MySql
- 在滴滴雲 DC2 雲伺服器上搭建 RabbitMQ 叢集伺服器MQ
- 如何在滴滴雲 DC2 上搭建 MySQL 服務MySql
- 在滴滴雲 DC2 雲伺服器上搭建 ZooKeeper 叢集實戰(一)伺服器
- 如何在滴滴雲 DC2 上搭建 ProxySQL 中介軟體SQL
- 在滴滴雲上搭建 MongoDB 叢集 (一):MongoDB
- 在滴滴雲上搭建 Redis-Cluster 叢集Redis
- 在滴滴雲 DC2 雲伺服器上搭建 ELK 日誌採集系統伺服器
- 在滴滴雲上學習 Kubernetes v1.13.0:叢集搭建
- 在滴滴雲 DC2 雲伺服器上搭建 Codis 實戰伺服器
- 在滴滴雲 DC2 雲伺服器上搭建 MongoDB 實戰伺服器MongoDB
- 基於滴滴雲伺服器搭建 Consul 叢集伺服器
- 在滴滴雲DC2伺服器上搭建DPDK應用例項伺服器
- 基於滴滴雲 DC2 搭建 VPP 應用例項
- 在滴滴雲 DC2 伺服器上搭建 Gitlab+Jenkins 的整合環境伺服器GitlabJenkins
- 滴滴雲上搭建 Gluster
- 在滴滴雲 DC2 雲伺服器上使用 LVM 管理磁碟伺服器LVM
- kubernetes實踐之一:Etcd3叢集搭建
- Kubernetes 叢集搭建(上)
- 在滴滴雲快速搭建自己的簡易服務叢集[入門版]
- Etcd叢集靜態配置
- 如何在CentOS上建立Kubernetes叢集CentOS
- 如何在滴滴雲上用 Darknet 訓練 VOC
- 在滴滴雲 DC2 伺服器上部署 Ghost伺服器
- 徹底搞懂 etcd 系列文章(三):etcd 叢集運維部署運維
- 在滴滴雲 DC2 編譯安裝最新 GCC 版本編譯GC
- 如何在github上面找到想要的sdk以及Python使用Etcd叢集基礎教程GithubPython
- 搭建zookeeper叢集(偽叢集)
- 使用青雲搭建大資料叢集大資料
- [雲原生]Kubernetes - 叢集搭建(第2章)
- 多雲搭建 K3S 叢集
- zookeeper叢集及kafka叢集搭建Kafka
- 在滴滴雲上搭建 API-Gateway Kong 實踐APIGateway
- 如何在Ubuntu-16.04上配置Apache Kafka叢集!UbuntuApacheKafka
- Kubernetes安裝之三:etcd叢集的配置
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- 搭建ELK叢集