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

在Kubernetes上用ClusterControl運行Galera集群

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

0

354

0

集群控制 部署和擴展 Galera集群

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

在我們之前的博客文章中,我們展示了如何在Docker中使用Kubernetes作為編排工具部署Galera集群。然而,這僅僅是關于部署。運行數(shù)據(jù)庫需要的不僅僅是部署—我們需要考慮監(jiān)視、備份、升級、故障恢復、拓撲更改等等。這就是ClusterControl進入畫面的地方,因為它完成了堆棧并使其準備就緒。簡單地說,Kubernetes負責數(shù)據(jù)庫的部署和擴展,而ClusterControl則負責填充缺少的組件,包括配置、監(jiān)視和日常管理。

Docker上的ClusterControl

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

Github存儲庫或Docker Hub頁面上的詳細信息。

Kubernetes的聚類控制

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

ClusterControl可以部署為ReplicaSet或StatefulSet。因為它是一個單獨的實例,所以任何一種方法都是有效的。唯一顯著的區(qū)別是使用StatefulSet更容易識別容器,因為它提供了一致的標識符,如容器主機名、IP地址、DNS和存儲。ClusterControl還為新的群集部署提供服務發(fā)現(xiàn)。

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

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

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

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

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

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

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

在這個例子中,我們將使用簡單的NFS。確保準備好NFS服務器。為了簡單起見,我們將在3主機Kubernetes集群(1個主節(jié)點+2個Kubernetes節(jié)點)上演示此部署。不過,我們建議至少運行3個Kubernetes節(jié)點,以將丟失仲裁的風險降至最低。

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

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

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

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

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

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

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

    $ kubectl create -f cc-rs.yml

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

Kubernetes上的Galera群

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

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

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

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

HAProxy作為負載均衡器

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

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

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

上面的定義指示Kubernetes創(chuàng)建一個名為cc haproxy的服務,并運行“severlnines/centos ssh”映像的兩個副本,而不進行自動部署(AUTOu deployment=0)。然后,這些pod將連接到clustercontrolpod并執(zhí)行自動無密碼SSH設置?,F(xiàn)在需要做的是登錄到ClusterControl UI并開始部署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,如下所示:


**對第二個HAProxy實例重復上述步驟。

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

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

一定要試一試。我們很想聽聽你們相處得怎么樣。

免責聲明

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