使用 DCHQ 的基于 Docker 的 Couchbase 集群的端到端自动化

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观


背景

容器化企业应用程序仍然是一个挑战,主要是因为现有的应用程序组合框架没有解决复杂的依赖关系、外部集成或配置后自动扩展工作流。 DCHQ 提供托管和本地版本,解决了所有这些挑战并通过先进的应用程序组合框架简化了企业应用程序的容器化,该框架扩展了 Docker Compose 与跨图像环境变量绑定,可扩展的 BASH 脚本插件可以是在请求时或配置后调用,以及应用程序集群以实现跨多个主机或区域的高可用性,并支持自动缩放。供应应用程序后,用户可以监控正在运行的容器的 CPU、内存和 I/O,获取通知和警报,并访问计划的备份、缩减/缩减策略和持续交付。在这篇博客中,我们将介绍 Couchbase 集群的端到端自动化。 DCHQ 不仅实现了应用程序部署的自动化,而且还与 12 种不同的云集成,通过软件定义的网络自动配置和自动扩展集群。我们将涵盖:

  • 为 Couchbase 集群构建可在任何地方运行的任何 Linux 主机上重复使用的应用程序模板
  • 在任何云上配置和自动扩展底层基础设施(本博客中以 Rackspace 为例)
  • 在 Rackspace 云服务器上部署 Couchbase 集群
  • 监控正在运行的容器的 CPU、内存和 I/O
  • 通过添加额外的服务器节点横向扩展 Couchbase 集群

为 Couchbase 集群构建应用程序模板

一旦登录到 DCHQ(托管的 DCHQ.io 或本地版本),用户可以导航到“管理”>“模板”,然后单击“+”按钮创建一个新的 Docker Compose 模板。我们已经使用来自 Docker Hub for Couchbase 的官方镜像创建了一个应用程序模板。尽管 Couchbase 的架构没有主次节点——但是为了简化模板,我们有两个入口:

  • Couchbase-Primary——这将是我们将在其上初始化集群并添加其他服务器节点的容器
  • Couchbase-Server – 这将用于可以根据参数“cluster_size”进行缩放的服务器节点

您会注意到 Couchbase-Primary 正在调用执行以下操作的 BASH 脚本插件:

  • 使用“cluster-init”初始化集群
  • 使用“bucket-create”添加一个新的桶
  • 使用“server-add”将其他服务器节点添加到集群
  • 最后,使用“rebalance”重新平衡负载

您会注意到 Couchbase-Server 中使用的 cluster_size 参数允许您指定要启动的容器数量(具有相同的应用程序依赖性)。此外,用户可以通过引用另一个图像的环境变量来创建跨图像环境变量绑定。在这种情况下,我们做了几个绑定——包括 SERVER_IP={{Couchbase-Server | container_private_ip}} – 其中集群中服务器节点的容器 IP 在请求时动态解析,并用于配置 Couchbase 集群。以下是支持的环境变量值列表:

  • {{字母数字 | 8}} – 创建一个随机的 8 字符字母数字字符串。这对于创建随机密码最有用。
  • {{<图像名称> | ip}} – 允许您输入容器的主机 IP 地址作为环境变量的值。这对于允许中间件层与数据库建立连接最有用。
  • {{<图像名称> | container_ip}} – 允许您输入容器的内部 IP 作为环境变量的值。这对于允许中间件层与数据库建立安全连接(不暴露数据库端口)最为有用。
  • {{<图像名称> | port _<Port Number>}} – 允许您输入容器的端口号作为环境变量的值。这对于允许中间件层与数据库建立连接最有用。在这种情况下,指定的端口号需要是内部端口号——即不是分配给容器的外部端口。例如,{{PostgreSQL | port_5432}} 将被转换为允许中间件层与数据库建立连接的实际外部端口。
  • {{<图像名称> | <Environment Variable Name>}} – 允许您将图像环境变量的值输入到另一个图像的环境变量中。这里的用例是无穷无尽的——因为大多数多层应用程序都具有跨图像依赖性。

在任何云上配置和自动扩展底层基础设施

保存应用程序后,用户可以注册云提供商以在 12 个不同的云端点上自动配置和自动扩展集群,包括 OpenStack、CloudStack、Amazon Web Services、Rackspace、Microsoft Azure、DigitalOcean、HP Public Cloud、 IBM SoftLayer、Google Compute Engine 等。首先,用户可以通过导航到 Manage > Repo & Cloud Provider 然后单击 + 按钮选择 Rackspace 来为 Rackspace(例如)注册一个 Cloud Provider。需要提供 Rackspace API 密钥——可以从 Rackspace 云控制面板的“帐户设置”部分检索。然后,用户可以创建一个具有自动扩展策略的集群,以自动启动新的云服务器。这可以通过导航到“管理”>“集群”页面然后单击 + 按钮来完成。您可以选择基于容量的放置策略,然后将 Weave 作为网络层,以促进集群内多个主机之间安全、受密码保护的跨容器通信。此示例中的自动缩放策略将 VM(或云服务器)的最大数量设置为 10。

用户现在可以通过导航到“管理”>“裸机服务器和虚拟机”,然后单击“+”按钮选择 Rackspace,在新创建的集群上配置多个云服务器。选择云提供商后,用户可以选择所需的区域、大小和图像。然后选择数据中心(或集群)并指定云服务器的数量。

在 Rackspace 云服务器上部署 Couchbase 集群

一旦配置了云服务器,用户就可以在新的云服务器上部署 Couchbase 集群。这可以通过导航到自助服务库然后单击自定义来请求多层应用程序来完成。用户可以选择环境标签(如 DEV 或 QE)和在单击运行之前创建的 Rackspace 集群。

监控正在运行的容器的 CPU、内存和 I/O 利用率

应用程序启动并运行后,用户可以监控正在运行的容器的 CPU、内存和 I/O,以便在这些指标超过预定义阈值时收到警报。当我们的开发人员执行功能和负载测试时,这尤其有用。用户可以执行历史监控分析并将问题关联到容器更新或构建部署。这可以通过单击正在运行的应用程序的“操作”菜单,然后单击“监视”来完成。可以选择自定义日期范围来查看历史 CPU、内存和 I/O。

通过添加额外的服务器节点横向扩展 Couchbase 集群

用户可以扩展 Couchbase 集群以满足不断增加的负载。此外,用户可以安排在工作时间扩展,例如在周末安排扩展。要将集群从 1 扩展到 2,用户可以单击正在运行的应用程序的 Actions 菜单,然后选择 Scale Out。然后用户可以指定集群的新大小,然后单击立即运行。然后,我们使用 BASH 插件使用“server-add”命令将新服务器节点添加到集群中。这个 BASH 脚本插件的美妙之处在于您不需要复制和粘贴新的 IP——它们都是动态解析的。还可以安排 BASH 脚本插件以适应用例,例如以定义的频率清理日志或更新配置。应用程序时间线可用于跟踪对应用程序所做的每个更改以进行审核和诊断。要在正在运行的容器上执行插件,用户可以单击正在运行的应用程序的操作菜单,然后选择插件。然后用户可以选择 Couchbase-Primary 容器并搜索需要执行的插件。该插件的默认参数将动态解析正在运行的 Couchbase 服务器的所有容器 IP,并将它们添加到集群中。

应用程序时间线可用于跟踪对应用程序所做的每个更改以进行审核和诊断。这可以从正在运行的应用程序页面底部的可扩展菜单中访问。当容器或主机关闭或主机或容器的 CPU 和内存利用率超过定义的阈值时,警报和通知可用。

结论

容器化企业应用程序仍然是一个挑战,主要是因为现有的应用程序组合框架没有解决复杂的依赖关系、外部集成或配置后自动扩展工作流。 DCHQ 提供托管和本地版本,解决了所有这些挑战并通过先进的应用程序组合框架简化了企业应用程序的容器化,该框架扩展了 Docker Compose 与跨图像环境变量绑定,可扩展的 BASH 脚本插件可以是在请求时或配置后调用,以及应用程序集群以实现跨多个主机或区域的高可用性,并支持自动缩放。在 http://DCHQ.io 免费注册以访问此 Couchbase 集群应用程序模板以及应用程序生命周期管理功能,如监控、容器更新、扩展/扩展和持续交付。