Diamanti 如何解决容器化数据库部署的难题





0/5 (0投票)
Diamanti 让您能够更快、更轻松、更经济地在您的环境中部署容器化应用程序,同时将运营风险降至最低,并提供 24/7 的一流企业支持。
Docker 容器、Kubernetes 和云原生基础设施都为提高我们构建和部署应用程序的效率提供了重大的机会。然而,随着这些技术的优势而来的是额外的复杂性。在某些情况下,IT 团队可能会犹豫是否要利用下一代技术,因为他们担心这些技术太难部署、管理和扩展。
幸运的是,情况并非一定如此。虽然如果您选择自己设计和构建容器基础设施,那么设置和管理它无疑是具有挑战性的,但有一些解决方案可以显著简化这一过程。
Diamanti 让您能够更快、更轻松、更经济地在您的环境中部署容器化应用程序,同时将运营风险降至最低,并提供 24/7 的一流企业支持。
为了展示 Diamanti 裸金属容器平台(Diamanti Bare Metal Container Platform)的实际应用,本文将介绍如何使用 Diamanti 和 Kubernetes 部署一个容器化数据库。我们将首先讨论为什么使用传统方法这项任务会很困难。然后,我们将通过一些使用 Diamanti 裸金属容器平台执行此过程的简单示例。最后,我们将讨论 Diamanti 的方法与其它解决方案相比的优势,以及是什么让 Diamanti 脱颖而出。
当前挑战
假设我们是一家企业,并且我们正试图利用最新技术来现代化我们现有的基础设施。我们决定使用 Kubernetes 进行容器编排,而我们的第一个任务是在生产环境中部署容器化数据库。我们之前对 Kubernetes 容器编排一无所知。
在采取任何行动之前,我们必须经过一系列耗时的步骤和评估。在我们能够将它们组合成互联服务之前,有必要了解基本构建块是如何协同工作的,以及如何设计能够充分利用平台功能的系统。如下图所示,这个过程可能需要数周甚至数月的时间进行安装、集成和测试。
但有了 Diamanti 平台,我们有了一个更简化的流程,更适合那些希望以最小的运营努力突破市场的快速发展的企业。该流程的概述(如下图所示)被简化为绝对最少的必要步骤:与 Diamanti 联系并了解他们提供的服务,安装它,使用他们的 UI 仪表板或 CLI 工具运行应用程序,然后高枕无忧,因为您可以专注于满足您的业务需求并为客户提供价值。
现在,让我们逐步演示一下如何使用 Diamanti D10 裸金属容器平台和各种方法在 15 分钟内完成容器化数据库的部署。
使用 Diamanti 裸金属容器平台部署容器化数据库
使用 UI 仪表板
Diamanti 提供了一个完整且易于使用的 UI 仪表板,可以快速尝试各项功能,并显示有用的指标和健康报告以供后续分析。我们可以使用此仪表板安全地执行所有关键操作。让我们部署我们的第一个容器化数据库,看看它有多容易使用。我们将使用 UI 来部署一个 Redis 服务器。
- 导航到 Diamanti 集群的 IP 地址。您将被要求输入用户名和密码。
- 登录后,您将被重定向到主仪表板,您可以在其中查看集群的概览。
- 我们有兴趣创建一个新的部署,因此我们将单击创建按钮。我们应该会看到以下屏幕,可以在其中创建我们的第一个部署。
- 首先,我们选择部署类型,因为我们有兴趣将容器部署到集群。我们需要提供一个应用程序名称,所以我们输入redis。接下来,我们需要指定初始实例数,所以我们输入3以创建三个实例。我们可以选择默认的命名空间,也可以定义标签。现在,让我们添加一个用于角色类型缓存的标签。然后,单击下一步。
- 在下一个选项卡中,我们可以指定容器是否属于任何网络。这对于创建自定义网络拓扑或提供网络隔离以提高安全性的 VPC 网络非常有用。现在,我们不想定义新网络,因此我们将单击下一步。
- 在下一节中,我们可以通过创建新的存储声明来定义容器的存储需求。目前,我们希望容器仅用于内存存储,不进行持久化,因此我们将单击下一步。
- 最后,我们准备定义容器详细信息。我们需要给它一个名称;我们还需要指定镜像,所以我们输入redis以匹配官方 Docker Hub 上的Redis 镜像。我们指定一个开放的端口列表。我们分配一个端口6379,因为这是 Redis 的默认端口。我们还可以定义一些CPU和内存的使用限制。现在单击部署,然后单击右下角的事件图标。您将看到 Redis 的部署事件列表。
- 为了验证部署是否成功,请单击应用程序 -> 部署选项卡,并在列表中查看 Redis 部署的详细信息。
- 验证您是否可以连接到 Redis 服务器。打开命令行,并使用从应用程序部署详细信息中获得的 IP 地址连接到 Redis 服务器。
➜ redis-cli -h 172.16.223.9 172.16.223.9:6379>
- 现在我们已经连接到其中一个实例,我们还可以根据需要将它们扩展或缩减。我们可以使用列表中如下所示的按钮。
就是这样。如您所见,使用 UI,只需几个简单的步骤即可轻松地在集群中部署任何类型的容器。
使用 CLI 工具
命令行工具适用于日常操作和基础设施部署的更好自动化。与 UI 相比,它们提供了更全面的操作集。让我们尝试在我们的集群中部署一个 MariaDB 服务器。
- 首先,通过 UI 仪表板上的“下载”按钮下载用于管理集群的工具。
- 导航到您下载工具的文件夹。您需要使用 dctl 工具首先注册集群配置并登录到集群(如果您要使用 kubectl 工具,则需要类似的步骤)。
➜ dctl config set-cluster autotb5 --api-version v1 --virtual-ip 172.16.220.101 --server 172.16.220.101 --insecure Configuration written successfully ➜ dctl login --username <username> --password <password>
- 登录后,您可以探索 dctl 工具选项。例如,您可以显示与仪表板上相同信息的网络列表。
➜ dctl network list NAME TYPE START ADDRESS TOTAL USED GATEWAY VLAN NETWORK-GROUP ZONE blue public 172.16.224.11 240 3 172.16.224.1 224 default (default) public 172.16.223.4 250 8 172.16.223.1 223 ingress public 172.16.224.5 6 3 172.16.224.1 224
- 在此处的 MariaDB 部分下载 helm 包文件:https://github.com/helm/charts/tree/master/stable/mariadb
- 导航到您下载文件的文件夹,并使用 helm 工具安装 MariaDB chart。将其命名为 my-mariadb。
➜ helm install --name my-mariadb . NAME: my-mariadb LAST DEPLOYED: Sun Dec 30 21:00:33 2018 NAMESPACE: default STATUS: DEPLOYED RESOURCES: ==> v1/Secret NAME TYPE DATA AGE my-mariadb-mariadb Opaque 2 1s ...
- 现在您可以使用 helm list 命令查看集群中的部署列表。
➜ helm list NAME REVISION UPDATED STATUS CHART NAMESPACE haproxy-lb 1 Thu Dec 20 17:13:07 2018 DEPLOYED haproxy-ingress-2.0.2 ingress-controller mssql 1 Fri Dec 21 00:10:23 2018 DEPLOYED mssql-linux-0.6.5 mssql mssql2 1 Fri Dec 21 00:11:00 2018 DEPLOYED mssql-linux-0.6.5 mssql mssql3 1 Fri Dec 21 00:12:37 2018 DEPLOYED mssql-linux-0.6.5 mssql2 my-mariadb 1 Sun Dec 30 21:00:33 2018 DEPLOYED mariadb-5.2.5 default
- 您还可以使用 dctl event list 命令验证部署是否成功。
➜ dctl event list | grep my-mariadb 2m 2m 1 INFO default my-mariadb-mariadb f307e54f-0c75-11e9-a37d-a4bf01147eba StatefulSet statefulset-controller SuccessfulCreate create Pod my-mariadb-mariadb-0 in StatefulSet my-mariadb-mariadb successful 2m 2m 1 INFO default my-mariadb-mariadb f307e54f-0c75-11e9-a37d-a4bf01147eba StatefulSet statefulset-controller SuccessfulCreate create Claim data-my-mariadb-mariadb-0 Pod my-mariadb-mariadb-0 in StatefulSet my-mariadb-mariadb success ...
- 使用提供的 IP 地址测试服务器是否已启动并正在运行。
➜ mysql --host=172.16.223.9 --port=3306 -u <user> -p <pass> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.12 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
就是这样。您已经成功使用 Diamanti 部署了一个容器化数据库。
为什么这很重要?
在上面的教程中,我们看到了使用 Diamanti 平台部署容器化数据库有多么容易。但您可能想知道投资这项技术是否值得。
通常,当我们比较两种技术时,我们主要关注它们的显著差异,以便任何试图测试它们的人都能获得清晰的认识。在部署现有应用程序方面,如果您正在决定是使用云虚拟机上的经过认证的 Kubernetes 发行版,还是使用像 Diamanti 这样的裸金属容器化平台,以下关键因素表明后者更适合大规模运行高性能生产容器。
- 工具:两个平台都提供可用于管理容器基础设施的 UI。然而,在默认的 Kubernetes UI 的情况下,仍然缺少一些关键的 UI 组件,例如 RBAC 控件(有一个开放的问题)或 SNMP 监控。当前的企业客户将希望使用这些功能,而 Diamanti 平台默认提供这些功能。
- 性能:裸金属提供商在设计上提供了更好的资源整合和更好的基础来运行完整的 Kubernetes 集群。更小的占地面积意味着与虚拟机相比性能有所提升。开发人员体验甚至更好,因为我们可以在 15 分钟内部署应用程序,从而缩短了反馈周期。
- 网络:为 Kubernetes 添加网络层是实现这一目标的一个必要但棘手的步骤。有一些开源解决方案可以帮助处理细节问题,但需要大量的配置步骤。此外,这种软件定义网络有其明显的缺点,如开销增加和配置障碍。相反,有了 Diamanti,我们就没有这些问题,因为容器直接插入现有的 VLAN 和 DNS,并且每个容器都分配了一个 IP 地址。它通过结合标准和专用硬件来实现这一点,并消除了容器和操作系统之间的任何不必要的跳转。其结果是原生性能和简化的网络拓扑。
- 存储:根据文章“Kubernetes 生态系统状态”,存储是从业人员和企业面临的第三大挑战。关键在于提供一个方便的 API 来使用持久数据,而不是每次部署容器化应用程序或数据库时都从头开始创建。为满足未来需求而扩展此层应该同样容易。这在 Kubernetes 中并不明显或容易做到,因为在当前状态下,大多数外部存储解决方案与云规模环境不兼容。这对于 Diamanti 平台来说不是问题,因为持久层配备了现代 NVMe 块存储和一个简单的 API 来访问它。这满足了现代企业应用程序所需的低延迟、灵活性和易用性等所有要求。
- 服务质量 (QoS):除了网络和存储的独立职责外,Diamanti 还提供了对每个组件提供的服务质量 (QoS) 的更细粒度控制。这一点很重要,因为平衡关键服务和应用程序的工作负载可以降低资源饥渴的风险。例如,它可以控制每个 Pod、容器或卷上分配的带宽级别,并避免可能发生的任何瓶颈。这提供了保证的 QoS,允许数百万 IOPS,远高于市面上的任何竞争解决方案。
- 支持:Diamanti 平台提供全天候的端到端支持。目前,Kubernetes 生态系统中还有一个合作伙伴列表,它们提供程度不同的类似支持。
结论
在本文中,我们描述了部署一些容器化数据库的当前挑战,并通过一些易于遵循的示例介绍了如何使用 Diamanti 容器平台进行部署。
最后,我想强调一下,我写这篇文章是作为一个对 Kubernetes 及其生态系统了解有限的人。我用过 Kubernetes 一点点,但我不是 Kubernetes 专家;相反,我的大部分工作都与应用程序相关,而不是基础设施。尽管如此,Diamanti 裸金属容器平台让我能够在短短 15 分钟内轻松完成容器化数据库的部署。因此,它使我能够专注于我的应用程序,而无需担心底层基础设施。
如果您想了解 Diamanti 如何帮助您的业务更快、更经济、更轻松地扩展到云端,请立即预约演示。