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

概述

本文提供K8s部署MGR(MySQL Group Replication)的方案。本方案采用K8s作为容器管理平台(K8s以Pod作为调度单元,一个Pod可以包含多个容器,同个Pod中的容器共享IP地址和端口,始终位于同一位置并且共同调度,本文只使用一个Pod包含一个容器的方式,以下不做严格区分Pod与容器),采用Kube-OVN作为K8s的网络插件,通过Kube-OVN实现每个Pod配置一个固定IP地址和固定MAC地址,而且Pod重新部署之后,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

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

Pod

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

service

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

MySQL Pod

部署了MySQL服务程序的Pod。

MGR(MySQL Group Replication)

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