Joe
by Joe Leslie

在Docker中运行Nuodb - 第2部分:扩展,连续可用性和视觉监控

扩展,持续可用性和视觉监控的演示

以刻度和连续可用性运行SQL事务

在我的码头博客中的第一个诺贝布中,我概述了如何 在Docker容器中部署Nuodb数据库。跟进那个,让我们把nuodb放在测试中。里程将根据所使用的可用计算和磁盘存储而有所不同,但即使是 社区版本 在一个主机上,将展示Nuodb的OLTP性能功能。如果您想要一个完整的演示或想要在环境中使用我们的企业版在您的环境中进行自己的PoC测试,只是 联系我们

对于使用NOODB Community Edition(CE)的演示,请按照说明进行操作 Docker.(第I部分)博客 要在单个主机上启动Docker中的Nuodb数据库:

  • 1管理程序
  • 1存储管理器(SM)
  • 1交易引擎(TE)。

通过执行以下命令确认数据库正在运行:

$ docker exec -it nuoadmin-1 nuocmd show domain
server version: 4.0.4-2-019a14f800, server license: Community
server time: 2019-09-11T20:01:16.959, client token:
7d1101146e2dda772ca6dddbdbad8808e60e167a
Servers:
  [nuoadmin1] nuoadmin1:48005 (LEADER, Leader=nuoadmin1) ACTIVE:Connected *
Databases:
    test [RUNNING]
      [SM] test-sm-1/172.18.0.3:48006 (Default) [sid = 0] [server = nuoadmin1] MONITORED:RUNNING
      [TE] test-te-1/172.18.0.4:48006 (Default) [sid = 1] [server = nuoadmin1] MONITORED:RUNNING

接下来,我们需要安装:

  1. 一种视觉监控工具。对于监控,我们将使用我们自己的 NOODB见解.
  2. SQL工作负载发生器。对于SQL工作负载发生器,我们将使用 YCSB.,雅虎云服务基准工具。 

第1步:安装Nuodb Insights

Nuodb Insights的使用是可选的,但强烈推荐。 NOODB Insights将收集时间序列性能度量数据,并在本地存储,然后从Nuodb Insights Visual Dashboard提供,以便分析。要在Docker上安装Nuodb Insights,请按照Nuodb Github存储库中提供的逐步说明进行操作 使用Docker运行手动设置Docker.

一旦建立了Nuodb Insights组件,可以通过导航到Nuodb Insights - Nuodb Ops系统概述位于URL的仪表板中的Web浏览器中可视化Nuodb性能数据   

http://<hostgrafana>:3000 / D / 000000004 / NUODB-OPS-System-ovsive

在哪里<hostgrafana>是Grafana服务器已启动的主机。 grafana中的默认用户名和密码是admin / admin。

第2步:安装并启动YCSB SQL工作负载基准测试工具

第一个命令将需要20秒左右的时间来将图像拉到本地Docker Repo中。

docker pull nuodb/ycsb:latest
  docker run -dit --name ycsb1 \
      --hostname ycsb1 \
      --network nuodb-net \
      --env PEER_ADDRESS=nuoadmin1 \
      --env DB_NAME=test \
      --env DB_USER=dba \
      --env DB_PASSWORD=goalie \
      nuodb/ycsb:latest /driver/startup.sh

默认情况下,YCSB容器将与数据库创建10个连接,每个连接将运行10k SQL语句,其中包含95%读取的混合和5%更新,然后断开连接,然后启动新连接,然后启动新连接,然后启动新连接,依此类推。

扩展事务吞吐量

在下面的示例中,在带有单个SSD驱动器的MacBook上,使用单个Nuodb TE和单个YCSB应用程序运行,NuodB正在处理4K SQL TPS,TE在Nuodb Insights报告的CPU中运行约40%CPU。

关于MacBook的Nuodb Insights

接下来,通过运行添加更多YCSB应用程序(将加倍SQL Workload),

docker run -dit --name ycsb2 \
    --hostname ycsb2 \
    --network nuodb-net \
    --env PEER_ADDRESS=nuoadmin1 \
    --env DB_NAME=test \
    --env DB_USER=dba \
    --env DB_PASSWORD=goalie \
    nuodb/ycsb:latest /driver/startup.sh

要匹配YCSB工作负载增加,请添加一个Nuodb TE以通过运行增加Nuodb事务吞吐量, 

docker run -d --name test-te-2 \
    --hostname test-te-2 \
    --network nuodb-net \
    nuodb/nuodb-ce:latest nuodocker \
        --api-server nuoadmin1:8888 \
        start te --db-name test \
                  --server-id nuoadmin1 \
                  --labels "te te2"

在这里,我们了解到我们的单机实际上是磁盘I / O绑定,并且随着一个TE,我们已经到达了4K的MAX SQL TPS为此配置,但洞察显示了两种TES现在同样处理YCSB SQL工作负载,2000 SQL TPS每个。

平衡YCSB工作量

我们在使用EBS存储的两个可用区域中在单个AWS区域中运行相同的基准,在两个可用区域中使用EBS存储并缩放了YCSB示例应用程序和NOODB TES,以实现高达60k YCSB工作负载“B”TPS持续!

笔记: 在这些示例中,每个SQL事务是单个SQL语句。

持续可用性

最后,为了向Nuodb对失败事件和Nuodb的连续可用性进行弹性,请继续并删除运行的事务引擎(TE)容器以模拟硬件,软件或网络故障事件。没关系,你还有一个剩下的te!选择任何一个,SQL负载将重新分配给一个剩余的TE。这种类型的恢复性也可用于Nuodb Enterprise Edition中的管理员服务和存储管理器。要删除TE引擎,请在提示符下键入此命令:

docker rm -f test-te-1

在下面的屏幕截图中注意到TE计数已更新为一个,左下方面板显示剩余的一个TE仍处理SQL事务。下中心面板显示聚合TPS仍然相同,即使Nuodb丢失了其中一个特色,应用程序也会保持运行。

尽管丢失交易引擎,TPS保持不变

为了提高弹性和容错,我们建议在容器管理平台中运行Nuodb,例如 红帽openshift. 或任何托管kubernetes平台(gke,aks,eks等)。在这些系统中,进程业务流程将管理每个进程类型的所需数量。因此,如果任何原因丢失过程,容器管理系统将仅在几秒钟内重新启动过程!有关在容器编排系统中运行Nuodb的详细信息,请退房 这个博客,或跟随我们的 逐步说明 自己尝试,或者 联系我们.

下一步

请查看我们的下一个Docker博客分期付款 展示设置通用GUI数据库管理和分析工具的情况是多么容易 (dbvisualizer)简化了Nuodb上运行SQL - 使用Nuodb时的开发人员和DBA的理想SQL工作台工具!

从Docker Blog系列中的NOODB查看更多信息: