国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

怎么通過(guò)Openshift實(shí)現K8S容災

發(fā)布時(shí)間:2021-09-04 11:55 來(lái)源:億速云 閱讀:0 作者:chen 欄目: 開(kāi)發(fā)技術(shù)

這篇文章主要講解了“怎么通過(guò)Openshift實(shí)現K8S容災”,文中的講解內容簡(jiǎn)單清晰,易于學(xué)習與理解,下面請大家跟著(zhù)小編的思路慢慢深入,一起來(lái)研究和學(xué)習“怎么通過(guò)Openshift實(shí)現K8S容災”吧!

如何通過(guò)Red Hat Openshift實(shí)現K8S容災?
越來(lái)越多的K8S應用采用RedHat OpenShift進(jìn)行部署,IT團隊需要部署容災功能,來(lái)防范系統崩潰導致業(yè)務(wù)受損。一部分行業(yè)通常有較強的監管要求,在出現大規模錯誤的時(shí)候必須有數據保護。例如HIPAA 監管要求中的CFR 164.308(7)(ii)(B),要求公司必須能夠在出現系統錯誤的時(shí)候“恢復所有數據”。這種情況下對于Openshift上的關(guān)鍵應用來(lái)說(shuō),容災是必須的。
本文講解了用戶(hù)如何使用OpenShift和Portworx來(lái)實(shí)現零RPO的容災。Portworx是Redhad容器目錄認證的廠(chǎng)商,在OperaterHub上也有經(jīng)過(guò)認證的Operator。能夠為Red Hat客戶(hù)提供完整的OpenShift體驗。在我們進(jìn)入如何在OpenShift上達到零RPO容災之前,讓我們首先來(lái)分析一下,傳統的容災方案為什么不適用于K8S。
傳統的備份和恢復方案是在虛擬機(VM)層面來(lái)實(shí)現的。如果一個(gè)單一應用運行在單一虛擬機上,這種方案很合適。因為備份虛擬機和備份應用一樣的。而運行在OpenShift上的容器化應用,卻很不一樣。一個(gè)虛擬機通??梢赃\行多個(gè)Pods,但不是所有的這些Pods都是為一個(gè)應用服務(wù)的。同樣,一個(gè)應用也可能跨越多個(gè)虛擬機。容器化應用的通常架構模式中應用是分布在一組集群上的。所以?xún)H僅備份虛擬機就不合適了。要么過(guò)多備份了無(wú)用的內容,要么沒(méi)有備份關(guān)鍵的應用數據。例如我想備份應用A,備份虛擬機的過(guò)程中,也會(huì )備份包括應用B和應用C的數據,這就會(huì )導致過(guò)多的備份。如果我備份了整個(gè)VM,而應用A運行在其他VM上的部分就沒(méi)有被有效的備份,這就導致沒(méi)有備份關(guān)鍵的應用數據。

為了解決這個(gè)問(wèn)題,Openshift上的容災需要的解決方案應是:

  • 容器顆粒度的

  • Kubernetes命名空間可感知的

  • 應用一致的

  • 能夠備份數據和應用配置

  • 能夠為數據中心提供同步和異步備份的不同方式

Portworx企業(yè)版數據平臺的PX-DR就是按照以上的原則設計的。

容器顆粒度的Openshift容災
PX-DR是一個(gè)容器顆粒度的DR方案。它不是去備份VM或者物理機上的所有數據,而是備份運行在主機上的特定的Pod,或者備份一組Pod。在下面的圖中,我們看到一個(gè)3節點(diǎn)的OpenShift集群、一個(gè)三節點(diǎn)的Cassandra環(huán),和三個(gè)單獨節點(diǎn)的PostgreSQL數據庫。
通過(guò)PX-DR我們可以去備份我們想要備份的特定Pods。例如,我們想備份3節點(diǎn)的Cassandra環(huán),或者想備份一個(gè)單獨的PostgreSQL數據庫。通過(guò)提供容器顆粒度的備份,我們避免了在備份所有VM過(guò)程中復雜的數據提取,轉化和加載(ETL)過(guò)程。通過(guò)僅僅備份單獨的應用,我們可以大量節省存儲成本,以及保持很低的RTO。
對整個(gè)Kubernetes命名空間的容災
具備容器顆粒度的備份代表我們也可以對整個(gè)命名空間進(jìn)行備份。Kubernetes上的命名空間,通??梢赃\行有關(guān)聯(lián)的一組應用。例如,某企業(yè)的一個(gè)命名空間代表了該企業(yè)的一個(gè)分支機構的所有應用。通常在備份命名空間的時(shí)候,我們會(huì )備份整個(gè)命名空間,而不是僅備份命名空間里的某一個(gè)應用。傳統的備份方案是無(wú)法對命名空間進(jìn)行備份的,因為命名空間是跨VM邊界的。PX-DR,可以備份整個(gè)命名空間,不論與這個(gè)命名空間關(guān)聯(lián)的Pods在哪里。
對 OpenShift備份過(guò)程中保持應用的一致性
PX-DR可以保持應用的一致性。如上面的例子,3個(gè)Cassandr pods是一個(gè)分布式系統。通過(guò)對它們進(jìn)行快照的過(guò)程中,如果需要支持應用在無(wú)數據損失的情況下恢復,就需要在快照過(guò)程中保持所有的Pods被鎖定。對VM進(jìn)行快照無(wú)法鎖定所有Pods。而進(jìn)行系列快照也不能達到。Portworx提供了Kubernetes組快照規則引擎,允許Operators自動(dòng)的執行前置和后置快照命令。例如對Cassandra,我們必須運行nodetool flush命令來(lái)達到對多個(gè)Cassandra容器快照過(guò)程中保持應用的一致性。
apiVersion: stork.libopenstorage.org/v1alpha1
kind: Rule
metadata:
name: cassandra-presnap-rule
spec:
– podSelector:
app: cassandra
actions:
– type: command
value: nodetool flush
為Openshift應用備份數據和應用配置
我們已經(jīng)敘述了容器顆粒度備份、命名空間感知、應用一致性備份的重要性?,F在我們來(lái)看一下為什么OpenShift的DR要求能夠備份數據和應用配置。在OpenShift上備份和恢復一個(gè)應用需要兩件事情:數據、和應用配置。如果我們僅僅備份數據,恢復應用的時(shí)間會(huì )非常長(cháng),因為我們需要重建應用配置,會(huì )增加RTO。如果我們僅僅備份應用的配置 – 所有的Yaml文件(定義了應用的部署、服務(wù)賬戶(hù)、PVCs等),但我們卻沒(méi)有應用數據。因此我們需要同時(shí)備份應用數據和應用配置。PX-DR可以通過(guò)一個(gè)OpenShift命令備份應用數據和應用配置?;謴蚈penShift應用的時(shí)候使用 `oc -f apply myapp.yml` 命令,因為恢復應用的過(guò)程與最初部署應用過(guò)程是一樣的。

對Openshift的同步或異步DR
針對我們的目標和數據中心的不同架構,我們可以選擇正確的OpenShift容災策略。我們可以選擇同步或者異步的備份模式。在一些情況下,也可以同時(shí)選取同步和異步備份,因為同步和異步提供了不同層級的系統保護。 

例如,一個(gè)銀行有本地部署的數據中心,并且通過(guò)專(zhuān)線(xiàn)連接到了一個(gè)AWS數據中心,可能會(huì )需要為一個(gè)重要商業(yè)應用選擇零RPO的DR策略,同時(shí)要求RTO<1分鐘。在這種情況下,我們傾向于推薦同步備份的PX-DR,由于兩個(gè)環(huán)境的延時(shí)極低,因此可以提供零數據損失的恢復。

另一個(gè)例子,如果一個(gè)制造業(yè)的公司在較遠的兩地有兩個(gè)數據中心,應用要求較低的RTO,但按每小時(shí)的備份頻率對于RPO的目標來(lái)說(shuō)已經(jīng)足夠了,在這種情況下,異步備份的PX-DR,使用連續增量式的備份就已經(jīng)足夠。

下面是不同情況下OpenShift DR策略的選擇

較遠網(wǎng)絡(luò )的OpenShift容災策略(兩個(gè)站點(diǎn)之間的往返延遲 >10毫秒的情況)

近距離網(wǎng)絡(luò )的OpenShift的容災策略(兩個(gè)站點(diǎn)之間的往返延遲 < 10毫秒的情況)
如何在OpenShift上通過(guò)PX-DR實(shí)現零RPO的DR
PX-DR支持在OpenShift上的同步和異步容災,下面我們來(lái)關(guān)注下零RPO的同步容災。我們先看一下通過(guò)Portworx和OpenShift同步容災的相關(guān)概念和配置,包括初始setup和模擬出一個(gè)系統錯誤。一個(gè)單獨的Portworx數據管理層橫跨多個(gè)站點(diǎn),如上圖所示,同步PX-DR使用位于多個(gè)OpenShift集群下的、一個(gè)單獨的Portworx數據管理層。這會(huì )在每一個(gè)OpenShift站點(diǎn)上提供永遠可用的數據復制。一個(gè)單獨的數據管理層意味著(zhù):有兩個(gè)Portworx集群域,其中總有一個(gè)Portworx集群是可用的。

通過(guò)集群域,Portworx數據管理層來(lái)區分主站點(diǎn)和容災站點(diǎn)。集群域在Portworx集群被安裝的時(shí)候就會(huì )配置完成。在每一個(gè)OpenShift集群上(主集群或DR集群)配置Portworx來(lái)包括同一個(gè)Key-value的存儲端點(diǎn)和集群名稱(chēng),但使用不同的集群域來(lái)區分主站點(diǎn)和DR站點(diǎn),看下面的例子。

Primary DR Site args: [“-k”, “etcd:http://etcd:2379”, “-c”, “px-cluster-synchronous”, “-s”, “type=gp2,size=250”, “-secret_type”, “k8s”, “-cluster_domain”, “primary” “-x”, “kubernetes”] “` args: [“-k”, “etcd:http://etcd:2379”, “-c”, “px-cluster-synchronous”, “-s”, “type=gp2,size=250”, “-secret_type”, “k8s”, “-cluster_domain”, “dr-site” “-x”, “kubernetes”]

低延時(shí)要求

同步PX-DR需要很低的延時(shí)。因為每一個(gè)寫(xiě)入操作都會(huì )被同步的復制到容災站點(diǎn)上,如果延時(shí)較高,應用的性能就會(huì )受到很大影響。這也是為什么在這樣的架構中,卷必須設定復制因子在2以上。到DR站點(diǎn)的往返延遲不能夠超過(guò)10毫秒,甚至有一些應用要求的延時(shí)比10毫秒還要低。當設計應用時(shí),同時(shí)需要思考DR的架構和延時(shí)的要求??梢栽趦蓚€(gè)站點(diǎn)間使用Ping來(lái)測試延時(shí)。測試延時(shí)可以返回最小、最大和平均延時(shí)以及分布。

$ ping ip-10-0-131-167 PING (10.0.131.167) 56(84) bytes of data. 64 bytes from (10.0.131.167): icmp_seq=1 ttl=255 time=0.019 ms 64 bytes from (10.0.131.167): icmp_seq=2 ttl=255 time=0.028 ms 64 bytes from (10.0.131.167): icmp_seq=3 ttl=255 time=0.035 ms 64 bytes from (10.0.131.167): icmp_seq=4 ttl=255 time=0.029 ms 64 bytes from (10.0.131.167): icmp_seq=5 ttl=255 time=0.028 ms ^C — ip-10-0-131-167.us-west-2.compute.internal ping statistics — 5 packets transmitted, 5 received, 0% packet loss, time 4080ms rtt min/avg/max/mdev = 0.019/0.027/0.035/0.008 ms

Setup Openshift集群配對

一旦完成兩個(gè)站點(diǎn)都在運行Portworx,在正確的集群域設定基礎上,它們就可以正常的來(lái)Sync了。我們可以通過(guò)Portworx命令 “` $ pxctl cluster domains show “` 來(lái)進(jìn)行驗證。驗證完成后,并且兩個(gè)集群域都是正常的情況下,就可以創(chuàng )建集群配對對象。這樣兩個(gè)站點(diǎn)就可以共享一個(gè)OpenShift應用YAML文件。這些YAML文件代表了應用的配置,對于在出問(wèn)題時(shí)保證低RTO有著(zhù)重要的作用。首先為目標命名空間產(chǎn)生集群配對,然后把YAML文件應用到主站點(diǎn)上。

$ storkctl generate clusterpair -n appns dr-site > dr-site.yaml
$ oc create -f dr-site.yaml

可以通過(guò)下面的命令來(lái)驗證集群配對。

$ storkctl get clusterdomainsstatus

創(chuàng )建一個(gè)調度和遷移

取決于你的組織的RTO要求,你可以選擇應用的sync頻率。通過(guò)創(chuàng )建一個(gè)策略來(lái)定義調度,然后把調度和應用的遷移關(guān)聯(lián)起來(lái)。

首先,創(chuàng )建一個(gè)調度,下面的例子中在每一分鐘遷移應用配置。把它保存成一個(gè)Yaml文件,然后使用`oc create -f` 來(lái)創(chuàng )建策略。

apiVersion: stork.libopenstorage.org/v1alpha1
kind: SchedulePolicy
metadata:
name: sched-policy
namespace: appns
policy:
interval:
intervalMinutes: 1
daily:
time: “10:14PM”
weekly:
day: “Thursday”
time: “10:13PM”
monthly:
date: 14
time: “8:05PM”

接下來(lái),創(chuàng )建一個(gè)遷移:針對 “appns”命名空間、“dr-site”集群配對、和使用這個(gè)調度。注意文件最下方的“schedulePolicyName”。存成一個(gè)yaml文件,然后通過(guò)` oc create -f` 來(lái)應用它。

apiVersion: stork.libopenstorage.org/v1alpha1
kind: MigrationSchedule
metadata:
name: migrationschedule
namespace: appns
spec:
template:
spec:
clusterPair: dr-site
includeResources: true
startApplications: false
includeVolumes: false
namespaces:
– demo
schedulePolicyName: sched-policy

注意以上僅僅設定includeResources是true,而設定其他的都是false,因為同步DR集群已經(jīng)在兩個(gè)集群上都配置了數據,因此我們不再需要include卷,并且直到有系統錯誤發(fā)生前,我們也不想啟動(dòng)這個(gè)應用。如果我們使用異步PX-DR方式,我們需要把`includeVolumes` 改為true。

你可以通過(guò)運行下面的命令來(lái)驗證遷移是否已經(jīng)完成。

$ storkctl get migration

通過(guò)OpenShift DR站點(diǎn)來(lái)恢復

現在OpenShift集群都已經(jīng)sync完成,應用也sync完成。我們準備好來(lái)恢復應用了。當一個(gè)主站點(diǎn)的災難發(fā)生后,下面的步驟即可在DR站點(diǎn)上恢復,并且是零RPO。

首先,關(guān)閉主站點(diǎn),等待域變成  (NotInSync)

$ storkctl deactivate clusterdomain ocs-primary
$ storkctl get clusterdomainsstatus

接下來(lái),如果你有權限訪(fǎng)問(wèn)主站點(diǎn),把復制集變成0。如果你沒(méi)有權限訪(fǎng)問(wèn)主站點(diǎn),直接走到下一步,在容災站點(diǎn)上恢復應用。

$ oc scale deploy -n demo –replicas=0 –all

通過(guò)向遷移調度增加 `suspend:true` ,并且更新spec,可以暫停遷移

apiVersion: stork.libopenstorage.org/v1alpha1
kind: MigrationSchedule
metadata:
name: migrationschedule
namespace: appns
spec:
template:
spec:
clusterPair: dr-site
includeResources: true
startApplications: false
includeVolumes: false
namespaces:
– demo
schedulePolicyName: sched-policy
suspend: true

$oc apply -f migration-schedule.yaml

最后,在DR站點(diǎn)上,啟動(dòng)遷移,打開(kāi)DR站點(diǎn)上的Pods。

$ storkctl activate migration -n appns

你的“appns”命名空間里的應用現在已經(jīng)在OpenShift DR站點(diǎn)上重啟了,并且是0數據損失。

PX-DR包括一個(gè)API可以自動(dòng)化的實(shí)現上面的步驟,另外,當主站點(diǎn)又重新啟動(dòng)后,應用的配置和數據會(huì )重新被sync,這樣就可以重新在主站點(diǎn)上啟動(dòng)應用。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

H无码精品3D动漫在线观看| 久久精品人人看人人爽| YY6029无码AV午夜福利| yy6080久久亚洲精品| 亚洲春色CAMELTOE一区| 国产在线无码一区二区三区视频|