中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

在Kubernetes上用ClusterControl運(yùn)行Galera集群

發(fā)布于:2021-01-22 14:30:21

0

357

0

集群控制 部署和擴(kuò)展 Galera集群

在我們的“MySQL on Docker”博客系列中,我們繼續(xù)探索如何使Galera集群在不同的容器環(huán)境中順利運(yùn)行。在容器或裸機(jī)中運(yùn)行數(shù)據(jù)庫(kù)服務(wù)時(shí),最重要的一點(diǎn)是消除數(shù)據(jù)丟失的風(fēng)險(xiǎn)。我們將看到如何利用Kubernetes中一個(gè)很有前途的特性StatefulSet,它以一種更可預(yù)測(cè)和可控的方式編排容器部署。

在我們之前的博客文章中,我們展示了如何在Docker中使用Kubernetes作為編排工具部署Galera集群。然而,這僅僅是關(guān)于部署。運(yùn)行數(shù)據(jù)庫(kù)需要的不僅僅是部署—我們需要考慮監(jiān)視、備份、升級(jí)、故障恢復(fù)、拓?fù)涓牡鹊?。這就是ClusterControl進(jìn)入畫(huà)面的地方,因?yàn)樗瓿闪硕褩2⑹蛊錅?zhǔn)備就緒。簡(jiǎn)單地說(shuō),Kubernetes負(fù)責(zé)數(shù)據(jù)庫(kù)的部署和擴(kuò)展,而ClusterControl則負(fù)責(zé)填充缺少的組件,包括配置、監(jiān)視和日常管理。

Docker上的ClusterControl

這篇博客文章描述了ClusterControl如何在Docker環(huán)境中運(yùn)行。Docker映像已經(jīng)更新,現(xiàn)在在最新的stable分支中提供了標(biāo)準(zhǔn)的ClusterControl包,并對(duì)容器編排平臺(tái)(如Docker Swarm和Kubernetes)提供了額外的支持,我們將在下面進(jìn)一步描述這一點(diǎn)。您還可以使用映像在獨(dú)立Docker主機(jī)上部署數(shù)據(jù)庫(kù)集群。

Github存儲(chǔ)庫(kù)或Docker Hub頁(yè)面上的詳細(xì)信息。

Kubernetes的聚類(lèi)控制

更新后的Docker映像現(xiàn)在支持自動(dòng)部署Kubernetes調(diào)度的數(shù)據(jù)庫(kù)容器。這些步驟類(lèi)似于Docker Swarm實(shí)現(xiàn),其中用戶(hù)決定數(shù)據(jù)庫(kù)集群的規(guī)格,ClusterControl自動(dòng)執(zhí)行實(shí)際部署。

ClusterControl可以部署為ReplicaSet或StatefulSet。因?yàn)樗且粋€(gè)單獨(dú)的實(shí)例,所以任何一種方法都是有效的。唯一顯著的區(qū)別是使用StatefulSet更容易識(shí)別容器,因?yàn)樗峁┝艘恢碌臉?biāo)識(shí)符,如容器主機(jī)名、IP地址、DNS和存儲(chǔ)。ClusterControl還為新的群集部署提供服務(wù)發(fā)現(xiàn)。

要在Kubernetes上部署ClusterControl,建議使用以下設(shè)置:

  • 將Kubernetes插件(例如NFS、iSCSI)支持的集中式持久卷用于以下路徑:

    • /etc/cmon.d-ClusterControl配置目錄

    • <var cmon和dcps數(shù)據(jù)庫(kù)

  • 為此pod創(chuàng)建2個(gè)服務(wù):

    • 一個(gè)用于POD(暴露端口80和3306)

    • 一個(gè)用于對(duì)外通信(暴露端口80、443,使用NodePort或LoadBalancer)

在這個(gè)例子中,我們將使用簡(jiǎn)單的NFS。確保準(zhǔn)備好NFS服務(wù)器。為了簡(jiǎn)單起見(jiàn),我們將在3主機(jī)Kubernetes集群(1個(gè)主節(jié)點(diǎn)+2個(gè)Kubernetes節(jié)點(diǎn))上演示此部署。不過(guò),我們建議至少運(yùn)行3個(gè)Kubernetes節(jié)點(diǎn),以將丟失仲裁的風(fēng)險(xiǎn)降至最低。

有了它,我們可以像這樣部署ClusterControl:

在NFS服務(wù)器(kube1.local)上,安裝NFS服務(wù)器和客戶(hù)端包并導(dǎo)出以下路徑:

  • /storage/pods/cc/cmon.d-映射到/etc/cmon.d

  • /storage/pods/cc/datadir-映射到/var/lib/mysql

確保重新啟動(dòng)NFS服務(wù)以應(yīng)用更改。然后創(chuàng)建pv和pvc,如cc pv所示-聚氯乙烯yml地址:

    $ kubectl create -f cc-pv-pvc.yml

    我們現(xiàn)在準(zhǔn)備開(kāi)始一個(gè)集群控制艙的復(fù)制品。發(fā)送抄送-日元致庫(kù)伯內(nèi)特斯大師:

    $ kubectl create -f cc-rs.yml

ClusterControl現(xiàn)在可以在任何Kubernetes節(jié)點(diǎn)的端口30080上訪(fǎng)問(wèn),例如,http://kube1.local:30080/clustercontrol。使用這種方法(ReplicaSet+PV+PVC),如果物理主機(jī)宕機(jī),clustercontrolpod將能夠生存。Kubernetes將自動(dòng)將pod調(diào)度到其他可用的主機(jī)上,ClusterControl將從最后一個(gè)通過(guò)NFS可用的現(xiàn)有數(shù)據(jù)集引導(dǎo)。

Kubernetes上的Galera群

如果要使用ClusterControl自動(dòng)部署功能,只需將以下YAML文件發(fā)送到Kubernetes主機(jī):

$ kubectl create -f cc-galera-pv-pvc.yml $ kubectl create -f cc-galera-ss.yml

上面的命令告訴Kubernetes使用名為“centosssh”的通用基本映像創(chuàng)建3個(gè)pv、3個(gè)pvc和3個(gè)pod,作為StatefulSet運(yùn)行。在本例中,我們要部署的數(shù)據(jù)庫(kù)集群是MariaDB 10.1。一旦容器啟動(dòng),它們將自己注冊(cè)到ClusterControl CMON數(shù)據(jù)庫(kù)。然后ClusterControl將獲取容器的主機(jī)名,并根據(jù)已傳遞的變量啟動(dòng)部署。

您可以直接從ClusterControl UI檢查進(jìn)度。一旦部署完成,我們的體系結(jié)構(gòu)將如下所示:

HAProxy作為負(fù)載均衡器

Kubernetes在將流量分發(fā)到后端pods時(shí),通過(guò)服務(wù)組件提供了內(nèi)部負(fù)載平衡功能。如果平衡(最少的連接)適合您的工作負(fù)載,這就足夠了。在某些情況下,由于死鎖或嚴(yán)格的先讀后寫(xiě)語(yǔ)義,應(yīng)用程序需要向單個(gè)主機(jī)發(fā)送查詢(xún),因此必須創(chuàng)建另一個(gè)Kubernetes服務(wù),并使用適當(dāng)?shù)倪x擇器將傳入連接重定向到一個(gè)且僅一個(gè)pod。如果這個(gè)pod壞了,當(dāng)Kubernetes將其再次調(diào)度到另一個(gè)可用節(jié)點(diǎn)時(shí),就有可能出現(xiàn)服務(wù)中斷。我們?cè)谶@里要強(qiáng)調(diào)的是,如果您想更好地控制發(fā)送到后端Galera集群的內(nèi)容,HAProxy(甚至ProxySQL)之類(lèi)的東西在這方面相當(dāng)不錯(cuò)。

您可以將HAProxy部署為兩個(gè)pod的ReplicaSet,并使用ClusterControl來(lái)部署、配置和管理它。只需將此YAML定義發(fā)布到Kubernetes:

$ kubectl create -f cc-haproxy-rs.yml

上面的定義指示Kubernetes創(chuàng)建一個(gè)名為cc haproxy的服務(wù),并運(yùn)行“severlnines/centos ssh”映像的兩個(gè)副本,而不進(jìn)行自動(dòng)部署(AUTOu deployment=0)。然后,這些pod將連接到clustercontrolpod并執(zhí)行自動(dòng)無(wú)密碼SSH設(shè)置?,F(xiàn)在需要做的是登錄到ClusterControl UI并開(kāi)始部署HAProxy。

首先,檢索HAProxy pods的IP地址:

$ kubectl describe pods -l app=cc-haproxy | grep IP IP:        10.44.0.6 IP:        10.36.0.5

然后將該地址用作ClusterControl下的HAProxy地址->;選擇DB cluster->;Manage->;Load Balancer->;HAProxy->;Deploy HAProxy,如下所示:


**對(duì)第二個(gè)HAProxy實(shí)例重復(fù)上述步驟。

一旦完成,我們的Galera集群可以通過(guò)內(nèi)部端口3307(Kubernetes網(wǎng)絡(luò)空間內(nèi))或外部端口30016(外部世界)上的“cc haproxy”服務(wù)進(jìn)行訪(fǎng)問(wèn)。連接將在這些HAProxy實(shí)例之間進(jìn)行負(fù)載平衡。在這一點(diǎn)上,我們的體系結(jié)構(gòu)可以如下所示:

通過(guò)此設(shè)置,您可以最大限度地控制在Docker上運(yùn)行的負(fù)載平衡Galera集群。Kubernetes通過(guò)支持有狀態(tài)的服務(wù)編排,帶來(lái)了一些好東西。

一定要試一試。我們很想聽(tīng)聽(tīng)你們相處得怎么樣。

免責(zé)聲明

ClusterControl Docker對(duì)Kubernetes上Galera群集的映像支持目前不是官方ClusterControl產(chǎn)品的一部分。這是一個(gè)開(kāi)源項(xiàng)目,您可以在我們的Github頁(yè)面上跟蹤和貢獻(xiàn)它。