成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

etcd 集群的管理 - 暴走漫畫容器實踐系列 Part4

tulayang / 1699人閱讀

摘要:搭建完集群后,接下來就是集群的管理了。集群的管理主要包括節(jié)點的重啟,監(jiān)控以及集群的運行時更改。這樣,新節(jié)點就會運行起來并且加入到已有的集群中了。

搭建完 etcd 集群后,接下來就是集群的管理了。集群的管理主要包括節(jié)點的重啟,監(jiān)控以及集群的運行時更改(Runtime Reconfiguration)。

關于節(jié)點的重啟、監(jiān)控相對來說比較簡單,這里主要介紹下集群的運行時更改。

1. 在什么情況下需要集群的運行時更改?

讓我們來看看需要集群的運行時更改的幾個場景。他們中的絕大多數(shù)只需要運用到重配置中的 “添加/刪除” 節(jié)點操作的組合。

1.1. 維護和升級多個機器

如果你因為進行諸如硬件升級或者斷網(wǎng)等計劃維護,而需要移動多個節(jié)點到新機器上,最好是逐個節(jié)點移動,一次操作一個。

移動 leader 節(jié)點是安全的,只不過 leader 節(jié)點下線后,需要耗費更多的時間選舉新節(jié)點,所以建議最后移動。

如果你的集群有超過 50M 的數(shù)據(jù),最好進行節(jié)點的遷移(見3.1節(jié) 遷移節(jié)點),而不要通過刪除舊節(jié)點,增加新節(jié)點來實現(xiàn)節(jié)點的移動。

1.2. 更改集群的大小

如上一篇博客所說的,增加集群節(jié)點的個數(shù),容錯能力越強,讀性能也越好。不過相應的,寫性能也會下降。減少集群節(jié)點的個數(shù),容錯能力下降,不過寫性能也會提高。

更改集群大小也需要集群運行時更改。

1.3. 替換一個壞掉的節(jié)點

如果一個節(jié)點的機器因為硬件出錯而宕機了,那需要盡快用新機器替換。替換的操作就是簡單地分為兩步:(通過集群運行時更改)先刪除壞掉的節(jié)點,再添加新的節(jié)點(見2節(jié) 集群節(jié)點的操作)。不過,如果你的集群有超過 50M 的數(shù)據(jù),最好進行節(jié)點遷移(見3.1節(jié) 遷移節(jié)點)

1.4. 集群多數(shù)宕機(Majority Failure)后的重啟

如果你的集群出現(xiàn)了多數(shù)宕機(例如超過(N-1)/2的節(jié)點當機),或者所有的節(jié)點都更改了 IP,你就需要手動操作,重啟(恢復)集群了。基本步驟包括:1.基于原先的數(shù)據(jù)創(chuàng)建新集群;2.強制讓一個節(jié)點成為 leader 節(jié)點,并最終通過運行時更改添加新節(jié)點的方式將其他節(jié)點添加到這個新的集群中。

2. 集群運行時更改的操作

知道了什么樣的情況下需要運行時更改,下面讓我們來了解下具體的運行時更改的操作。

一般來說,這些操作需要確保集群的多數(shù)節(jié)點是正常服務的,并且一次只操作一個節(jié)點。

升級單個節(jié)點的 peerURLs,需要執(zhí)行一個更新節(jié)點操作

替換一個節(jié)點,需要先執(zhí)行一個添加節(jié)點操作,再執(zhí)行一個刪除節(jié)點操作

將集群大小從 3 更改到 5,需要執(zhí)行兩個添加節(jié)點操作

將集群大小從 5 降低到 3,需要執(zhí)行兩個刪除節(jié)點操作

下面的所有例子都是利用 etcdctl 命令實現(xiàn)操作,其本質(zhì)是調(diào)用 etcd 的 REST API。你也可以使用其他你習慣的客戶端。

2.1 更新一個節(jié)點

如果你想更新一個節(jié)點的 IP(peerURLS),首先你需要知道那個節(jié)點的 ID。你可以列出所有節(jié)點,找出對應節(jié)點的 ID。

$ etcdctl member list
6e3bd23ae5f1eae0: name=node2 peerURLs=http://localhost:23802 clientURLs=http://127.0.0.1:23792
924e2e83e93f2560: name=node3 peerURLs=http://localhost:23803 clientURLs=http://127.0.0.1:23793
a8266ecf031671f3: name=node1 peerURLs=http://localhost:23801 clientURLs=http://127.0.0.1:23791

在本例中,我們假設要更新 ID 為 a8266ecf031671f3 的節(jié)點的 peerURLs 為:http://10.0.1.10:2380

$ etcdctl member update a8266ecf031671f3 http://10.0.1.10:2380
Updated member with ID a8266ecf031671f3 in cluster

2.2 刪除一個節(jié)點

假設我們要刪除 ID 為 a8266ecf031671f3 的節(jié)點

$ etcdctl member remove a8266ecf031671f3
Removed member a8266ecf031671f3 from cluster

執(zhí)行完后,目標節(jié)點會自動停止服務,并且打印一行日志:

etcd: this member has been permanently removed from the cluster. Exiting.

如果刪除的是 leader 節(jié)點,則需要耗費額外的時間重新選舉 leader。

2.3 增加一個新的節(jié)點

增加一個新的節(jié)點分為兩步:

通過 etcdctl 或?qū)?API 注冊新節(jié)點

使用恰當?shù)膮?shù)啟動新節(jié)點

先看第一步,假設我們要新加的節(jié)點取名為 infra3, peerURLs 是 http://10.0.1.13:2380

$ etcdctl member add infra3 http://10.0.1.13:2380
added member 9bf1b35fc7761a23 to cluster

ETCD_NAME="infra3"
ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380,infra3=http://10.0.1.13:2380"
ETCD_INITIAL_CLUSTER_STATE=existing

etcdctl 在注冊完新節(jié)點后,會返回一段提示,包含3個環(huán)境變量。然后在第二部啟動新節(jié)點的時候,帶上這3個環(huán)境變量即可。

$ export ETCD_NAME="infra3"
$ export ETCD_INITIAL_CLUSTER="infra0=http://10.0.1.10:2380,infra1=http://10.0.1.11:2380,infra2=http://10.0.1.12:2380,infra3=http://10.0.1.13:2380"
$ export ETCD_INITIAL_CLUSTER_STATE=existing
$ etcd -listen-client-urls http://10.0.1.13:2379 -advertise-client-urls http://10.0.1.13:2379  -listen-peer-urls http://10.0.1.13:2380 -initial-advertise-peer-urls http://10.0.1.13:2380 -data-dir %data_dir%

這樣,新節(jié)點就會運行起來并且加入到已有的集群中了。

值得注意的是,如果原先的集群只有1個節(jié)點,在新節(jié)點成功啟動之前,新集群并不能正確的形成。因為原先的單節(jié)點集群無法完成leader的選舉。
直到新節(jié)點啟動完,和原先的節(jié)點建立連接以后,新集群才能正確形成。

3. 遷移節(jié)點和災難恢復

3.1 遷移節(jié)點

移動節(jié)點有兩種方式:1. 刪除舊的節(jié)點,增加新的節(jié)點; 2. 遷移節(jié)點。當集群的數(shù)據(jù)超過 50M 的時候,建議通過遷移節(jié)點的方式來移動節(jié)點。

遷移節(jié)點的核心就是數(shù)據(jù)目錄的遷移。因為 etcd 的各個節(jié)點會將自己的 ID 存放在自己的數(shù)據(jù)目錄下面,所以遷移節(jié)點不會改變節(jié)點的 ID。

遷移節(jié)點的步驟簡單來說,包括以下幾步:

停止需要遷移的節(jié)點的服務

從老機器上拷貝數(shù)據(jù)目錄到新機器上

通過集群運行時更改的更新操作,改變節(jié)點的 peerURLs 值為新機器的 IP:port

在新機器上指定拷貝過來的數(shù)據(jù)目錄,啟動 etcd 的節(jié)點服務

下面通過一個例子具體說明。

假設我們已有的集群是這樣的:

name peerURLs
infra0 10.0.1.10:2380
infra1 10.0.1.11:2380
infra2 10.0.1.12:2380
$ etcdctl member list
84194f7c5edd8b37: name=infra0 peerURLs=http://10.0.1.10:2380 clientURLs=http://127.0.0.1:2379,http://10.0.1.10:2379
b4db3bf5e495e255: name=infra1 peerURLs=http://10.0.1.11:2380 clientURLs=http://127.0.0.1:2379,http://10.0.1.11:2379
bc1083c870280d44: name=infra2 peerURLs=http://10.0.1.12:2380 clientURLs=http://127.0.0.1:2379,http://10.0.1.12:2379

我們要移動 infra1 從 10.0.1.11 到 10.0.1.13

1. 停止 infra1 的 etcd 進程
$ssh 10.0.1.11
$ kill `pgrep etcd`
2. 從 10.0.1.11 拷貝etcd的數(shù)據(jù)目錄到 10.0.1.13 的機器上
$ tar -cvzf infra1.etcd.tar.gz %data_dir%
$ scp infra1.etcd.tar.gz 10.0.1.13:~/
3. 變更 infra1 的 peerURLs
$ curl http://10.0.1.10:2379/v2/members/b4db3bf5e495e255 -XPUT 
-H "Content-Type: application/json" -d "{"peerURLs":["http://10.0.1.13:2380"]}"

或者利用 etcdctl

etcdctl member update b4db3bf5e495e255 http://10.0.1.13:2380
4. 在新機器上使用 infra1 的數(shù)據(jù)和配置啟動 etcd
$ ssh 10.0.1.13
$ tar -xzvf infra1.etcd.tar.gz -C %data_dir%
$ etcd -name infra1 
> -listen-peer-urls http://10.0.1.13:2380 
> -listen-client-urls http://10.0.1.13:2379,http://127.0.0.1:2379 
> -advertise-client-urls http://10.0.1.13:2379,http://127.0.0.1:2379

3.2 災難恢復

總的來說,etcd 的集群還是相當可靠的,但是也不能排除極端情況的出現(xiàn)。當出現(xiàn)災難性的多數(shù)節(jié)點宕機,就不得不進行災難恢復了。

災難恢復需要以下幾個步驟:

1 備份數(shù)據(jù)

備份操作需要在一臺還"活著"的節(jié)點上進行

$ etcdctl backup 
      --data-dir %data_dir% 
      --backup-dir %backup_data_dir%

這個命令會備份原數(shù)據(jù)到 %backup_data_dir% 目錄下,并重新相關的元數(shù)據(jù)(例如 節(jié)點的 id 和 集群的 id)。
這意味著在 %backup_data_dir% 中只包含原先的數(shù)據(jù),而不包含原先的身份信息。

接下來我們就可以基于備份的數(shù)據(jù)創(chuàng)建一個單節(jié)點的集群。

2 從備份數(shù)據(jù)中重建單節(jié)點集群
$ etcd 
      -data-dir=%backup_data_dir% 
      -force-new-cluster 
      ...

...部分省略了其他相關的參數(shù),例如-peer-urls -client-urls 等等

這時候,應該就成功創(chuàng)建了一個新的只包含一個節(jié)點的集群,并包含之前的所有數(shù)據(jù)。
當你確認新集群正常后,就可以刪除原來集群的數(shù)據(jù),暫停新集群,將新集群的數(shù)據(jù)目錄拷貝回原先數(shù)據(jù)的位置,并重新啟動。

$ pkill etcd
$ rm -rf %data_dir%
$ mv %backup_data_dir% %data_dir%
$ etcd 
    -data-dir=%data_dir% 
    ...
3 恢復集群

現(xiàn)在已經(jīng)有了一個擁有之前數(shù)據(jù)的單節(jié)點的集群了。接下來,你可以通過添加節(jié)點的操作,重建出一個同樣大小的集群。
值得注意的是,如果你還是使用之前的其他機器來重建這個新的集群,一定殺掉之前的etcd 進程,并且清除掉之前的數(shù)據(jù)。

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/7948.html

相關文章

  • 搭建 etcd 集群 - 暴走漫畫容器實踐系列 Part3

    摘要:如果用命令行參數(shù),應該將下列參數(shù)附在的啟動命令后面其中表示這是在從無到有搭建集群。命令行參數(shù)環(huán)境變量以命令行參數(shù)啟動方式為例公共服務如果沒有已有的集群,也可以用提供的公共服務。 etcd 是一個高可用的分布式 key-value(鍵值) 存儲系統(tǒng)。在暴漫我們用他用來做配置管理和服務發(fā)現(xiàn)。 這一次我們主要介紹關于 etcd 集群的搭建與管理。 1. etcd 集群概述 首先我們需要理解,...

    happen 評論0 收藏0
  • Kubernetes在宜信落地實踐

    摘要:容器云的背景伴隨著微服務的架構(gòu)的普及,結(jié)合開源的和等微服務框架,宜信內(nèi)部很多業(yè)務線逐漸了從原來的單體架構(gòu)逐漸轉(zhuǎn)移到微服務架構(gòu)。 容器云的背景 伴隨著微服務的架構(gòu)的普及,結(jié)合開源的Dubbo和Spring Cloud等微服務框架,宜信內(nèi)部很多業(yè)務線逐漸了從原來的單體架構(gòu)逐漸轉(zhuǎn)移到微服務架構(gòu)。應用從有狀態(tài)到無狀態(tài),具體來說將業(yè)務狀態(tài)數(shù)據(jù)如:會話、用戶數(shù)據(jù)等存儲到中間件中服務中。 showI...

    fxp 評論0 收藏0
  • Kubernetes在宜信落地實踐

    摘要:容器云的背景伴隨著微服務的架構(gòu)的普及,結(jié)合開源的和等微服務框架,宜信內(nèi)部很多業(yè)務線逐漸了從原來的單體架構(gòu)逐漸轉(zhuǎn)移到微服務架構(gòu)。 容器云的背景 伴隨著微服務的架構(gòu)的普及,結(jié)合開源的Dubbo和Spring Cloud等微服務框架,宜信內(nèi)部很多業(yè)務線逐漸了從原來的單體架構(gòu)逐漸轉(zhuǎn)移到微服務架構(gòu)。應用從有狀態(tài)到無狀態(tài),具體來說將業(yè)務狀態(tài)數(shù)據(jù)如:會話、用戶數(shù)據(jù)等存儲到中間件中服務中。 showI...

    Labradors 評論0 收藏0
  • 五阿哥鋼鐵電商平臺Docker容器云平臺建設實踐——你想知道都在這里!

    摘要:容器云架構(gòu)方案。容器云架構(gòu)方案基于容器技術,運維技術團隊開發(fā)了五阿哥網(wǎng)站的容器云平臺。多云對接私有云和公有云進行統(tǒng)一托管,包含網(wǎng)絡區(qū)域配置,實例開通及的環(huán)境初始化配置等。技術選型及實踐鏡像標準眾所周知,的鏡像是分層的。 前言 五阿哥鋼鐵電商平臺(www.wuage.com)是由鋼鐵行業(yè)第一的中國五礦與互聯(lián)網(wǎng)第一的阿里巴巴聯(lián)手打造,并充分運用雙方股東優(yōu)勢資源,即:阿里巴巴在大數(shù)據(jù)、電商運...

    jeffrey_up 評論0 收藏0
  • Container容器技術大會PPT分享

    摘要:大會是由國內(nèi)容器社區(qū)組織的專為一線開發(fā)者和運維工程師設計的頂級容器技術會議,會議強調(diào)實踐和交流,話題設置圍繞容器運維云計算等技術領域,力求全方位多角度為參會者解讀容器技術。 @Container大會是由國內(nèi)容器社區(qū) DockOne 組織的專為一線開發(fā)者和運維工程師設計的頂級容器技術會議,會議強調(diào)實踐和交流,話題設置圍繞容器、運維、云計算等技術領域,力求全方位、多角度為參會者解讀容器技術...

    Zachary 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<