ApeCloud MySQL 代理
开始之前
-
安装 KubeBlocks。
可以执行
kbcli playground init
安装 k3d 集群和 KubeBlocks。详情请参考在本地使用 KubeBlocks 或在云上使用 KubeBlocks。kbcli playground init
# 使用--version 指定版本
kbcli playground init --version='x.y.z'如果已经有 Kubernetes 集群,可以直接安装 KubeBlocks。
-
准备一个名为 mycluster 的 ApeCloud MySQL 集群版集群,用于演示如何为现有集群启用代理功能。详情请参考创建并连接到 MySQL 集群。
创建代理集群
建议使用 kbcli
创建 ApeCloud MySQL 代理集群。
- kubectl
- kbcli
-
添加 KubeBlocks 仓库。
helm repo add kubeblocks https://apecloud.github.io/helm-charts
-
查看仓库列表,确认 KubeBlocks 仓库是否已添加。
helm repo list
-
执行更新命令,确保您已安装最新版本。
helm repo update
-
安装 etcd,用于创建外部服务引用。
-
查看 etcd 的所有版本。
helm search repo kubeblocks/etcd --devel --versions
-
安装 etcd 引擎。
helm install etcd kubeblocks/etcd --version=v0.6.5
-
安装 etcd 集群。
helm install etcd-cluster kubeblocks/etcd-cluster
-
查看 etcd 集群状态,确保其处于
Running
状态。kubectl get cluster
>
NAME CLUSTER-DEFINITION VERSION TERMINATION-POLICY STATUS AGE
etcd-cluster etcd etcd-v3.5.6 Halt Running 10s -
查看 etcd 集群的服务地址。
kubectl get service
>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
etcd-cluster-etcd ClusterIP 10.110.23.89 <none> 2379/TCP 55s
etcd-cluster-etcd-headless ClusterIP None <none> 2379/TCP,2380/TCP,3501/TCP,50001/TCP 55s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13m您可以将服务地址组合起来,获取 endpoint。或者您可使用服务地址的 IP 作为连接地址。
以下为服务地址组合的示例。
etcd-cluster-etcd.default.svc.cluster.local:2379
-
-
创建 ApeCloud MySQL 代理集群。
-
查看 ApeCloud MySQL 代理集群可用版本。
helm search repo kubeblocks/apecloud-mysql --devel --versions
-
(可选)如果您在安装 KubeBlocks 时停用了
apecloud-mysql
引擎,可执行以下命令并指定版本,安装 ApeCloud MySQL 的集群定义(cluster definition)。如果您安装 KubeBlocks 时选用了默认设置,可跳过本步骤。helm install myproxy kubeblocks/apecloud-mysql --version=v0.9.0
-
创建 ApeCloud MySQL 代理集群。
helm install myproxy kubeblocks/apecloud-mysql-cluster --version=v0.9.0 --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
-
如果您只有一个节点可用于部署集群版,可在创建集群时将 extra.availabilityPolicy
设置为 none
。
helm install myproxy kubeblocks/apecloud-mysql-cluster --version=v0.9.0 --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379" --set extra.availabilityPolicy=none
-
查看集群状态。
kubectl get cluster
kubectl get pods您也可以进入 etcd 容器或 wesql-scale 容器内部,查看 wesql-scale 的配置或检查 etcd 服务的可用性。
etcdctl --endpoints=http://etcd-cluster-etcd.default.svc.cluster.local:2379 get /vitess --prefix --keys-only
-
启用 etcd 引擎,创建 etcd 集群。
-
安装并启用 etcd 引擎。etcd 引擎默认未安装,需安装后在进行后续操作。可参考使用引擎文档。
# 1. 查看是否已添加 KubeBlocks 引擎索引
kbcli addon index list
# 如果列表为空,请先添加索引
kbcli addon index add kubeblocks https://github.com/apecloud/block-index.git
# 2. 搜索 etcd 引擎
kbcli addon search etcd
# 3. 安装 etcd 引擎
kbcli addon install etcd --index kubeblocks --version 0.9.0
# 4. 启用 etcd 引擎
kbcli addon enable etcd
# 5. 确认 etcd 引擎是否已启用
kbcli addon list -
创建 etcd 集群。
kbcli cluster create myetcd --cluster-definition etcd
-
查看 etcd 服务状态。
kbcli cluster list myetcd
-
-
查看 etcd 服务地址或 etcd pod 地址。
kubectl get service
>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 85d
myetcd-etcd ClusterIP 10.101.227.143 <none> 2379/TCP 111s
myetcd-etcd-headless ClusterIP None <none> 2379/TCP,2380/TCP,3501/TCP,50001/TCP 111s -
创建 ApeCloud MySQL Proxy 集群。
helm repo add kubeblocks https://apecloud.github.io/helm-charts
helm install myproxy kubeblocks/apecloud-mysql-cluster --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379" -
查看集群状态。
kbcli get cluster
kbcli get pods您也可进入 etcd 或 者 wesql-scale 容器中查看wesql-scale 配置,或检查 etcd 服务可用性。
etcdctl --endpoints=http://etcd-cluster-etcd.default.svc.cluster.local:2379 get /vitess --prefix --keys-only
动态启用代理
ApeCloud MySQL 代理本质是一个数据库代理。通过设置 proxyEnabled=true
,可以将 ApeCloud MySQL 集群版切换为 ApeCloud MySQL 代理集群。
helm upgrade mycluster kubeblocks/apecloud-mysql-cluster --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
如需关闭代理,可执行以下命令。
helm upgrade mycluster kubeblocks/apecloud-mysql-cluster --set mode=raftGroup