简介
本文提供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在单个
本文以物理机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 |
一种基于Open vSwitch的开源的K8s网络插件。 |
Pod |
Kubernetes的基本调度单元称为“Pod”,Pod中承载着运行业务程序的容器。 |
service |
Kubernetes提供外部访问的一种资源,连接外部访问到Pod。 |
MySQL Pod |
部署了MySQL服务程序的Pod。 |
MGR(MySQL Group Replication) |
MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案。 |