国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ETCD集群的工作原理和高可用技術細節介紹

Linux愛好者 ? 來源:csdn ? 作者:fanren224 ? 2021-02-23 10:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【導讀】新年快樂!本文介紹了etcd集群的工作原理和高可用技術細節。

etcd 簡介

coreos 開發的分布式服務系統,內部采用 raft 協議作為一致性算法。作為服務發現系統,有以下的特點:

簡單:安裝配置簡單,而且提供了 HTTP API 進行交互,使用也很簡單

安全:支持 SSL 證書驗證

快速:根據官方提供的 benchmark 數據,單實例支持每秒 2k+ 讀操作

可靠:采用 raft 算法,實現分布式系統數據的可用性和一致性

etcd 目前默認使用 2379 端口提供 HTTP API 服務,2380 端口和 peers(集群內其他節點)通信

雖然 etcd 也支持單點部署,但是在生產環境中推薦集群方式部署,一般 etcd 節點數會選擇 3、5、7。etcd 會保證所有的節點都會保存數據,并保證數據的一致性和正確性。

工作原理

每個 etcd cluster 都是有若干個 member 組成的,每個 member 是一個獨立運行的 etcd 實例,單臺機器上可以運行多個 member。

在正常運行的狀態下,集群中會有一個 leader,其余的 member 都是 followers。leader 向 followers 同步日志,保證數據在各個 member 都有副本。leader 還會定時向所有的 member 發送心跳報文,如果在規定的時間里 follower 沒有收到心跳,就會重新進行選舉。

客戶端所有的請求都會先發送給 leader,leader 向所有的 followers 同步日志,等收到超過半數的確認后就把該日志存儲到磁盤,并返回響應客戶端。

每個 etcd 服務有三大主要部分組成:raft 實現、WAL 日志存儲、數據的存儲和索引。WAL 會在本地磁盤(就是之前提到的 --data-dir)上存儲日志內容(wal file)和快照(snapshot)。

集群規劃

nameIPHOSTNAME

etcd01192.168.255.131master1

etcd02192.168.255.132master2

etcd03192.168.255.133master3

安裝

在安裝和啟動 etcd 服務的時候,各個節點需要知道集群中其他節點的信息(一般是 ip 和 port 信息)。根據你是否可以提前知道每個節點的 ip,有幾種不同的啟動方案:

靜態配置:在啟動 etcd server 的時候,通過 --initial-cluster 參數配置好所有的節點信息

etcd動態發現:通過已有的etcd集群作為數據交互點,然后在擴展新的集群時實現通過已有集群進行服務發現的機制。比如官方提供的:discovery.etcd.io

DNS動態發現: 通過DNS查詢方式獲取其他節點地址信息。

一般生產環境都是使用靜態配置,我們這里也采用這種方法。并配置 SSL來保證通信安全。

1、安裝cfssl

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64

wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64

chmod +x cfssl_linux-amd64 cfssljson_linux-amd64

mv cfssl_linux-amd64 /usr/local/bin/cfssl

mv cfssljson_linux-amd64 /usr/local/bin/cfssljson

2、創建ca證書,客戶端,服務端,節點之間的證書

Etcd屬于server ,etcdctl 屬于client,二者之間通過http協議進行通信。

ca證書 自己給自己簽名的權威證書,用來給其他證書簽名

server證書 etcd的證書

client證書 客戶端,比如etcdctl的證書

peer證書 節點與節點之間通信的證書

1) 創建目錄

mkdir -p /etc/etcd/pki

cd /etc/etcd/pki

cfssl print-defaults config 》 ca-config.json

cfssl print-defaults csr 》 ca-csr.json

2) 創建ca證書

修改ca-config.json

server auth表示client可以用該ca對server提供的證書進行驗證

client auth表示server可以用該ca對client提供的證書進行驗證

{

“signing”: {

“default”: {

“expiry”: “43800h”

},

“profiles”: {

“server”: {

“expiry”: “43800h”,

“usages”: [

“signing”,

“key encipherment”,

“server auth”,

“client auth”

},

“client”: {

“expiry”: “43800h”,

“usages”: [

“signing”,

“key encipherment”,

“client auth”

},

“peer”: {

“expiry”: “43800h”,

“usages”: [

“signing”,

“key encipherment”,

“server auth”,

“client auth”

}

}

}

}

創建證書簽名請求ca-csr.json

{

“CN”: “etcd”,

“key”: {

“algo”: “rsa”,

“size”: 2048

}

}

生成CA證書和私鑰

# cfssl gencert -initca ca-csr.json | cfssljson -bare ca

# ls ca*

ca-config.json ca.csr ca-csr.json ca-key.pem ca.pem

3) 生成客戶端證書

vim client.json

{

“CN”: “client”,

“key”: {

“algo”: “ecdsa”,

“size”: 256

}

}

生成

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client client.json | cfssljson -bare client -

# ls ca*

ca-config.json ca.csr ca-csr.json ca-key.pem ca.pem client-key.pem client.pem

4) 生成server,peer證書

vim etcd.json

{

“CN”: “etcd”,

“hosts”: [

“127.0.0.1”,

“192.168.255.131”,

“192.168.255.132”,

“192.168.255.133”

],

“key”: {

“algo”: “ecdsa”,

“size”: 256

},

“names”: [

{

“C”: “CN”,

“L”: “SH”,

“ST”: “SH”

}

}

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server etcd.json | cfssljson -bare server

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=peer etcd.json | cfssljson -bare peer

3、安裝etcd二進制文件

wget https://github.com/coreos/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz

tar -xvf etcd-v3.1.5-linux-amd64.tar.gz

mv etcd-v3.1.5-linux-amd64/etcd* /usr/local/bin

4、service配置文件

vim /usr/lib/systemd/system/etcd.service, 三臺機器配置不一樣,需要替換為相應的IP和name。

[Unit]

Description=Etcd Server

After=network.target

After=network-online.target

Wants=network-online.target

Documentation=https://github.com/coreos

[Service]

Type=notify

WorkingDirectory=/var/lib/etcd

ExecStart=/usr/local/bin/etcd

--data-dir=/var/lib/etcd

--name=master1

--cert-file=/etc/etcd/pki/server.pem

--key-file=/etc/etcd/pki/server-key.pem

--trusted-ca-file=/etc/etcd/pki/ca.pem

--peer-cert-file=/etc/etcd/pki/peer.pem

--peer-key-file=/etc/etcd/pki/peer-key.pem

--peer-trusted-ca-file=/etc/etcd/pki/ca.pem

--listen-peer-urls=https://192.168.255.131:2380

--initial-advertise-peer-urls=https://192.168.255.131:2380

--listen-client-urls=https://192.168.255.131:2379,http://127.0.0.1:2379

--advertise-client-urls=https://192.168.255.131:2379

--initial-cluster-token=etcd-cluster-0

--initial-cluster=master1=https://192.168.255.131:2380,master2=https://192.168.255.132:2380,master3=https://192.168.255.133:2380

--initial-cluster-state=new

--heartbeat-interval=250

--election-timeout=2000

Restart=on-failure

RestartSec=5

LimitNOFILE=65536

[Install]

WantedBy=multi-user.target

配置參數的含義

--name:方便理解的節點名稱,默認為 default,在集群中應該保持唯一,可以使用 hostname

--data-dir:服務運行數據保存的路徑,默認為 ${name}.etcd

--snapshot-count:指定有多少事務(transaction)被提交時,觸發截取快照保存到磁盤

--heartbeat-interval:leader 多久發送一次心跳到 followers。默認值是 100ms

--eletion-timeout:重新投票的超時時間,如果 follow 在該時間間隔沒有收到心跳包,會觸發重新投票,默認為 1000 ms

--listen-peer-urls:和集群內其他節點通信的地址, http://ip:2380,如果有多個,使用逗號分隔。需要所有節點都能夠訪問,所以不要使用 localhost!

--listen-client-urls:節點與客戶端通信的地址,比如 http://ip:2379,http://127.0.0.1:2379,客戶端會連接到這里和 etcd 交互

--advertise-client-urls:對外通告的該節點客戶端監聽地址,http://ip:2379,這個值會通知集群中其他節點

--initial-advertise-peer-urls:節點與其他節點通信的地址,會通告給集群的其他成員。這個地址用來傳輸集群數據。因此這個地址必須是可以被集群中所有的成員訪問http://ip:2380

--initial-cluster:集群中所有節點的信息,格式為 node1=http://ip1:2380,node2=http://ip2:2380,…。注意:這里的 node1 是節點的 --name 指定的名字;后面的 ip1:2380 是 --initial-advertise-peer-urls 指定的值

--initial-cluster-state:新建集群的時候,這個值為 new;假如已經存在的集群,這個值為 existing

--initial-cluster-token:創建集群的 token,這個值每個集群保持唯一。這樣的話,如果你要重新創建集群,即使配置和之前一樣,也會再次生成新的集群和節點 uuid;否則會導致多個集群之間的沖突,造成未知的錯誤

所有以--initial 開頭的配置都是在 bootstrap(引導) 集群的時候才會用到,后續節點重啟時會被忽略。

5、創建存放etcd數據的目錄,啟動 etcd

mkdir /var/lib/etcd

systemctl daemon-reload && systemctl enable etcd && systemctl start etcd && systemctl status etcd

6、驗證是否成功

在任意一臺機器(無論是不是集群節點,前提是需要有etcdctl工具和ca證書,server證書)上執行如下命令:

[root@master1] /etc/etcd/pki$ etcdctl --ca-file=/etc/etcd/pki/ca.pem --cert-file=/etc/etcd/pki/server.pem --key-file=/etc/etcd/pki/server-key.pem --endpoints=https://192.168.255.131:2379 cluster-health

2019-01-27 2026.909601 I | warning: ignoring ServerName for user-provided CA for backwards compatibility is deprecated

2019-01-27 2026.910165 I | warning: ignoring ServerName for user-provided CA for backwards compatibility is deprecated

member 5d7a44f5c39446c1 is healthy: got healthy result from https://192.168.255.132:2379

member e281e4e43dceb752 is healthy: got healthy result from https://192.168.255.133:2379

member ea5e4f12ed162d4b is healthy: got healthy result from https://192.168.255.131:2379

cluster is healthy

如果你沒有指定證書,會報如下錯誤

client: etcd cluster is unavailable or misconfigured; error #0: x509: certificate signed by unknown authority

查看集群成員

[root@master1] /etc/etcd/pki$ etcdctl --ca-file=/etc/etcd/pki/ca.pem --cert-file=/etc/etcd/pki/server.pem --key-file=/etc/etcd/pki/server-key.pem --endpoints=https://192.168.255.131:2379 member list

2019-01-27 2246.914338 I | warning: ignoring ServerName for user-provided CA for backwards compatibility is deprecated

5d7a44f5c39446c1: name=master2 peerURLs=https://192.168.255.132:2380 clientURLs=https://192.168.255.132:2379 isLeader=false

e281e4e43dceb752: name=master3 peerURLs=https://192.168.255.133:2380 clientURLs=https://192.168.255.133:2379 isLeader=false

ea5e4f12ed162d4b: name=master1 peerURLs=https://192.168.255.131:2380 clientURLs=https://192.168.255.131:2379 isLeader=true

etcd的使用

HTTP API

etcd 對外通過 HTTP API 對外提供服務,這種方式方便測試(通過 curl 或者其他工具就能和 etcd 交互),也很容易集成到各種語言中(每個語言封裝 HTTP API 實現自己的 client 就行)。

etcdctl 命令行工具

除了 HTTP API 外,etcd 還提供了 etcdctl 命令行工具和 etcd 服務交互。這個命令行用 go 語言編寫,也是對 HTTP API 的封裝,日常使用起來也更容易。

總結

etcd 默認只保存 1000 個歷史事件,所以不適合有大量更新操作的場景,這樣會導致數據的丟失。etcd 典型的應用場景是配置管理和服務發現,這些場景都是讀多寫少的。

相比于 zookeeper,etcd 使用起來要簡單很多。不過要實現真正的服務發現功能,etcd 還需要和其他工具(比如 registrator、confd 等)一起使用來實現服務的自動注冊和更新。一般etcd大多用于配置管理的場景,比如kubernetes。

目前 etcd 還沒有圖形化的工具。

原文標題:快速搭建高可用 ETCD 集群

文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219018

原文標題:快速搭建高可用 ETCD 集群

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    2.4 GHz低通濾波器2450LP15A050:技術細節與設計考量

    2.4 GHz低通濾波器2450LP15A050:技術細節與設計考量 在高頻電路設計中,濾波器的性能直接影響著整個系統的穩定性和信號質量。今天,我們來深入探討Johanson Technology
    的頭像 發表于 02-04 16:45 ?602次閱讀

    探索Tag-it HF-I標準應答器IC:技術細節與應用指南

    探索Tag-it HF-I標準應答器IC:技術細節與應用指南 在電子工程領域,RFID(射頻識別)技術憑借其高效、便捷的特性,在物品識別和管理方面發揮著重要作用。今天,我們將深入探討德州儀器
    的頭像 發表于 01-06 11:15 ?214次閱讀

    Air8000-LuatOS exvib擴展庫實操指南:全流程技術細節深度解讀

    掌握exvib擴展庫的使用,是提升Air8000-LuatOS項目開發效率的關鍵。本文以全流程實操為核心,深度解讀技術細節,涵蓋初始化、數據采集、異常處理等環節,為開發者提供權威參考。 一
    的頭像 發表于 11-01 20:09 ?284次閱讀
    Air8000-LuatOS exvib擴展庫實操指南:全流程<b class='flag-5'>技術細節</b>深度解讀

    有哪些具體的技術細節需要企業在選擇電能質量在線監測裝置數據存儲方式時注意?

    ? 企業選擇電能質量在線監測裝置數據存儲方式時,需重點關注 **“數據不丟、能用、安全、可擴展”** 四大核心目標,對應的技術細節多隱藏在 “數據格式適配、同步機制、安全加密、硬件可靠性、運維兼容性
    的頭像 發表于 10-30 09:56 ?283次閱讀

    PCIe 7.0技術細節曝光

    6 月 11 日 PCI SIG官宣 PCI Express 7.0(PCIe 7.0)規范最終版已制定完畢,但幾乎沒有公開任何技術細節。不過,在 7 月 16 日,PCI-SIG 通過 BrightTalk 公開了一些更詳細的技術信息,下面就為大家
    的頭像 發表于 09-08 10:43 ?2821次閱讀
    PCIe 7.0<b class='flag-5'>技術細節</b>曝光

    香港服務器部署Windows集群服務的網絡拓撲設計與實現-可用性架構方案

    ,重點講解網絡拓撲設計的3種典型模型及其適用場景,并提供香港本地化部署的實操建議。如何在遵守《網絡安全法》要求前提下實現多節點集群可用性?冗余網絡配置如何平衡成本與效能?本文將為您揭曉具體實施路徑。 香港機房選址對網絡架構的
    的頭像 發表于 08-26 17:16 ?793次閱讀

    揭秘徐工新能源重卡的技術細節

    對于一臺新能源重卡而言,無論在安全方面多做多少努力都不為過。徐工汽車將新能源重卡的“安全”筑入整車的結構設計中,融進控制系統每一個響應邏輯里,更深藏技術細節的每一行代碼之后。
    的頭像 發表于 08-11 11:45 ?1225次閱讀

    解析基帶和射頻的工作原理

    在現代通信技術中,基帶和射頻是兩個核心概念,它們共同構成了無線通信的基礎。盡管這兩個術語頻繁出現在技術文檔和行業討論中,但其具體功能和技術細節卻常常被誤解。本文將以移動通信為例,深入解析基帶和射頻的
    的頭像 發表于 08-06 09:28 ?2592次閱讀
    解析基帶和射頻的<b class='flag-5'>工作原理</b>

    Redis集群部署配置詳解

    Redis集群是一種分布式Redis解決方案,通過數據分片和主從復制實現可用性和橫向擴展。集群將整個數據集分割成16384個哈希槽(hash slots),每個節點負責一部分槽位。
    的頭像 發表于 07-17 11:04 ?980次閱讀

    SMA連接器名稱由來:SubMiniature Version A 的技術細節

    SMA連接器名稱中的“SubMiniature Version A”,精準概括了其小型化、開創性的設計理念,而德索精密工業以卓越的技術細節和嚴謹的制造工藝,為SMA連接器的高性能連接提供了有力支撐,讓這一經典連接器在射頻與微波連接領域持續煥發新的光彩。
    的頭像 發表于 06-24 11:30 ?664次閱讀
    SMA連接器名稱由來:SubMiniature Version A 的<b class='flag-5'>技術細節</b>

    煙氣檢測儀是如何工作的?工作原理大揭秘

    。紅外吸收技術具有選擇性好、精度、穩定性強等優點,尤其適用于檢測 CO?、甲烷(CH?)等氣體。 以上所介紹的就是煙氣檢測儀的工作原理,有需要的話可以簡單了解一下。
    發表于 06-16 16:10

    介紹三種常見的MySQL可用方案

    在生產環境中,為了確保數據庫系統的連續可用性、降低故障恢復時間以及實現業務的無縫切換,可用(High Availability, HA)方案至關重要。本文將詳細介紹三種常見的 MyS
    的頭像 發表于 05-28 17:16 ?1237次閱讀

    MYSQL集群可用和數據監控平臺實現方案

    該項目共分為2個子項目,由MYSQL集群可用和數據監控平臺兩部分組成。
    的頭像 發表于 05-28 10:10 ?1308次閱讀
    MYSQL<b class='flag-5'>集群</b><b class='flag-5'>高</b><b class='flag-5'>可用</b>和數據監控平臺實現方案

    柵極技術工作原理和制造工藝

    本文介紹了集成電路制造工藝中的柵極的工作原理、材料、工藝,以及先進柵極工藝技術
    的頭像 發表于 03-27 16:07 ?2364次閱讀
    柵極<b class='flag-5'>技術</b>的<b class='flag-5'>工作原理</b>和制造工藝

    索尼IP編碼板:技術細節與應用探索

    索尼IP編碼板的技術細節,并探討其在不同領域的應用價值。 技術細節:卓越性能與高效傳輸 索尼IP編碼板作為連接硬件與軟件的橋梁,集成了精密的電路設計與先進的芯片技術。它不僅能夠接收并處理來自傳感器、攝像頭等外部設備
    的頭像 發表于 03-20 10:10 ?1111次閱讀