操做指南:经过 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网站上的相关文档和视频。

相关文章
相关标签/搜索