前言

之前,笔者发表的《非开发人员看Devops--从一张图谈起》的文章,在不到24小时内,阅读量已经达到1100,说明大家对DevOps和OpenShift此还是很感兴趣的。


笔者另外一篇文章《同时面向运维和开发的企业级PaaS平台--OpenShift》,介绍了OpenShift的相关概念和架构,并截取了在实验中的操作截图。很多朋友反映图比较小,看不清楚,而且命令行显示相对比较枯燥,因此这次笔者展示红帽公司技术专家陈耿的OpenShift视频,以便理解。如果读者对OpenShift此前不了解的话,在阅读本文以前,建议读者先阅读《同时面向运维和开发的企业级PaaS平台--OpenShift》,重复的概念本文不再进行赘述。

在容器中部署MySQL和Hadoop集群(内含视频)_java


视频介绍

本视频讲的OpenShift面向运维面的功能:容器云。即在OpenShift中,利用容器技术,快速部署MySQL集群,并且当一个MySQL实例出现故障时,会自动被恢复。视频中有每一步的中文解释,但为了读者更好地理解,我对相关概念进行介绍。


OpenStack作为PAAS平台的解决方案,其交互界面可以是命令行,也可以是图形化界面。视频中的OpenShift相关操作,都是通过图形化实现的。


在视频中,

1.首先创建一个Project。Project的名称设置成MySQL Cluster。OpenShift中的Porject的概念可以类比成OpenStack中的Project。OpenShift中的Project的作用是将Kubernetes的资源分组。项目创建的时候,可以指定项目中Pod、卷、服务等资源的上限。

2.搜索MySQL的模板,该模板包含的是具有复制关系的两个MySQL实例(以docker imagine方式存在),然后设置相关的参数,如MySQL的密码等,点击创建。

3.在很短时间内,两个MySQL的实例MasterA和MasterB创建完毕,它们之间是相互复制关系。创建完毕以后,MySQL自动启动。此时,这两个MySQL实例,对于OpenShift而言,就是两个pod(pod中包含一个或者多个容器)。

4.由于两个实例之间是相互复制的关系,在一个实例中创建表、向表中插入数据另外一个实例也能够马上识别到。

 5.截止到目前,MySQL实例已经正常工作了,并且两个实例之间是相互复制的关系。MySQL还不能对外提供服务,并且实例之间的负载均衡也没有设置。

6.接下来,创建HAProxy,也就是router。它也是一个pod。HAproxy的创建同样通过点击鼠标完成。它好以后,将HAProxy端口与一个Client的本地端口映射,就可以实现从Client本地访问发起对MySQL集群的压力了。

7.在Client端,通过JDBC连接MySQL集群,对数据库发起压力。然后,将MySQL的一个实例-MasterA进行破坏,模拟故障(删除pod)。

8.HAproxy可以很快检测到后端masterA实例出现故障,并自动恢复Master。(重启一个新的Pod)。

9.过一小会以后,停止压力。分别登陆mastera和masterB,进行数据库查询,两个实例被insert的数据行数是相同的。