ShardingSphere 云上实践:开箱即用的 ShardingSphere-Proxy 集群
本次 Apache ShardingSphere 5.1.2 版本更新为大家带来了三大全新功能,其中之一即为使用 ShardingSphere-Proxy chart 在云环境中快速部署一套 ShardingSphere-Proxy 集群,本篇将带大家详细了解该项功能。
一、背景和痛点
在云原生的环境下,一个应用可以在多个不同环境中进行批量的部署,使用原始的 yaml 进行重用,部署到新环境中也是困难重重。
可以看到,在进行 Kubernetes 软件部署时,我们面临下述问题:
如何管理,编辑和更新这些分散的 Kubernetes 应用配置文件?
如何把一套的相关配置文件作为一个应用进行管理?
如何分发和复用 Kubernetes 的应用配置?
在迁移 Apache ShardingSphere-Proxy 从 Docker 或者虚拟机到 Kubernetes 环境下,也存在上述这些问题。
由于 Apache ShardingSphere-Proxy 的灵活性特点,在一个集群中可能需要多个 Apache ShardingSphere-Proxy 副本。传统部署方式下,需要针对每一个副本进行单独的部署文件配置。没有版本化管理的部署方式,在升级过程中,也面临着不能快速回滚,影响应用稳定性的风险。
在现在的企业中,集群也不只是只有一个,在多集群中进行复用配置,并且保证生产和测试集群的配置保持一致,保证测试的正确性,也是没有版本化管理的传统部署方式面临的另一大难题之一。
二、设计目标
由于 Apache ShardingSphere-Proxy 首次官方正式支持在云上进行标准化部署,对于部署方式的考虑就变得尤为重要。需要考虑到用户的易用性,复用的便捷性,对后续版本的兼容性,在调研了 Kubernetes 现有的几种部署方式后,我们最终选择了使用 Helm 对 Apache ShardingSphere-Proxy 制作一个 chart 提供给用户,使其能够对 Apache ShardingSphere-Proxy 部署进行管理,使其能够版本化,可复用。
三、设计内容
Helm 管理名为 chart 的 Kubernetes 包的工具,Helm 可以做以下的事情:
从头开始创建新的 chart
将 chart 打包成归档(tgz)文件
与存储 chart 的仓库进行交互
在现有的 Kubernetes 集群中安装和卸载 chart
管理与 Helm 一起安装的 chart 的发布周期
使用 Helm 去构建 Apache ShardingSphere-Proxy 云上部署 chart,将大大简化用户在 Kubernetes 环境下部署的复杂度,并且可以使 Apache ShardingSphere-Proxy 在多个环境之间进行快速复制。
由于现阶段,Apache ShardingSphere-Proxy 的部署依赖注册中心,在 Apache ShardingSphere-Proxy chart 中也同时对 ZooKeeper 集群的部署进行支持,这样给用户提供了一个一站式、开箱即用的体验。只需要执行一条命令,即可在 Kubernetes 中部署一个带有治理节点的 Apache ShardingSphere-Proxy 集群,并且可以依托于 Kubernetes 的功能,对治理节点数据进行持久化。
四、实战指南
在 5.1.2 文档中提供了 quick start 使用默认的配置文件进行 Apache ShardingSphere-Proxy 集群部署,下面我们将使用源码进行安装,详细地对其中的配置进行说明并实战在 Kubernetes 集群中部署一个 Apache ShardingSphere-Proxy 集群。
环境准备
在部署之前,我们需要准备环境。Apache ShardingSphere-Proxy charts 需要以下环境:
Kubernetes 集群 1.18+
kubectl 1.18+
Helm 3.8.0+
以上需要在实战之前进行安装配置。
charts 源码准备
在仓库中下载 Apache ShardingSphere-Proxy charts:
helm repo add shardingsphere https://shardingsphere.apache.org/charts
helm pull shardingsphere/apache-shardingsphere-proxy
tar -zxvf apache-shardingsphere-proxy-1.1.0-chart.tgz
cd apache-shardingsphere-proxy
Apache ShardingSphere-Proxy charts 配置
配置 values.yaml 文件
将:
governance:
...
zookeeper:
replicaCount: 1
...
compute:
...
serverConfig: ""
改为:
governance:
...
zookeeper:
replicaCount: 3
...
compute:
...
serverConfig:
authority:
privilege:
type: ALL_PRIVILEGES_PERMITTED
users:
- password: root
user: root@%
mode:
overwrite: true
repository:
props:
maxRetries: 3
namespace: governance_ds
operationTimeoutMilliseconds: 5000
retryIntervalMilliseconds: 500
server-lists: "{{ printf \"%s-zookeeper.%s:2181\" .Release.Name .Release.Namespace }}"
timeToLiveSeconds: 600
type: ZooKeeper
type: Cluster
️:保持缩进
剩余配置请查看文档配置一项
安装 Apache ShardingSphere-Proxy & ZooKeeper 集群
现在的文件夹层级为:
helm
├── apache-shardingsphere-proxy
...
| |
│ └── values.yaml
└── apache-shardingsphere-proxy-1.1.0-chart.tgz
回到 helm 文件夹,进行安装 Apache ShardingSphere-Proxy & ZooKeeper 集群。
helm install shardingsphere-proxy apache-shardingsphere-proxy
在集群的 default 命名空间下,部署了 ZooKeeper & Apache ShardingSphere-Proxy 集群:

简单功能测试
使用 kubectl forward 进行本地调试:
kubectl port-forward service/shardingsphere-proxy-apache-shardingsphere-proxy 3307:3307
创建后端数据库 Database:

使用 MySQL client 进行连接并使用 DistSQL 添加数据源:
mysql -h 127.0.0.1 -P 3307 -uroot -proot

创建规则

写入数据,查询结果


升级
使用 Helm 可以快速对 Apache ShardingSphere-Proxy 进行升级。
helm upgrade shardingsphere-proxy apache-shardingsphere-proxy

回滚
如果升级过程中出错,可以使用 helm rollback 命令对已经升级的 release 进行快速回滚。
helm rollback shardingsphere-proxy

清理
在体验完成后,可以使用 helm uninstall 命令对 release 快速进行清理:
helm uninstall shardingsphere-proxy
Helm 安装的资源将被全部删除。


五、结语
使用 Apache ShardingSphere-Proxy charts 可以在 Kubernetes 集群中快速部署一套 Apache ShardingSphere-Proxy 集群进行使用,简化了运维人员在迁移 Apache ShardingSphere-Proxy 至 Kubernetes 环境下复杂的配置 yaml 的过程。加上了版本化管理后,可以轻松的对 Apache ShardingSphere-Proxy 集群进行部署、升级、回归和清理。未来我们还会对 Apache ShardingSphere-Proxy chart 进行继续迭代和完善,欢迎大家持续关注。
欢迎点击链接,了解更多内容:
Apache ShardingSphere 官网:https://shardingsphere.apache.org/
Apache ShardingSphere GitHub 地址:https://github.com/apache/shardingsphere
SphereEx 官网:https://www.sphere-ex.com
欢迎添加社区经理微信(ss_assistant_1)加入交流群,与众多 ShardingSphere 爱好者一同交流。
ShardingSphere 云上实践:开箱即用的 ShardingSphere-Proxy 集群的更多相关文章
- 云计算之路-阿里云上:节点 CPU 波动引发 docker swarm 集群故障
非常抱歉,今天 10:05-10:20 左右,我们用阿里云服务器搭建的 docker swarm 集群又出现故障,又是因为突然的节点 CPU 波动. 受这次故障影响的站点有 闪存,博问,班级,园子,短 ...
- 云计算之路-阿里云上:重启 manager 节点引发 docker swarm 集群宕机
为了迎接春节假期后的访问高峰,我们今天对 docker swarm 集群进行了变更操作,购买了1台阿里云4核8G的服务器作为 worker 节点,由原来的 3 manager nodes + 2 w ...
- 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器?
探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 探针配置失误,线上容器应用异常死锁后,kubernetes集群未及时响应自愈重启容器? 线上多个服务应用陷入了死 ...
- 用更云原生的方式做诊断|大规模 K8s 集群诊断利器深度解析
背景 通常而言,集群的稳定性决定了一个平台的服务质量以及对外口碑,当一个平台管理了相当规模数量的 Kubernetes 集群之后,在稳定性这件事上也许会"稍显被动". 我们可能经常 ...
- 在Centos 7上安装配置 Apche Kafka 分布式消息系统集群
Apache Kafka是一种颇受欢迎的分布式消息代理系统,旨在有效地处理大量的实时数据.Kafka集群不仅具有高度可扩展性和容错性,而且与其他消息代理(如ActiveMQ和RabbitMQ)相比,还 ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...
- Win10上的Docker应用:Kubernetes(容器集群)
阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) Docker应用:Kubernetes(容器集群) 前言: 终于出第三篇了,上个月就已 ...
- 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移?
前言 先抛一个问题给我聪明的读者,如果你们使用微服务SpringCloud-Netflix进行业务开发,那么线上注册中心肯定也是用了集群部署,问题来了: 你了解Eureka注册中心集群如何实现客户端请 ...
- 华为云:实现高可用的负载均衡web集群
华为云: 2台云主机做负载均衡调度 >>申请一个虚拟浮动ip,并绑定一个弹性公网ip >>将两台云主机绑定到虚拟浮动ip上 3台web服务器 1台云服务器做jumpserver ...
随机推荐
- 企业应用架构研究系列二十八:身份认证 Beginning Out With IdentityServer4
在.Netcore 技术栈中,一直在使用了开源组件IdentityService4进行身份管理,其功能的强大和易用性的确很受开发者喜欢,但是最近其开源组织Duende Software 开始对其进行商 ...
- SpringBoot项目刚刚创建就报异常,Failed to configure a DataSource: 'url' attribute is not specified and no embedded 的解决办法
错误信息: Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedde ...
- MeteoInfo-Java解析与绘图教程(八)_java解析卫星FY-4A一级产品文件(HDF举例)
MeteoInfo-Java解析与绘图教程(八)_java解析卫星一级产品文件(HDF举例) 最近解析卫星数据遇到了一级产品,它的解析方式与之前文章说的有些不同,特此补充一下 卫星的一级产品,里面是没 ...
- python爬取快手小姐姐视频
流程分析 一.导入需要的三方库 import re #正则表表达式文字匹配 import requests #指定url,获取网页数据 import json #转化json格式 import os ...
- linux的简介与安装
linux简介: https://www.cnblogs.com/pyyu/p/9277153.html Linux就是个操作系统:它和Windows XP.Windows7.8.10什么的一样就是一 ...
- GET 与 POST 其实没有什么区别
GET 与 POST 其实没有什么区别 本文写于 2020 年 12 月 30 日 GET 与 POST 是两种 HTTP 方法,并且是最常用的两种. 今天在使用 Postman 测试 api 的时候 ...
- linux篇-linux修改网卡名(亲测有效)
1查看网卡ip addr 2cd /etc/sysconfig/network-scripts Ls查看 3mv ifcfg-eno16777736 ifcfg-eth0重命名,然后编辑 最后一行加入 ...
- 以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone
学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计圆锥类 Cone 代码示例: import java.util.Scanner; class Point4{ private dou ...
- mysql配置与存储引擎与字段类型与约束条件
目录 字符编码与配置文件 存储引擎 创建表的完整语法 字段类型 整型 浮点型 字符类型 数字的含义 枚举与集合 日期类型 约束条件 字符编码与配置文件 在MySQL5.X系列中,显示的字符编码有多种, ...
- CoaXPress 线缆和接插件的设计要求
本文的原理部分内容不仅适用于CoaXPress 协议,也同样适用于其它高速信号传输情形.在高速.低干扰信号传输时,线缆和接插件的选取是非常讲究的,我们在实际应用中经常会遇到线缆原因.阻抗匹配原因导致的 ...