鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

简介

本文提供K8s部署MGR(MySQL Group Replication)的方案。该方案采用K8s作为容器管理平台,K8s使用Pod作为调度单元,一个Pod可包含一个或多个容器,同一Pod内的容器共享IP地址和端口,始终位于同一位置并共同调度。本文中,每个Pod仅包含一个容器,因此不对Pod与容器进行严格区分。

方案中采用Kube-OVN作为K8s的网络插件,通过Kube-OVN实现每个Pod配置有固定的IP地址和MAC地址,即使Pod重新部署,其IP地址和MAC地址也不变。外部网络可通过service访问MySQL Pod,亦可配置静态路由以直接访问MySQL Pod的IP地址。

本文中MySQL MGR采用一主两备的部署方式,基于性能考虑,本示例采用计算节点的本地存储作为MySQL的数据及配置文件的存储位置。这需要将MySQL Pod与计算节点绑定部署,避免K8s调度使MySQL Pod飘到其他计算节点而找不到数据的问题。通过K8s限制MySQL Pod在单个 NUMA 节点上运行,以提升MySQL运行的性能。组网如图1所示,图中涉及的相关术语解释如表1所示。

图1 基于K8s部署MySQL MGR组网图

本文以物理机192.168.200.10作为K8s主节点,192.168.200.218、192.168.200.220和192.168.200.222作为K8s计算节点,3个计算节点分别部署mysql-1、mysql-2和mysql-3,以mysql-1作为主库,mysql-2和mysql-3作为从库,构成一主两备的MySQL MGR集群。

表1 术语解释

术语

说明

Docker

一种开源的实现容器虚拟化的引擎。

镜像(Image)

一个只读模板,用于指示创建容器。镜像分层(layers)构建的,而定义这些层次的文件叫Dockerfile。

容器(Containers)

镜像的可运行的实例

K8s(Kubernetes)

用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统。

主节点(master)

K8s中负责控制和调度等功能的中心节点。

计算节点(worker)

K8s中负责业务负载的节点,每个计算节点可被主节点分配工作负载。

Kube-OVN

一种基于Open vSwitch的开源的K8s网络插件。

Pod

Kubernetes的基本调度单元称为“Pod”,Pod中承载着运行业务程序的容器。

service

Kubernetes提供外部访问的一种资源,连接外部访问到Pod。

MySQL Pod

部署了MySQL服务程序的Pod。

MGR(MySQL Group Replication)

MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案。