概述
本文提供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在单个
本文以物理机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集群。
术语 |
说明 |
---|---|
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版本引进的一个数据库高可用与高扩展的解决方案。 |