云原生分布式数据库云平台技术选择

Part 1 - 云平台简介

 

浪潮云溪数据库云平台是由云溪数据库公司开发的针对特定的云溪数据库量身定做的数据库运维管理平台,其目的旨在于:提升用户对数据库部署操作的体验,为用户提供数据库原生自动部署、自动备份、自动容灾、数据恢复、监控、管理等全套解决方案。

浪潮云溪数据库云平台,通过运行提供的部署脚本,能够直接完成一键式部署。同时浪潮云溪数据库云平台提供了直观便捷的可视化界面,大部分的操作只需通过鼠标点击便可以完成,方便快捷,而且每个操作的结果可以通过界面的形式直观地展现在用户面前,让用户对自己的操作有实时的反馈;同时由于丰富的功能,该系统还适用于运维管理等专业人员,满足用户的专业人员查看、监测、部署、管理数据库的需求。

  • 技术:虚拟化技术,隔离资源

  • 趋势:内核技术保持稳定;分布式事务数据库建议支持基于多租户的资源隔离,以降低业务部署的风险和成本

  • 多租户目标:单个产品实例为多个用户提供服务,并且可按需使用资源,用户数据相互隔离

  • 发展过程:整合多个产品实例,统一运维;单产品实例为多个用户提供服务

 

Part 2 - 基本架构

 

 

Part 3 - 技术选择

 

目前解决分布式数据库的多租户隔离,有三种方案:物理隔离、虚拟机、容器。

1.物理隔离

即每个租户对应一组独立的服务器集群上,zcp管理多组服务器集群;用多组服务器来解决分布式数据库多租户隔离面临着比较严重的问题,多组服务器部署多租户最终问题就是实用性差,会造成服务器资源的浪费,部署起来也不是十分方便。所以首先排除物理隔离的方案。

2.虚拟机与容器

虚拟机就是带环境安装的一种解决方案,他可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。

虽然用户可以通过虚拟机还原软件的原始环境。但是如下缺点:

  • 资源占用多:虚拟机会独占一部分内存和硬盘空间。他运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有1MB,虚拟机却需要几百MB的内存才能运行。一个系统一般只支持几十个虚拟机。

  • 冗余步骤多:虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登陆。

  • 启动慢:启动系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行。 

而相较于虚拟机,容器则具有着如下显著优点:

  • 启动快:容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。

  • 资源占用少:容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。一个单机上支持上千个容器。

  • 体积小:容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。

3.Docker与Kubernetes

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除LXC,转而使用自行开发的 libcontainer,从1.11 开始,则进一步演进为使用 runC 和containerd。Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大地简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。

对于实现数据库多租户隔离,docker需要添加一种定义用户的方法,并将它们放在只允许对特定容器和卷进行操作的命名空间中,并限制允许突破容器的选项,如更改功能或任意安装来自主机的文件系统,Docker的企业产品UCP确实开始通过在对象上使用标签来添加这些功能,但目前来说docker实现多租户的方案还并不完善,而且可能需要通过改造底层代码去实现多租户的一个支持。

而k8s提供了 namespace 作为基础的资源隔离单位,还提供了基于 RBAC 的权限管理方式来实现多租户之间的隔离。

Docker

Kubernetes

 

Part 4 - 云溪数据库云平台的使用

 

1.概念介绍

 

2.基本流程

 

 

3.功能介绍

(1) 创建集群:

 

(2) 创建租户:

 

(3) 租户详情:

 

(4) 租户修改:

 

(5) 备份恢复:

 

(6) 性能趋势:

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/5148943/blog/5510278