Skip to content

Commit 821f35f

Browse files
committed
docs: add offline deployment document. #396
1 parent 49384da commit 821f35f

File tree

1 file changed

+192
-0
lines changed

1 file changed

+192
-0
lines changed
Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
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

Comments
 (0)