这是来自Portworx的解决方案架构师Jeff Silberman的客座文章。
没有人想要管理存储,但是高价值的应用程序没有它是无法运行的。在理想的情况下,存储“就在那里”,而不需要考虑它——或者提供和管理它,对吗?
Portworx是一个针对容器工作负载的软件定义的持久存储解决方案,它提供了一个高度可用的弹性数据结构。Portworx云原生存储允许作业无缝运行超级融合的存储层,以获得最佳性能——同时也为数据可用性提供了丰富的选项。
最重要的是,Portworx非常适合DevOps——它易于部署和使用。
按需存储
有多容易?那么,如果您的HashiCorp Nomad作业可以按需存储,并在运行时提供呢?就像这样:
[...]
task "mysql-server" {
driver = "docker"
config {
image = "mysql/mysql-server:8.0"
port_map {
db = 3306
}
volumes = [
"name=mysqlvol,size=10,repl=3/:/var/lib/mysql",
]
volume_driver = "pxd"
}
[...]
让我们看看这意味着什么。当mysql任务启动时,mysqlvol将以10GB的size和3倍的复制因子动态创建,确保数据将在3个不同的节点上复制。
不需要单独的存储供应周期,因为容器粒度虚拟卷是按需创建的。
什么是Portworx ?它是如何工作的?
在底层,Portworx是一个分布式块设备驱动程序,作为容器交付,安装在运行有状态应用程序的Nomad客户机上。Portworx并不仅仅充当现有存储的连接器,而是与您现有的节点运行高度聚合的关系,为在容器中运行的应用程序提供稀疏的、容器粒度的虚拟卷(和快照)。将块数据复制到多个节点可以保证高可用性。
Portworx使用kvdb,类似Consul,用于集群/节点拓扑发现和控制路径操作——但不用于任何数据路径操作,因此可以解决围绕可伸缩性和I/O性能的主要问题。
对于Nomad来说,Portworx运行在system调度器之下,这意味着如果将新的Nomad客户端添加到集群中,那么Portworx也会自动在这些客户机上运行。system调度器与弹性自动缩放组(ASGs)的概念非常一致,允许Portworx在新的客户端节点上自动旋转,无需手动安装。
Portworx在Nomad客户端(不是服务器)上运行。以下是Nomad客户端需要的相关选项:
client {
enabled = true
options {
"driver.raw_exec.enable" = "1"
"docker.privileged.enabled" = "true"
}
}
如果你想深入了解,这很简单。Portworx doc站点已经被更新,包括详细的(和简单的)说明如何在Nomad下安装Portworx。
基础设施代码
“按需存储”功能与编写基础设施的HashiCorp道一致。存储需求是计算工作负载的一个基本元素,对于持久工作负载更是如此。到目前为止,提供存储一直是提交“票据”的带外过程——这是自动化的一个诅咒。现在有了Portworx内联卷规格——或者“随需存储”,“存储供应周期”就过时了。Jobs根据需要按需存储。
促进高效的工作流程
容器粒度卷快照是Portworx免费提供的一个有价值的企业特性。快照是即时创建的、在写入时复制的元数据标记,在创建时不消耗任何空间。更好的是,快照是可读/可写的。例如,假设您想要为CICD主构建周期的输出创建一个副本,以便将其传递给多个Jenkins slave以进行并行处理。使用Portworx,您可以通过创建多个卷快照,并让每个Jenkins slave在它自己的副本上并行操作来实现这一点。计算和存储效率的提高是显著的。
自己试试
DevOps的简单性已经成为一个产品基础——以内联体创建功能为例。没有人想要一个陡峭/复杂的学习曲线,这就是为什么Portworx让试验变得尽可能简单和无摩擦:该产品附带一个免费的30天试用许可证,所有功能都启用了。
自己尝试这个只有两个小需求:访问外部的“kvdb”,比如Consul。主机上的一个或多个未挂载/未格式化的原始设备(分区或磁盘)。
如果您已经有一个工作的Nomad集群满足这些需求,那么您可以立即尝试一下。这里有一个用于启动Portworx的参考Nomad作业文件。
如果您没有多余的Nomad集群可以尝试,您也可以轻松地玩转。Hashi-Porx AWS存储库提供了一个完整的集群,其中包含AWS中的Portworx/Nomad/Consul。在Hashi-Porx Vagrant 库中,Nomad和Consul都运行在-dev模式下的一个小小的Portworx集群上。
少即是多
没有比这更真实的了,尤其是在DevOps的世界里。你管理的东西越少,你的生活就会越好。Portworx特别设计来支持DevOps自动化,并允许容器的持久存储,以便高价值的有状态应用程序(比如数据库)能够在容器中运行。
我们很高兴能够为HashiCorp Nomad生态系统做出贡献,以更好地实现有意义的自动化工作流——减少实际工作。