当前位置: 首页 > news >正文

K8S中部署MySQL高可用工具Orchestrator

Orchestrator 是一个用于管理和监控 MySQL 和 MariaDB 主从复制环境的开源工具。它提供了功能强大的主从复制拓扑可视化、故障转移(failover)和高可用性(HA)管理功能。

复制拓扑可视化

  • Orchestrator 提供图形化界面展示 MySQL 主从复制拓扑结构。你可以直观地看到主节点和从节点的关系,以及它们的状态信息。

故障转移与恢复

  • Orchestrator 支持自动故障转移功能。在主节点发生故障时,Orchestrator 可以自动将一个从节点提升为新的主节点,并更新复制拓扑结构。

主从结构检测

  • Orchestrator 定期扫描 MySQL 实例,检测主从结构的变化。它能够识别复制中的问题,如主节点或从节点的状态异常。

主节点选择

  • 在发生故障时,Orchestrator 可以根据配置自动选择最合适的从节点提升为主节点,确保最小化停机时间。

分片支持

  • Orchestrator 支持分片的 MySQL 环境,可以管理具有多个主节点的复制拓扑。

高可用性监控

  • 监控主从复制的健康状态,包括复制延迟、主从状态一致性等。

警告与通知

  • Orchestrator 可以配置警告和通知,以便在出现主从复制问题时及时通知管理员。

手动故障转移

  • 除了自动故障转移,Orchestrator 还支持手动故障转移操作,允许管理员在需要时手动介入。

Web 界面和 API

  • 提供了 Web 界面和 REST API 以便于管理和自动化操作。管理员可以通过 Web 界面进行操作,也可以通过 API 进行集成和脚本化管理

本次部署主要针对单节点情况,对orchestrator在k8s中部署的代码进行展示

第一 orchestrator后端数据库

创建命名空间

kubectl create namespace strator

部署 Orchestrator 后端数据库

编写一个 db-orchestrator.yaml 文件,内容如下

apiVersion: v1
kind: Service
metadata:name: orchestrator-dbnamespace: strator
spec:ports:- port: 3306selector:app: orchestrator-db
---
apiVersion: apps/v1
kind: Deployment
metadata:name: orchestrator-dbnamespace: strator
spec:replicas: 1selector:matchLabels:app: orchestrator-dbtemplate:metadata:labels:app: orchestrator-dbspec:containers:- name: mysqlimage: mysql:8.0env:- name: MYSQL_ROOT_PASSWORDvalue: Tgqs@123- name: MYSQL_DATABASEvalue: orchestrator- name: MYSQL_USERvalue: orchestrator_user- name: MYSQL_PASSWORDvalue: Tgqs@123ports:- containerPort: 3306volumeMounts:- name: mysql-persistent-storagemountPath: /var/lib/mysqlvolumes:- name: mysql-persistent-storagepersistentVolumeClaim:claimName: mysql-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mysql-pvcnamespace: strator
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5Gi

创建该文件后,通过以下命令应用配置

kubectl apply -f db-orchestrator.yaml

第二 部署 orchestrator

使用 ConfigMap 来配置 Orchestrator,以便自动化检测和切换 MySQL 数据库的主从角色。

创建configmap

vim orchestrator-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:name: orchestrator-confignamespace: strator
data:orchestrator.conf.json: |
{"Debug": true,"MySQLTopologyUser": "orche","MySQLTopologyPassword": "Tgqs@123","MySQLOrchestratorHost": "orchestrator-db","MySQLOrchestratorPort": 3306,"MySQLOrchestratorUser": "orchestrator","MySQLOrchestratorPassword": "Tgqs@123","MySQLOrchestratorDatabase": "orchestrator","HostnameResolveMethod": "default", "MySQLHostnameResolveMethod": "@@hostname","InstancePollSeconds": 60,"FailureDetectionPeriodBlockMinutes": 60,"RecoverMasterClusterFilters": ["*"],"RecoverIntermediateMasterClusterFilters": ["*"]
}

应用配置

kubectl apply -f orchestrator-configmap.yaml

创建deployment

vim orchestrator-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: orchestratornamespace: strator
spec:replicas: 1selector:matchLabels:app: orchestratortemplate:metadata:labels:app: orchestratorspec:containers:- name: orchestratorimage: openarkcode/orchestrator:latestports:- containerPort: 3000volumeMounts:- name: orchestrator-configmountPath: /etc/orchestrator.conf.jsonsubPath: orchestrator.conf.jsonvolumes:- name: orchestrator-configconfigMap:name: orchestrator-config

应用配置

kubectl apply -f orchestrator-deployment.yaml

配置service
apiVersion: v1
kind: Service
metadata:name: orchestratornamespace: strator
spec:selector:app: orchestratorports:- protocol: TCPport: 3000targetPort: 3000nodePort: 32300  # 手动指定 NodePort 端口type: NodePort

第三 验证

查看pod状态

kubectl get po -n strator
在这里插入图片描述

登录orchestrator的web界面

在这里插入图片描述

监控集群中的其他命名空间的mysql

查看 orche 命名空间中的 MySQL Services

kubectl get svc -n orche

NAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
mysql-master     ClusterIP   10.100.200.1     <none>        3306/TCP   10m
mysql-slave      ClusterIP   10.100.200.2     <none>        3306/TCP   10m

登录orchestrator的web界面,选择 “Discover”

http://:32000

mysql-master.orche.svc.cluster.local:3306
mysql-slave.orche.svc.cluster.local:3306

注:

mysql-slave.orche.svc.cluster.local:3306 是 Kubernetes 内部的一个完整的服务地址(URL),这个地址在 Kubernetes 集群内部使用,允许 Pod、服务和其他 Kubernetes 资源通过 DNS 解析并访问这个 MySQL 从节点服务。

mysql-slave 是 Kubernetes 中定义的一个服务 (Service) 名称,表示暴露 MySQL 从节点的。

svc 可以理解为告诉 Kubernetes 这是一个服务

cluster.local 是 Kubernetes 集群的默认域名后缀。它表示这是集群内部的一个域名,通常不会从集群外部访问。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微服务网关全能进化:设计模式加持下的Spring Cloud Alibaba落地实践(三)
  • 【强化学习环境搭建】mujoco,mujoco_py,d4rl等强化学习相关资源安装及使用的参考资料链接 持续更新ing
  • C#Winform常见的多线程实现方法:
  • nacos Spring cloud 报错 URI is not absolute、service not found、502 bad gateway
  • C++中string的简单实现
  • R语言xlsx,txt文件处理:以《书摘》00年-10年资源合集整理为例
  • 微信小程序npm扩展能力探究
  • CCS10导入CCS3.3工程
  • 287. 寻找重复数(stl法)
  • 【机器学习】和【人工智能】在量子力学的应用及代码案例分析
  • Spring Cloud 八股文
  • 【笔记】物理化学绪论
  • 【video clips 专栏 2 -- videopad 视频拼接】
  • 【LLM】局域网内为容器服务启用HTTPS
  • Spring中Bean的相关注解
  • 《剑指offer》分解让复杂问题更简单
  • 【Amaple教程】5. 插件
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CSS居中完全指南——构建CSS居中决策树
  • extract-text-webpack-plugin用法
  • GitUp, 你不可错过的秀外慧中的git工具
  • go语言学习初探(一)
  • Joomla 2.x, 3.x useful code cheatsheet
  • Koa2 之文件上传下载
  • Nacos系列:Nacos的Java SDK使用
  • spring boot下thymeleaf全局静态变量配置
  • Spring Cloud中负载均衡器概览
  • springMvc学习笔记(2)
  • webpack+react项目初体验——记录我的webpack环境配置
  • web标准化(下)
  • 从重复到重用
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 前端代码风格自动化系列(二)之Commitlint
  • 算法-图和图算法
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • AI算硅基生命吗,为什么?
  • ​Linux·i2c驱动架构​
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)MFC+openGL单文档框架glFrame
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (论文阅读40-45)图像描述1
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)大道至简,职场上做人做事做管理
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .apk 成为历史!
  • .gitignore不生效的解决方案
  • .java 9 找不到符号_java找不到符号
  • .net 微服务 服务保护 自动重试 Polly
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段