|
| 1 | +Contents |
| 2 | + |
| 3 | +- [在 Kubernetes 上离线部署 RadonDB MySQL 集群](#在-kubernetes-上离线部署-radondb-mysql-集群) |
| 4 | + - [简介](#简介) |
| 5 | + - [部署准备](#部署准备) |
| 6 | + - [部署步骤](#部署步骤) |
| 7 | + - [步骤 1: 准备部署资源](#步骤-1-准备部署资源) |
| 8 | + - [步骤 2: 部署 Operator](#步骤-2-部署-operator) |
| 9 | + - [步骤 3: 部署 RadonDB MySQL 集群](#步骤-3-部署-radondb-mysql-集群) |
| 10 | + - [部署校验](#部署校验) |
| 11 | + - [校验 RadonDB MySQL Operator](#校验-radondb-mysql-operator) |
| 12 | + - [校验 RadonDB MySQL 集群](#校验-radondb-mysql-集群) |
| 13 | + - [访问 RadonDB MySQL](#访问-radondb-mysql) |
| 14 | + - [`service_name` 方式](#service_name-方式) |
| 15 | + - [`clusterIP` 方式](#clusterip-方式) |
| 16 | + - [卸载](#卸载) |
| 17 | + - [卸载 Operator](#卸载-operator) |
| 18 | + - [卸载 RadonDB MySQL](#卸载-radondb-mysql) |
| 19 | + - [卸载自定义资源](#卸载自定义资源) |
| 20 | + |
| 21 | +# 在 Kubernetes 上离线部署 RadonDB MySQL 集群 |
| 22 | + |
| 23 | +## 简介 |
| 24 | + |
| 25 | +RadonDB MySQL 是一款基于 MySQL 的开源、高可用、云原生集群解决方案。支持一主多从高可用架构,并具备安全、自动备份、监控告警、自动扩容等全套管理功能。目前已经在生产环境中大规模的使用,包含**银行、保险、传统大企业**等。 |
| 26 | + |
| 27 | +RadonDB MySQL 支持在 Kubernetes 上安装部署和管理,自动执行与运行 RadonDB MySQL 集群有关的任务。 |
| 28 | + |
| 29 | +本教程主要演示如何在 Kubernetes 上离线部署 RadonDB MySQL 集群(Operator)。 |
| 30 | + |
| 31 | +## 部署准备 |
| 32 | + |
| 33 | +- 已准备可用 Kubernetes 集群。 |
| 34 | + |
| 35 | +## 部署步骤 |
| 36 | + |
| 37 | +### 步骤 1: 准备部署资源 |
| 38 | + |
| 39 | +```shell |
| 40 | +## 下载离线部署资源 |
| 41 | +wget https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/radondb-mysql-resources.tar.gz |
| 42 | + |
| 43 | +## 解压 |
| 44 | +tar -xvzf radondb-mysql-resources.tar.gz |
| 45 | + |
| 46 | +## 导入镜像(需要在每个运行数据库的 worker 上执行) |
| 47 | +ls radondb-mysql-resources/images/*.tar|awk '{print $NF}'|sed -r 's#(.*)#sudo docker load -i \1#' |bash |
| 48 | +``` |
| 49 | + |
| 50 | +### 步骤 2: 部署 Operator |
| 51 | + |
| 52 | +以下指定 release 名为 `demo` , 创建一个名为 `demo-mysql-operator` 的 [Deployment](https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/)。 |
| 53 | + |
| 54 | +``` |
| 55 | +helm install demo radondb-mysql-resources/operator-chart . |
| 56 | +``` |
| 57 | + |
| 58 | +> **说明** |
| 59 | +> |
| 60 | +> 在这一步骤中默认将同时创建集群所需的 [CRD](https://kubernetes.io/zh/docs/concepts/extend-kubernetes/api-extension/custom-resources/)。 |
| 61 | +
|
| 62 | +### 步骤 3: 部署 RadonDB MySQL 集群 |
| 63 | + |
| 64 | +执行以下指令,以默认参数为 CRD `mysqlclusters.mysql.radondb.com` 创建一个实例,即创建 RadonDB MySQL 集群。您可参见[配置参数](./config_para.md)说明,自定义集群部署参数。 |
| 65 | + |
| 66 | +```kubectl |
| 67 | +kubectl apply -f radondb-mysql-resources/cluster-sample/mysql_v1alpha1_mysqlcluster.yaml |
| 68 | +``` |
| 69 | + |
| 70 | +## 部署校验 |
| 71 | + |
| 72 | +### 校验 RadonDB MySQL Operator |
| 73 | + |
| 74 | +查看 `demo` 的 Deployment 和对应监控服务,回显如下信息则部署成功。 |
| 75 | + |
| 76 | +```kubectl |
| 77 | +$ kubectl get deployment,svc |
| 78 | +NAME READY UP-TO-DATE AVAILABLE AGE |
| 79 | +demo-mysql-operator 1/1 1 1 7h50m |
| 80 | +
|
| 81 | +
|
| 82 | +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
| 83 | +service/mysql-operator-metrics ClusterIP 10.96.142.22 <none> 8443/TCP 8h |
| 84 | +``` |
| 85 | + |
| 86 | +### 校验 RadonDB MySQL 集群 |
| 87 | + |
| 88 | +执行如下命令,将查看到如下 CRD。 |
| 89 | + |
| 90 | +```kubectl |
| 91 | +$ kubectl get crd | grep mysql.radondb.com |
| 92 | +backups.mysql.radondb.com 2021-11-02T07:00:01Z |
| 93 | +mysqlclusters.mysql.radondb.com 2021-11-02T07:00:01Z |
| 94 | +mysqlusers.mysql.radondb.com 2021-11-02T07:00:01Z |
| 95 | +``` |
| 96 | + |
| 97 | +以默认部署为例,执行如下命令将查看到名为 `sample-mysql` 的三节点 RadonDB MySQL 集群及用于访问节点的服务。 |
| 98 | + |
| 99 | +```kubectl |
| 100 | +$ kubectl get statefulset,svc |
| 101 | +NAME READY AGE |
| 102 | +sample-mysql 3/3 7h33m |
| 103 | +
|
| 104 | +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE |
| 105 | +service/sample-follower ClusterIP 10.96.131.84 <none> 3306/TCP 7h37m |
| 106 | +service/sample-leader ClusterIP 10.96.111.214 <none> 3306/TCP 7h37m |
| 107 | +service/sample-mysql ClusterIP None <none> 3306/TCP 7h37m |
| 108 | +``` |
| 109 | + |
| 110 | +## 访问 RadonDB MySQL |
| 111 | + |
| 112 | +> **注意** |
| 113 | +> |
| 114 | +> 准备可用于连接 MySQL 的客户端。 |
| 115 | +
|
| 116 | +- 当客户端的与数据库部署在不同 Kubernetes 集群,请参考 [Kubernetes 访问集群中的应用程序](https://kubernetes.io/zh/docs/tasks/access-application-cluster/),配置端口转发、负载均衡等连接方式。 |
| 117 | + |
| 118 | +- 在 Kubernetes 集群内,支持使用 `service_name` 或者 `clusterIP` 方式,访问 RadonDB MySQL。 |
| 119 | + |
| 120 | + > **说明** |
| 121 | + > |
| 122 | + > RadonDB MySQL 提供 leader 服务和 follower 服务用于分别访问主从节点。leader 服务始终指向主节点(读写),follower 服务始终指向从节点(只读)。 |
| 123 | + |
| 124 | + |
| 125 | +以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式。 |
| 126 | + |
| 127 | +### `service_name` 方式 |
| 128 | + |
| 129 | +- 连接 leader 服务(RadonDB MySQL 主节点) |
| 130 | + |
| 131 | + ```shell |
| 132 | + mysql -h <leader_service_name>.<namespace> -u <user_name> -p |
| 133 | + ``` |
| 134 | + |
| 135 | + 用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下: |
| 136 | + |
| 137 | + ```shell |
| 138 | + mysql -h sample-leader.default -u radondb_usr -p |
| 139 | + ``` |
| 140 | + |
| 141 | +- 连接 follower 服务(RadonDB MySQL 从节点) |
| 142 | + |
| 143 | + ```shell |
| 144 | + mysql -h <follower_service_name>.<namespace> -u <user_name> -p |
| 145 | + ``` |
| 146 | + |
| 147 | + 用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下: |
| 148 | + |
| 149 | + ```shell |
| 150 | + mysql -h sample-follower.default -u radondb_usr -p |
| 151 | + ``` |
| 152 | + |
| 153 | + |
| 154 | +### `clusterIP` 方式 |
| 155 | + |
| 156 | +RadonDB MySQL 的高可用读写 IP 指向 leader 服务的 `clusterIP`,高可用只读 IP 指向 follower 服务的 `clusterIP`。 |
| 157 | + |
| 158 | +```shell |
| 159 | +mysql -h <clusterIP> -P <mysql_Port> -u <user_name> -p |
| 160 | +``` |
| 161 | + |
| 162 | +以下示例用户名为 `radondb_usr`, leader 服务的 clusterIP 为 `10.10.128.136` ,连接示例如下: |
| 163 | + |
| 164 | +```shell |
| 165 | +mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p |
| 166 | +``` |
| 167 | + |
| 168 | +## 卸载 |
| 169 | + |
| 170 | +### 卸载 Operator |
| 171 | + |
| 172 | +卸载当前命名空间下 release 名为 `demo` 的 RadonDB MySQL Operator。 |
| 173 | + |
| 174 | +```shell |
| 175 | +helm delete demo |
| 176 | +``` |
| 177 | + |
| 178 | +### 卸载 RadonDB MySQL |
| 179 | + |
| 180 | +卸载 release 名为 `sample` RadonDB MySQL 集群。 |
| 181 | + |
| 182 | +```kubectl |
| 183 | +kubectl delete mysqlclusters.mysql.radondb.com sample |
| 184 | +``` |
| 185 | + |
| 186 | +### 卸载自定义资源 |
| 187 | + |
| 188 | +```kubectl |
| 189 | +kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com |
| 190 | +kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlusers.mysql.radondb.com |
| 191 | +kubectl delete customresourcedefinitions.apiextensions.k8s.io backups.mysql.radondb.com |
| 192 | +``` |
0 commit comments