操做指南:經過 OpenShfit 運行高可用 MySQL數據庫

如何經過 OpenShfit 運行高可用 MySQL數據庫html

操做指南:經過 OpenShfit 運行高可用 MySQL數據庫
在這裏插入圖片描述
Portworx經過RedHat技術認證node

咱們的文章包括了MySQL on Kubernetes在不一樣平臺不一樣場景下的狀況。相關文章的列表以下:mysql

Running HA MySQL on Amazon Elastic Container Service for Kubernetes (EKS) (https://portworx.com/ha-mysql-amazon-eks/)
Running HA MySQL on Azure Kubernetes Service (AKS) (https://portworx.com/run-ha-mysql-azure-kubernetes-service/)
Running HA MySQL on Google Kubernetes Engine (GKE) (https://portworx.com/run-ha-mysql-google-kubernetes-engine/)
How to Backup and Restore MySQL on Red Hat OpenShift (https://portworx.com/backup-restore-mysql-red-hat-openshift/)
Running HA MySQL on IBM Cloud Kubernetes Service (IKS) (https://portworx.com/run-ha-mysql-ibm-cloud-kubernetes-service/)
Running HA MySQL on Rancher Kubernetes Engine (RKE) (https://portworx.com/run-ha-mysql-rancher-kubernetes-engine/)
Running HA MySQL on IBM Cloud Private (https://portworx.com/run-ha-mysql-ibm-cloud-private/)sql

OpenShift Container Platform是Red Hat在私有云/本地部署的應用部署平臺。許多用戶使用OpenShift來運行無狀態應用。可是經過OpenShift來運行相似數據庫的有狀態應用仍然是一個很大的挑戰。Red Hat提供了一系列的企業級存儲解決方案。但不管是GlusterFS (RedHat稱之爲容器原生存儲),仍是Ceph,都並非被設計來運行高性能/低延遲數據庫的。GlusterFS和Ceph是很不錯的項目,但對於運行數據庫來講都存在較多問題。這些問題使得OpenShift的用戶不得不放棄經過OpenShift來運行數據服務。docker

但這些問題其實是能夠解決的。本篇文章中,咱們將經過使用開源數據庫MySQL爲例,來演示,如何經過OpenShift來運行數據庫。數據庫

在Openshift上運行數據庫的關鍵,須要一個專爲高性能數據庫或其餘有狀態應用設計的,雲原生存儲解決方案。json

Portworx是根據DevOps的原則,專爲在容器中運行有狀態應用和生產系統設計的解決方案。使用Portworx,用戶可使用任何容器排程器,在任何基礎架構上,管理任何數據庫或有狀態服務。包括:api

OpenShift (https://docs.portworx.com/scheduler/kubernetes/openshift-install.html
Kubernetes (https://portworx.com/use-case/kubernetes-storage/)
Mesosphere DC/OS (https://portworx.com/use-case/persistent-storage-dcos/)
Docker Swarm (https://portworx.com/use-case/docker-persistent-storage/)
OpenShift發佈的3.7版本支持外部的卷插件,從而用戶可以使用Portworx的企業級存儲功能來加密、快照、備份、確保高可用,來保護關鍵應用數據庫。服務器

在本篇文章中,咱們會演示如何經過5個步驟,在OpenShift上運行高可用的MySQL數據庫。架構

  1. 爲OpenShift安裝外部卷插件,這樣用戶就可使用快照、備份、高可用、以及加密功能

  2. 建立一個Kubernetes存儲類,含有複製因子=2,IO優先級=High,快照間隔=60。這些值也能夠根據用戶實際須要來配置

  3. 在OpenShift裏建立一個MySQL模板:導入JSON,配置OpenShift MySQL持久卷,包含內存上限、MySQL的參數、以及存儲類的大小

  4. 從這個模板建立一個MySQL 持久卷,部署OpenShift的Pods來使用這個卷

  5. 驗證MySQL高可用:經過關閉節點,刪除Pod來看MySQL已經被自動從新排程了

若是你但願瞭解更多如何在OpenShift上運行高性能數據庫,能夠查看Portworx網站上的相關文檔和視頻。

在OpenShift 3.7上安裝Portworx
安裝Portworx

Portworx在OpenShift上做爲一個Daemonset被安裝。訪問 https://install.portworx.com來建立你的px-spec.yaml文件,而且運行oc apply –f px-spec.yaml。

在OpenShift上安裝Portworx的詳細操做文檔在這裏:(https://docs.portworx.com/scheduler/kubernetes/openshift-install.html

一旦Portworx安裝完成,咱們就繼續建立一個存儲類,用來爲咱們的MySQL實例作卷的動態部署。

下面是一個存儲類的例子,咱們用它來建立咱們的卷,

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
name: px-demo-sc
provisioner: kubernetes.io/portworx-volume
parameters:
repl: 「2」
priority_io: 「high」
snap_interval: 「60」

在這個存儲類例子裏,咱們會建立一個叫作px-demo-sc的存儲類,而且會配置一些Portworx的參數,

Replication – repl: 「2」

咱們能夠配置,在集羣裏咱們須要多少份卷的副本。Portworx支持的複製因子包括1/2/3。配置複製因子爲2或者3,能夠確保Portworx在集羣中同步地把卷複製到2或3個節點裏,同時確保數據的持久性。若是某個節點死掉,Portworx和OpenShift會把Pod從新部署到集羣中存在Portworx卷的另一個Worker節點上。

IO Priority – priority_io: 「high」

Portworx容許你建立3個存儲池:High、Medium和Low。你可使用具有SSD、HDD和SATA存儲的服務器。SSD是High,HDD是Medium,SATA是Low。若是是在雲環境中也能夠經過配置不一樣的IOPS來完成。當選擇High的存儲類,Portworx會把Pod排程到具有SSD存儲的服務器上。

Snapshots – snap_interval: 「60」

Porworx會每60分鐘建立一個快照。這些快照能夠被用來回滾數據庫,測試升級,以及作研發測試。

一個完整的存儲類參數說明在這裏:(https://docs.portworx.com/scheduler/kubernetes/dynamic-provisioning.html

注意:Portworx也支持備份你的容器捲到雲中或者本地的對象存儲裏。

https://docs.portworx.com/cloud/backups.html)你能夠建立備份的排程。這些備份能夠被加密和恢復到同一個或者不一樣的Portworx集羣裏

在OpenShift裏建立一個MySQL模板

Portworx已經建立了一個樣例MySQL OpenShift模板,參見(https://2.1.docs.portworx.com/samples/k8s/px-mysql-openshift.json?raw=true

在OpenShift操做面板裏選擇導入YAML/JSON,copy和粘貼PortworxMySQL 模板,點擊建立。

操做指南:經過 OpenShfit 運行高可用 MySQL數據庫

這將會出現Portworx MySQL (持久)模板配置界面。你能夠選擇內存上限以及其餘MySQL參數,或者使用系統默認的參數。你也能夠設定卷的大小,以及須要使用的存儲類。確保你使用的存儲類與以前建立的存儲類相匹配。

操做指南:經過 OpenShfit 運行高可用 MySQL數據庫

進入項目,經過點擊Storage驗證PVC已經被建立並被綁定。

操做指南:經過 OpenShfit 運行高可用 MySQL數據庫

容器須要1到2分鐘來出現,容器開始運行後,驗證存儲已經連上了: 點擊Application、Pods;選擇MySQLPod,在終端裏輸入df –H,你能夠看到/var/lib/mysql/data目錄已經被mounted到Portworx支持的PX-Volume裏。

操做指南:經過 OpenShfit 運行高可用 MySQL數據庫

登入數據庫而且建立一張表。

在這裏插入圖片描述

確認Pod運行在哪一個節點上,

oc get pods -n mysql-openshift -o wide
NAME READY STATUS RESTARTS AGE IP NODE
mysql-1-f4xlw 1/1 Running 0 1h 10.130.0.34 70-0-107-155.pools.spcsdns.net

關閉(Cordon off)正在運行Pod的節點,

oc adm cordon  70-0-107-155.pools.spcsdns.net

驗證節點上的排程已經被disable了,

oc get nodes
NAME STATUS AGE VERSION
70-0-107-155.pools.spcsdns.net Ready,SchedulingDisabled 23d v1.7.6+a08f5eeb62

刪除MySQL Pod,

oc delete pod mysql-1-q88qq -n mysql-openshift
pod 「mysql-1-q88qq」 deleted

驗證Pod已經被從新排程到集羣上的另外一個節點裏。

oc get pods -n mysql-openshift -o wide
NAME READY STATUS RESTARTS AGE IP NODE
mysql-1-j97tw 1/1 Running 0 1m 10.128.0.63 70-0-40-193.pools.spcsdns.net

回到OpenShift控制面板,選擇你的項目,到Application, Pods,點擊新的MySQL Pod, 而後是終端,驗證數據庫表還在。

操做指南:經過 OpenShfit 運行高可用 MySQL數據庫

總結來看,咱們經過5個步驟,在OpenShift中運行了高可用的MySQL數據庫。

  1. 爲OpenShift安裝外部卷插件,這樣用戶就可使用快照、備份、高可用、以及加密功能
  2. 建立一個Kubernetes存儲類,含有複製因子=2,IO優先級=High,快照間隔=60。這些值也能夠根據用戶實際須要來配置
  3. 在OpenShift裏建立一個MySQL模板:導入JSON,配置OpenShiftMySQL持久卷,包含內存上限、MySQL的參數、以及存儲類的大小
  4. 從這個模板建立一個MySQL 持久卷,部署OpenShift的Pods來使用這個卷
  5. 驗證MySQL高可用:經過關閉節點,刪除Pod來看MySQL已經被自動從新排程了

若是你但願瞭解更多如何在OpenShift上運行高性能數據庫,能夠查看Portworx網站上的相關文檔和視頻。

相關文章
相關標籤/搜索