Skip to content

Commit 6432971

Browse files
committed
docs/rancher *: Add docs about deploy radondb mysql on rancher
1 parent 7d82b56 commit 6432971

10 files changed

+252
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ RadonDB MySQL Kubernetes supports deployment and management of RaodnDB MySQL clu
3434

3535
### Operator
3636

37-
- [Deploy RadonDB MySQL on Kubernetes](docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md)
37+
- [Deploy RadonDB MySQL on Kubernetes](/docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md)
38+
- [Deploy RadonDB MySQL on Rancher](/docs/rancher/deploy_radondb-mysql_operator_on_rancher.md)
3839

3940
## Roadmap
4041

README_zh.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ RadonDB MySQL Kubernetes支持在[Kubernetes](https://kubernetes.io)和[KubeSphe
3535
### Operator
3636

3737
- [在 Kubernetes 上部署 RadonDB MySQL 集群](docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md)
38+
- [在 Rancher 上部署 RadonDB MySQL 集群](/docs/rancher/deploy_radondb-mysql_operator_on_rancher.md)
3839

3940
## 路线图
4041

docs/rancher/_images/helm_options.png

134 KB
Loading

docs/rancher/_images/import_yaml.png

635 KB
Loading
241 KB
Loading
265 KB
Loading
Loading
470 KB
Loading

docs/rancher/_images/pod_running.png

1.01 MB
Loading
Lines changed: 249 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
Contents
2+
=============
3+
4+
* [在 Rancher 上部署 RadonDB MySQL 集群](#在-rancher-上部署-radondb-mysql-集群)
5+
* [简介](#简介)
6+
* [部署准备](#部署准备)
7+
* [部署步骤](#部署步骤)
8+
* [步骤 1:添加 Helm 仓库](#步骤-1-添加-helm-仓库)
9+
* [步骤 2:部署 Operator](#步骤-2-部署-operator)
10+
* [步骤 3:部署 RadonDB MySQL 集群](#步骤-3-部署-radondb-mysql-集群)
11+
* [部署校验](#部署校验)
12+
* [访问 RadonDB MySQL](#访问-radondb-mysql)
13+
* [配置](#配置)
14+
* [容器配置](#容器配置)
15+
* [节点配置](#节点配置)
16+
* [持久化配置](#持久化配置)
17+
18+
# 在 Rancher 上部署 RadonDB MySQL 集群(Operator)
19+
20+
## 简介
21+
22+
RadonDB MySQL 是一款基于 MySQL 的开源、高可用、云原生集群解决方案。支持一主多从高可用架构,并具备安全、自动备份、监控告警、自动扩容等全套管理功能。目前已经在生产环境中大规模的使用,包含**银行、保险、传统大企业**等。
23+
24+
RadonDB MySQL 支持在 Rancher 上安装部署和管理,自动执行与运行 RadonDB MySQL 集群有关的任务。
25+
26+
本教程主要演示如何在 Rancher 上部署 RadonDB MySQL Operator 和 RadonDB MySQL 集群。
27+
28+
## 部署准备
29+
30+
-[部署 Rancher 集群](https://rancher.com/docs/rancher/v2.6/en/quick-start-guide/deployment/quickstart-manual-setup/),并已获取 Rancher 管理控制台登录账号和密码。
31+
32+
## 部署步骤
33+
34+
### 步骤 1: 添加 Helm 仓库
35+
36+
1. 登录 Rancher 管理控制台。
37+
2. 点击目标集群,进入集群管理页面。
38+
3. 选择 **App&Marketplace** > **Repositories**,进入应用仓库管理页面。
39+
4. 点击 **Create**,配置 RadonDB MySQL 仓库。
40+
41+
-**Name**:自定义仓库名称。
42+
43+
-**Target**:可选择 http(s) 方式,配置 **Index URL**`https://radondb.github.io/radondb-mysql-kubernetes/`
44+
45+
5. 点击 **Create**,返回仓库管理页面。
46+
47+
当仓库 **State** 切换为 `Active`,则添加仓库正常运行。
48+
49+
### 步骤 2: 部署 Operator
50+
51+
一个 Rancher 集群仅需部署一次 RadonDB MySQL Operator。
52+
53+
1. 在集群管理页面,选择 **App&Marketplace** > **Charts**,进入 Charts 列表页面。
54+
2. 找到 **mysql-operator**,部署 Operator 页面。
55+
56+
可选择 mysql-operator Charts 版本。
57+
58+
![Charts](_images/mysql_operator_chart.png)
59+
60+
3. 点击 **Install**,配置应用基本信息。
61+
62+
可勾选自定义 Helm 选项。
63+
64+
![Metadata](_images/mysql_operator_metadata.png)
65+
66+
4. (可选)点击 **Next**,自定义编辑应用 YAML。
67+
68+
![Values](_images/mysql_operator_values.png)
69+
70+
5. 点击 **Next**,配置部署属性。
71+
72+
![Helm Options](_images/helm_options.png)
73+
74+
6. 点击 **Install**,跳转到 **Installed App** 管理页面。
75+
76+
可在列表下方窗口,查看安装进度和状态。当应用部署完成后,可在列表查看到已安装的应用。
77+
78+
### 步骤 3: 部署 RadonDB MySQL 集群
79+
80+
#### 通过命令方式
81+
82+
1. 在集群管理页面,点击右上角 Kubectl 命令图标。
83+
84+
![Kubectl 命令窗口](_images/kubectl_command.png)
85+
86+
2. 在命令窗口,输入创建集群命令。
87+
88+
如下示例为部署一个三节点的样例集群。
89+
90+
```shell
91+
# Run kubectl commands inside here
92+
# e.g. kubectl get all
93+
$ cat <<EOF | kubectl apply -f-
94+
apiVersion: mysql.radondb.com/v1alpha1
95+
kind: MysqlCluster
96+
metadata:
97+
name: sample
98+
spec:
99+
replicas: 3
100+
EOF
101+
```
102+
103+
3. 回车执行命令,回显提示 `created` 则部署成功。
104+
105+
预期回显信息示例:
106+
107+
```shell
108+
mysqlcluster.mysql.radondb.com/sample created
109+
```
110+
111+
#### 通过导入 YAML 方式
112+
113+
1. 下载 [RadonDB MySQL 集群配置样例](/config/samples/mysql_v1alpha1_mysqlcluster.yaml),修改 YAML 文件中配置参数值。
114+
115+
详细配置参数说明,请参见[配置](#配置)。
116+
117+
2. 在 Rancher 集群管理页面,点击右上角 YAML 导入图标。在弹出的窗口中,导入修改后的 YAML 文件。
118+
119+
![Import YAML](_images/import_yaml.png)
120+
121+
### 部署验证
122+
123+
1. 在集群管理页面,选择 **Service Discovery** > **Service**,进入服务列表页面。
124+
2. 找到部署的集群,查看服务状态。
125+
126+
状态为 `Active`,表示服务正常运行。
127+
128+
3. 点击服务名称,进入服务详情页面,查看 Pod 状态。
129+
130+
状态为 `Active`,表示 Pod 正常运行。
131+
132+
4. 在正在运行的 Pod 行,点击 Execute Shell,展开 Pod 命令窗口。
133+
134+
执行如下命令并输入密码,验证数据库连接状态。
135+
136+
```shell
137+
$ mysql -u root -p
138+
```
139+
140+
正常连接数据库回显信息如下图:
141+
142+
![Pod Running](_images/pod_running.png)
143+
144+
## 访问 RadonDB MySQL
145+
146+
> **注意**
147+
>
148+
> 准备可用于连接 MySQL 的客户端。
149+
150+
- 当客户端与数据库部署在不同 Rancher 集群,请[在 Rancher 中设置 Load Balancer 和 Ingress Controller](https://rancher.com/docs/rancher/v2.6/en/k8s-in-rancher/load-balancers-and-ingress/)。
151+
152+
更多访问不同集群中数据库方式说明,请参见 [Kubernetes 访问集群中的应用程序](https://kubernetes.io/zh/docs/tasks/access-application-cluster/)。
153+
154+
- 当客户端与数据库部署在同一 Rancher 集群内,可选择使用 `service_name` 或者 `clusterIP` 方式,访问 RadonDB MySQL。
155+
156+
> **说明**
157+
>
158+
> RadonDB MySQL 提供 leader 服务和 follower 服务用于分别访问主从节点。leader 服务始终指向主节点(读写),follower 服务始终指向从节点(只读)。
159+
160+
以下为客户端与数据库在同一 Rancher 集群内,访问 RadonDB MySQL 的方式。
161+
162+
### `service_name` 方式
163+
164+
* 连接 leader 服务(RadonDB MySQL 主节点)
165+
166+
```shell
167+
$ mysql -h <leader_service_name>.<namespace> -u <user_name> -p
168+
```
169+
170+
用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下:
171+
172+
```shell
173+
$ mysql -h sample-leader.default -u radondb_usr -p
174+
```
175+
176+
* 连接 follower 服务(RadonDB MySQL 从节点)
177+
178+
```shell
179+
$ mysql -h <follower_service_name>.<namespace> -u <user_name> -p
180+
```
181+
182+
用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下:
183+
184+
```shell
185+
$ mysql -h sample-follower.default -u radondb_usr -p
186+
```
187+
188+
### `clusterIP` 方式
189+
190+
RadonDB MySQL 的高可用读写 IP 指向 leader 服务的 `clusterIP`,高可用只读 IP 指向 follower 服务的 `clusterIP`
191+
192+
```shell
193+
$ mysql -h <clusterIP> -P <mysql_Port> -u <user_name> -p
194+
```
195+
196+
以下示例用户名为 `radondb_usr`, leader 服务的 clusterIP 为 `10.10.128.136` ,连接示例如下:
197+
198+
```shell
199+
$ mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p
200+
```
201+
202+
## 配置
203+
204+
### 容器配置
205+
206+
| 参数 | 描述 | 默认值 |
207+
| :--------------------------------- | :-------------------------- | :---------------------------------------------------------- |
208+
| MysqlVersion | MySQL 版本号 | 5.7 |
209+
| MysqlOpts.RootPassword | MySQL Root 用户密码 | "" |
210+
| MysqlOpts.User | 默认新建的 MySQL 用户名称 | radondb_usr |
211+
| MysqlOpts.Password | 默认新建的 MySQL 用户密码 | RadonDB@123 |
212+
| MysqlOpts.Database | 默认新建的 MySQL 数据库名称 | radondb |
213+
| MysqlOpts.InitTokuDB | 是否启用TokuDB | true |
214+
| MysqlOpts.MysqlConf | MySQL 配置 | - |
215+
| MysqlOpts.Resources | MySQL 容器配额 | 预留: cpu 100m, 内存 256Mi; </br> 限制: cpu 500m, 内存 1Gi |
216+
| XenonOpts.Image | xenon(高可用组件)镜像 | radondb/xenon:1.1.5-alpha |
217+
| XenonOpts.AdmitDefeatHearbeatCount | 允许的最大心跳检测失败次数 | 5 |
218+
| XenonOpts.ElectionTimeout | 选举超时时间(单位为毫秒) | 10000ms |
219+
| XenonOpts.Resources | xenon 容器配额 | 预留: cpu 50m, 内存 128Mi; </br> 限制: cpu 100m, 内存 256Mi |
220+
| MetricsOpts.Enabled | 是否启用 Metrics(监控)容器 | false |
221+
| MetricsOpts.Image | Metrics 容器镜像 | prom/mysqld-exporter:v0.12.1 |
222+
| MetricsOpts.Resources | Metrics 容器配额 | 预留: cpu 10m, 内存 32Mi; </br> 限制: cpu 100m, 内存 128Mi |
223+
224+
### 节点配置
225+
226+
| 参数 | 描述 | 默认值 |
227+
| :-------------------------- | :----------------------------------------------- | :------------------------ |
228+
| Replicas | 集群节点数,只允许为0、2、3、5 | 3 |
229+
| PodPolicy.ImagePullPolicy | 镜像拉取策略, 只允许为 Always/IfNotPresent/Never | IfNotPresent |
230+
| PodPolicy.Labels | 节点 pod [标签](https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/labels/)) | - |
231+
| PodPolicy.Annotations | 节点 pod [注解](https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/annotations/) | - |
232+
| PodPolicy.Affinity | 节点 pod [亲和性](https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/#%E4%BA%B2%E5%92%8C%E6%80%A7%E4%B8%8E%E5%8F%8D%E4%BA%B2%E5%92%8C%E6%80%A7) | - |
233+
| PodPolicy.PriorityClassName | 节点 pod [优先级](https://kubernetes.io/zh/docs/concepts/configuration/pod-priority-preemption/)对象名称 | - |
234+
| PodPolicy.Tolerations | 节点 pod [污点容忍度](https://kubernetes.io/zh/docs/concepts/scheduling-eviction/taint-and-toleration/)列表 | - |
235+
| PodPolicy.SchedulerName | 节点 pod [调度器](https://kubernetes.io/zh/docs/concepts/scheduling-eviction/kube-scheduler/)名称 | - |
236+
| PodPolicy.ExtraResources | 节点容器配额(除 MySQL 和 Xenon 之外的容器) | 预留: cpu 10m, 内存 32Mi |
237+
| PodPolicy.SidecarImage | Sidecar 镜像 | radondb/mysql-sidecar:latest |
238+
| PodPolicy.BusyboxImage | Busybox 镜像 | busybox:1.32 |
239+
| PodPolicy.SlowLogTail | 是否开启慢日志跟踪 | false |
240+
| PodPolicy.AuditLogTail | 是否开启审计日志跟踪 | false |
241+
242+
### 持久化配置
243+
244+
| 参数 | 描述 | 默认值 |
245+
| :----------------------- | :------------- | :------------ |
246+
| Persistence.Enabled | 是否启用持久化 | true |
247+
| Persistence.AccessModes | 存储卷访问模式 | ReadWriteOnce |
248+
| Persistence.StorageClass | 存储卷类型 | - |
249+
| Persistence.Size | 存储卷容量 | 10Gi |

0 commit comments

Comments
 (0)