欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用二進制文件安裝etcd的教程詳解

 更新時間:2019年08月01日 12:03:02   作者:love19791125  
etcd組件作為一個高可用強一致性的服務(wù)發(fā)現(xiàn)存儲倉庫.這篇文章主要介紹了利用二進制文件安裝etcd的教程詳解,需要的朋友可以參考下

etcd組件作為一個高可用強一致性的服務(wù)發(fā)現(xiàn)存儲倉庫.

etcd作為一個受到ZooKeeper與doozer啟發(fā)而催生的項目,除了擁有與之類似的功能外,更專注于以下四點。

簡單:基于HTTP+JSON的API讓你用curl就可以輕松使用。

安全:可選SSL客戶認證機制。

快速:每個實例每秒支持一千次寫操作。

可信:使用Raft算法充分實現(xiàn)了分布式。

場景一:服務(wù)發(fā)現(xiàn)(Service Discovery)一個強一致性、高可用的服務(wù)存儲目錄。基于Raft算法的etcd天生就是這樣一個強一致性高可用的服務(wù)存儲目錄。一種注冊服務(wù)和監(jiān)控服務(wù)健康狀態(tài)的機制。用戶可以在etcd中注冊服務(wù),并且對注冊的服務(wù)設(shè)置key TTL,定時保持服務(wù)的心跳以達到監(jiān)控健康狀態(tài)的效果。一種查找和連接服務(wù)的機制。通過在etcd指定的主題下注冊的服務(wù)也能在對應(yīng)的主題下查找到。為了確保連接,我們可以在每個服務(wù)機器上都部署一個Proxy模式的etcd,這樣就可以確保能訪問etcd集群的服務(wù)都能互相連接。

微服務(wù)協(xié)同工作架構(gòu)中,服務(wù)動態(tài)添加。隨著Docker容器的流行,多種微服務(wù)共同協(xié)作,構(gòu)成一個相對功能強大的架構(gòu)的案例越來越多。透明化的動態(tài)添加這些服務(wù)的需求也日益強烈。通過服務(wù)發(fā)現(xiàn)機制,在etcd中注冊某個服務(wù)名字的目錄,在該目錄下存儲可用的服務(wù)節(jié)點的IP。在使用服務(wù)的過程中,只要從服務(wù)目錄下查找可用的服務(wù)節(jié)點去使用即可。

PaaS平臺中應(yīng)用多實例與實例故障重啟透明化。PaaS平臺中的應(yīng)用一般都有多個實例,通過域名,不僅可以透明的對這多個實例進行訪問,而且還可以做到負載均衡。但是應(yīng)用的某個實例隨時都有可能故障重啟,這時就需要動態(tài)的配置域名解析(路由)中的信息。通過etcd的服務(wù)發(fā)現(xiàn)功能就可以輕松解決這個動態(tài)配置的問題。

場景二:消息發(fā)布與訂閱

在分布式系統(tǒng)中,最適用的一種組件間通信方式就是消息發(fā)布與訂閱。即構(gòu)建一個配置共享中心,數(shù)據(jù)提供者在這個配置中心發(fā)布消息,而消息使用者則訂閱他們關(guān)心的主題,一旦主題有消息發(fā)布,就會實時通知訂閱者。通過這種方式可以做到分布式系統(tǒng)配置的集中式管理與動態(tài)更新。

應(yīng)用中用到的一些配置信息放到etcd上進行集中管理。這類場景的使用方式通常是這樣:應(yīng)用在啟動的時候主動從etcd獲取一次配置信息,同時,在etcd節(jié)點上注冊一個Watcher并等待,以后每次配置有更新的時候,etcd都會實時通知訂閱者,以此達到獲取最新配置信息的目的。

  • 分布式搜索服務(wù)中,索引的元信息和服務(wù)器集群機器的節(jié)點狀態(tài)存放在etcd中,供各個客戶端訂閱使用。使用etcd的key TTL功能可以確保機器狀態(tài)是實時更新的。
  • 分布式日志收集系統(tǒng)。這個系統(tǒng)的核心工作是收集分布在不同機器的日志。收集器通常是按照應(yīng)用(或主題)來分配收集任務(wù)單元,因此可以在etcd上創(chuàng)建一個以應(yīng)用(主題)命名的目錄P,并將這個應(yīng)用(主題相關(guān))的所有機器ip,以子目錄的形式存儲到目錄P上,然后設(shè)置一個etcd遞歸的Watcher,遞歸式的監(jiān)控應(yīng)用(主題)目錄下所有信息的變動。這樣就實現(xiàn)了機器IP(消息)變動的時候,能夠?qū)崟r通知到收集器調(diào)整任務(wù)分配。
  • 系統(tǒng)中信息需要動態(tài)自動獲取與人工干預(yù)修改信息請求內(nèi)容的情況。通常是暴露出接口,例如JMX接口,來獲取一些運行時的信息。引入etcd之后,就不用自己實現(xiàn)一套方案了,只要將這些信息存放到指定的etcd目錄中即可,etcd的這些目錄就可以通過HTTP的接口在外部訪問

場景三:負載均衡

場景一中也提到了負載均衡,本文所指的負載均衡均為軟負載均衡。分布式系統(tǒng)中,為了保證服務(wù)的高可用以及數(shù)據(jù)的一致性,通常都會把數(shù)據(jù)和服務(wù)部署多份,以此達到對等服務(wù),即使其中的某一個服務(wù)失效了,也不影響使用。由此帶來的壞處是數(shù)據(jù)寫入性能下降,而好處則是數(shù)據(jù)訪問時的負載均衡。因為每個對等服務(wù)節(jié)點上都存有完整的數(shù)據(jù),所以用戶的訪問流量就可以分流到不同的機器上。

etcd本身分布式架構(gòu)存儲的信息訪問支持負載均衡。etcd集群化以后,每個etcd的核心節(jié)點都可以處理用戶的請求。所以,把數(shù)據(jù)量小但是訪問頻繁的消息數(shù)據(jù)直接存儲到etcd中也是個不錯的選擇,如業(yè)務(wù)系統(tǒng)中常用的二級代碼表(在表中存儲代碼,在etcd中存儲代碼所代表的具體含義,業(yè)務(wù)系統(tǒng)調(diào)用查表的過程,就需要查找表中代碼的含義)。

利用etcd維護一個負載均衡節(jié)點表。etcd可以監(jiān)控一個集群中多個節(jié)點的狀態(tài),當有一個請求發(fā)過來后,可以輪詢式的把請求轉(zhuǎn)發(fā)給存活著的多個狀態(tài)。類似KafkaMQ,通過ZooKeeper來維護生產(chǎn)者和消費者的負載均衡。同樣也可以用etcd來做ZooKeeper的工作。

場景四:分布式通知與協(xié)調(diào)

這里說到的分布式通知與協(xié)調(diào),與消息發(fā)布和訂閱有些相似。都用到了etcd中的Watcher機制,通過注冊與異步通知機制,實現(xiàn)分布式環(huán)境下不同系統(tǒng)之間的通知與協(xié)調(diào),從而對數(shù)據(jù)變更做到實時處理。實現(xiàn)方式通常是這樣:不同系統(tǒng)都在etcd上對同一個目錄進行注冊,同時設(shè)置Watcher觀測該目錄的變化(如果對子目錄的變化也有需要,可以設(shè)置遞歸模式),當某個系統(tǒng)更新了etcd的目錄,那么設(shè)置了Watcher的系統(tǒng)就會收到通知,并作出相應(yīng)處理。

通過etcd進行低耦合的心跳檢測。檢測系統(tǒng)和被檢測系統(tǒng)通過etcd上某個目錄關(guān)聯(lián)而非直接關(guān)聯(lián)起來,這樣可以大大減少系統(tǒng)的耦合性。

通過etcd完成系統(tǒng)調(diào)度。某系統(tǒng)有控制臺和推送系統(tǒng)兩部分組成,控制臺的職責(zé)是控制推送系統(tǒng)進行相應(yīng)的推送工作。管理人員在控制臺作的一些操作,實際上是修改了etcd上某些目錄節(jié)點的狀態(tài),而etcd就把這些變化通知給注冊了Watcher的推送系統(tǒng)客戶端,推送系統(tǒng)再作出相應(yīng)的推送任務(wù)。

通過etcd完成工作匯報。大部分類似的任務(wù)分發(fā)系統(tǒng),子任務(wù)啟動后,到etcd來注冊一個臨時工作目錄,并且定時將自己的進度進行匯報(將進度寫入到這個臨時目錄),這樣任務(wù)管理者就能夠?qū)崟r知道任務(wù)進度。

場景五:分布式鎖

因為etcd使用Raft算法保持了數(shù)據(jù)的強一致性,某次操作存儲到集群中的值必然是全局一致的,所以很容易實現(xiàn)分布式鎖。鎖服務(wù)有兩種使用方式,一是保持獨占,二是控制時序。

保持獨占即所有獲取鎖的用戶最終只有一個可以得到。etcd為此提供了一套實現(xiàn)分布式鎖原子操作CAS(CompareAndSwap)的API。通過設(shè)置prevExist值,可以保證在多個節(jié)點同時去創(chuàng)建某個目錄時,只有一個成功。而創(chuàng)建成功的用戶就可以認為是獲得了鎖。

控制時序,即所有想要獲得鎖的用戶都會被安排執(zhí)行,但是獲得鎖的順序也是全局唯一的,同時決定了執(zhí)行順序。etcd為此也提供了一套API(自動創(chuàng)建有序鍵),對一個目錄建值時指定為POST動作,這樣etcd會自動在目錄下生成一個當前最大的值為鍵,存儲這個新的值(客戶端編號)。同時還可以使用API按順序列出所有當前目錄下的鍵值。此時這些鍵的值就是客戶端的時序,而這些鍵中存儲的值可以是代表客戶端的編號。

場景六:分布式隊列

分布式隊列的常規(guī)用法與場景五中所描述的分布式鎖的控制時序用法類似,即創(chuàng)建一個先進先出的隊列,保證順序。

另一種比較有意思的實現(xiàn)是在保證隊列達到某個條件時再統(tǒng)一按順序執(zhí)行。這種方法的實現(xiàn)可以在/queue這個目錄中另外建立一個/queue/condition節(jié)點。

condition可以表示隊列大小。比如一個大的任務(wù)需要很多小任務(wù)就緒的情況下才能執(zhí)行,每次有一個小任務(wù)就緒,就給這個condition數(shù)字加1,直到達到大任務(wù)規(guī)定的數(shù)字,再開始執(zhí)行隊列里的一系列小任務(wù),最終執(zhí)行大任務(wù)。

condition可以表示某個任務(wù)在不在隊列。這個任務(wù)可以是所有排序任務(wù)的首個執(zhí)行程序,也可以是拓撲結(jié)構(gòu)中沒有依賴的點。通常,必須執(zhí)行這些任務(wù)后才能執(zhí)行隊列中的其他任務(wù)。

condition還可以表示其它的一類開始執(zhí)行任務(wù)的通知??梢杂煽刂瞥绦蛑付ǎ攃ondition出現(xiàn)變化時,開始執(zhí)行隊列任務(wù)。

場景七:集群監(jiān)控與Leader競選

通過etcd來進行監(jiān)控實現(xiàn)起來非常簡單并且實時性強。

前面幾個場景已經(jīng)提到Watcher機制,當某個節(jié)點消失或有變動時,Watcher會第一時間發(fā)現(xiàn)并告知用戶。

節(jié)點可以設(shè)置TTL key,比如每隔30s發(fā)送一次心跳使代表該機器存活的節(jié)點繼續(xù)存在,否則節(jié)點消失。

這樣就可以第一時間檢測到各節(jié)點的健康狀態(tài),以完成集群的監(jiān)控要求。

另外,使用分布式鎖,可以完成Leader競選。這種場景通常是一些長時間CPU計算或者使用IO操作的機器,只需要競選出的Leader計算或處理一次,就可以把結(jié)果復(fù)制給其他的Follower。從而避免重復(fù)勞動,節(jié)省計算資源。

這個的經(jīng)典場景是搜索系統(tǒng)中建立全量索引。如果每個機器都進行一遍索引的建立,不但耗時而且建立索引的一致性不能保證。通過在etcd的CAS機制同時創(chuàng)建一個節(jié)點,創(chuàng)建成功的機器作為Leader,進行索引計算,然后把計算結(jié)果分發(fā)到其它節(jié)點。

場景八:為什么用etcd而不用ZooKeeper?

ZooKeeper的部署維護復(fù)雜,管理員需要掌握一系列的知識和技能;

而etcd其優(yōu)點也很明顯

簡單。使用Go語言編寫部署簡單;使用HTTP作為接口使用簡單;使用Raft算法保證強一致性讓用戶易于理解。

數(shù)據(jù)持久化。etcd默認數(shù)據(jù)一更新就進行持久化。

安全。etcd支持SSL客戶端安全認證

# 安裝etcd master node01 node02執(zhí)行
mkdir -p /opt/kubernetes/{bin,cfg,ssl}
vim /opt/kubernetes/cfg/etcd.conf
復(fù)制代碼
#[menmber]
ETCD_NAME="etcd01" #分別修改為修改為master node01 ndoe02的名稱
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.1.251:2380" #分別修改為修改為master node01 ndoe02的IP
ETCD_LISTEN_CLIENT_URLS="https://192.168.1.251:2379" #分別修改為修改為master node01 ndoe02的IP
#[clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.1.251:2380" #分別修改為修改為master node01 ndoe02的IP
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.1.251:2379" #分別修改為修改為master node01 ndoe02的IP
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.1.251:2380,etcd02=https://192.168.1.252:2380,etcd03=https://192.168.1.253:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
復(fù)制代碼
vim /opt/kubernetes/cfg/etcd.service
復(fù)制代碼
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=-/opt/kubernetes/cfg/etcd.conf
ExecStart=/opt/kubernetes/bin/etcd \
--name=${ETCD_NAME} \
--data-dir=${ETCD_DATA_DIR} \
--listen-client-urls=${ETCD_LISTEN_CLIENT_URLS} \
--listen-peer-urls=${ETCD_LISTEN_PEER_URLS} \
--advertise-client-urls=${ETCD_ADVERTISE_CLIENT_URLS} \
--initial-advertise-peer-urls=${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
--initial-cluster=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-token=${ETCD_INITIAL_CLUSTER} \
--initial-cluster-state=new \
--cert-file=/opt/kubernetes/ssl/server.pem \
--key-file=/opt/kubernetes/ssl/server-key.pem \
--peer-cert-file=/opt/kubernetes/ssl/server.pem \
--peer-key-file=/opt/kubernetes/ssl/server-key.pem \
--trusted-ca-file=/opt/kubernetes/ssl/ca.pem \
--peer-trusted-ca-file=/opt/kubernetes/ssl/ca.pem
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
復(fù)制代碼
#添加免密登錄
ssh-keygen -t rsa
ssh-copy-id root@node01
ssh-copy-id root@node02
#添加啟動文件
cp /opt/kubernetes/cfg/etcd.service /usr/lib/systemd/system/etcd.service
#安裝etcd
tar zxvf etcd-v3.2.24-linux-amd64.tar.gz
cp etcd-v3.2.24-linux-amd64/etcd* /opt/kubernetes/bin
#復(fù)制證書文件到指定目錄
cp ca-key.pem server.pem ca.pem server-key.pem /opt/kubernetes/ssl
#啟動etcd
systemctl start etcd
systemctl enable etcd
#查看日志
tail -f /var/log/messages
#測試
etcdctl --ca-file=/opt/kubernetes/ssl/ca.pem --cert-file=/opt/kubernetes/ssl/server.pem --key-file=/opt/kubernetes/ssl/server-key.pem --endpoints="https://192.168.1.251:2379,https://192.168.1.252:2379,https://192.168.1.253:2379" cluster-health

總結(jié)

以上所述是小編給大家介紹的利用二進制文件安裝etcd的教程詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • 最新WebStorm2020.2注冊碼永久激活(激活到2089年)

    最新WebStorm2020.2注冊碼永久激活(激活到2089年)

    JetBrains旗下有多款編譯器工具(如:IntelliJ、WebStorm、PyCharm等)在各編程領(lǐng)域幾乎都占據(jù)了壟斷地位。今天給大家?guī)淼氖菍ebStorm最新版激活至2089年
    2020-09-09
  • 羊了個羊破解方法(嘎嘎猛已入羊群n次)

    羊了個羊破解方法(嘎嘎猛已入羊群n次)

    這篇文章主要介紹了羊了個羊破解(嘎嘎猛,已入羊群n次),經(jīng)本人測試找到的未修復(fù)的bug:?一旦通關(guān)一次后,后續(xù)入羊群不再需要循環(huán)浪費時間淦帝,只需要點換裝點擊新皮膚,點確定即可嘎嘎增加入群次數(shù),需要的朋友可以參考下
    2022-09-09
  • 詳解git submodule使用以及注意事項

    詳解git submodule使用以及注意事項

    這篇文章主要介紹了詳解git submodule使用以及注意事項,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 聯(lián)邦學(xué)習(xí)論文解讀分散數(shù)據(jù)的深層網(wǎng)絡(luò)通信

    聯(lián)邦學(xué)習(xí)論文解讀分散數(shù)據(jù)的深層網(wǎng)絡(luò)通信

    這篇文章主要為大家介紹了論文解讀分散數(shù)據(jù)的深層網(wǎng)絡(luò)通信有效學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 解決appcode打開workspace無法找到xcodeproj項目文件問題

    解決appcode打開workspace無法找到xcodeproj項目文件問題

    這篇文章主要介紹了解決appcode打開workspace無法找到xcodeproj項目文件問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 程序猿表白妹子的代碼神器

    程序猿表白妹子的代碼神器

    女生眼中的程序員,身上帶著好多標簽“直男,宅,不懂浪漫,枯燥…”,但這是因為你還沒有了解程序猿,程序猿也可以非常浪漫。程序猿用代碼來表白,把你中意的代碼發(fā)給她,看她能不能看懂
    2023-01-01
  • ToDesk安裝與使用教程(全平臺支持)

    ToDesk安裝與使用教程(全平臺支持)

    這篇文章主要介紹了ToDesk安裝與使用教程,ToDesk非常好用而且是全平臺支持,喜歡的朋友跟隨小編一起看看吧
    2024-08-08
  • MobaXterm連接服務(wù)器如何在關(guān)閉會話的情況下依然執(zhí)行程序(最新推薦)

    MobaXterm連接服務(wù)器如何在關(guān)閉會話的情況下依然執(zhí)行程序(最新推薦)

    這篇文章主要介紹了MobaXterm連接服務(wù)器如何在關(guān)閉會話的情況下依然執(zhí)行程序,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 最新評論