今天我们来介绍如何配置Portworx存储集群。这里我们概要性的对Kubernetes和Portworx的结构进行介绍,如何在Kubernetes上配置Portworx集群,以及正确安装Portworx需要哪些命令和参数。这里我们有一组已经配置好的高可用的Kubernetesmaster节点,一组worker节点,在这些节点上我们来安装Portworx。
Portworx需要一些资源的支撑。每一个worker节点都需要有CPU,不论是本地裸金属,还是云端,至少需要4个核以上的CPU。根据工作负载的不同,也许会需要更多核的CPU,例如运行一组数据库,4个核就不够了。最少的情况下我们需要4个核。内存建议至少4G。
跟CPU的核数一样,内存越大计算能力越强。可以根据自身的成本预算和负载的内存需求情况,来配置合适的资源供Kubernetes使用。但是运行Portworx,就需要满足4核CPU和4G内存的最小要求。因为Portworx是一个持久存储和数据管理系统,因此需要磁盘和驱动做支撑。
磁盘需要至少8G,我们推荐128G。4个节点的话,8G显得有点少。如果每个节点有128G,就能够有一个不错容量的存储池,来支撑存储系统。目前来看,还很少有为节点配置1TB以上。还要看运行的应用和需要的情况来定。网络方面,我们推荐10G的内部网络互联。
存在一个管理网络和一个数据网络。你可以把数据aka的复制、和应用的存储IO分配到不同的网络上。一个数据网络会存在,我们标记为D,还会存在一个管理网络,我们标记为M。因此管理网络和数据网络都可以通过网络进行连接。这些使你可以把I/O和数据流量进行分配。我们接下来介绍一下如何配置,需要确保数据网络至少是10G互联的。管理网络可以稍微低一些。Portworx的端口,需要9001到9021,这个范围可以配置的,这是默认的配置范围。除非有其他的端口冲突,就不要改变这些端口范围,它们是默认的Portworx通讯的端口。
对于Kernel版本,你至少需要3.10为Linux操作系统的版本,因为我们使用了很多更新的Linux Kernel集成、工作流和数据流等功能。键值存储数据库,etcd是最常见的,以及HashiCorp的Consul也可以选用。是的,Kubernetes集群在Master节点上运行etcd,注意键值数据库完全是分开的。
我在这里标记一下etcd,它通过网络会被附加到Portworx上,并且是独立的。它保存集群信息,元数据这些。对于一些有一定规模的集群,比如20或者25个节点的Portworx,我们推荐外部数据库,键值存储数据库,因为它会把I/O和CPU的资源放在外部系统上以及保持它们在独立的错误域里。
好的方法是保持一个独立的错误域,并且在配置过程中保持存有备份和快照,这样出现问题的时候可以恢复etcd数据库。对Kubernetes etcd数据库也可以这样操作。我们来介绍这两种方式。一种方式是有一个build-in的键值存储,这意味着Portworx可以自动工作,不需要人工干预,可以自动进行快照,也可以备份和恢复,但这是在20~25个Portworx节点的情况。现在对于Portworx所需资源有了一个整体了解,我们在介绍如何来配置它。我首先需要来介绍一下-C option,我来展示一个例子,来看在Kubernetes部署中是什么样的,或者Portworx运行中的DaemonSet。这样从命令行和EMO的角度我们就能更好的理解。
-C是我们的集群名称,你可以有其他的命名,但是不要有重复。因为如果用同样的名字,在应用分布和在etcd中配置的过程中,可能会出现冲突。所以确保集群名称是不重复的,这非常重要。我们接下来介绍存储,我们数据存储的选项。这里有一些,我们来看一下,你至少需要配置一项来定义你的存储磁盘或者后端存储,可以是本地的8G或者128G的磁盘驱动器,或者是云端存储驱动,例如SAN附加存储。不论是什么情况,-S都需要被使用,来指向一个特定的磁盘驱动:dev/sdb。你可以列出它们的名称,或者通过一个卷模板来使用。现在我来连接到卷模板,这是在云中来使用的,我想要使用gb2,有200G的卷,这会被认为是一个模板。Portworx会自动的与云的API进行沟通、部署、并且附加到Portworx worker节点上。
-Z是一个零存储节点。使用的情况是,如果你想要Portworx节点来加入到Portworx集群,也就是说着它需要附加\mount卷、并且允许应用具备I/O和使用卷。但是它不会给存储集群贡献更多的存储,也就是说它也不需要有磁盘。所以这就是-Z,零存储节点。-A,可以提供我们需要的所有功能。如果Portworx需要查询来看到底有多少没有被mount的未被使用的磁盘驱动。你可以增加-F,表示可以强制使用任何有文件系统的磁盘驱动。
这些是典型的操作中使用的参数。我们再来介绍一下数据网络和管理网络。配置时为数据网络使用-D,为管理网络使用-M。eth0,eth1这些。另外还有一个比较重要的就是 -X,这是你的调度器。“请告诉我的Kubernetes调度器来做更多的工作”。
我们介绍了STORK,有一个单独的视频介绍STORK,它是Kubernetes的存储调度器,与Kubernetes的调度器紧密集成。键值存储,会是IP和端口。通常运行在2379端口。也许是负载均衡器的IP地址,或者是etcd数据库的虚拟IP地址。如果你不想要使用外部数据库,你就不能使用 -b。-b表示使用内部的etcd数据库,或者是键值存储数据库。Portworx会自动的用高可用方式部署键值。高可用键值存储在至少3个节点上,并且配置压缩存储。如果低于20/25个节点,你可能就想使用-b,因为不论你是否想保持对etcd集群的感知,或者对集群本身的感知,可以留给Portworx来自动完成。
还有一些其他的部分,如果你想要使用-b,你需要配置一个元数据标志,表示这些是专门为键值存储数据库发送元数据I/O使用的驱动,所以它与数据I/O是分开的磁盘。还有就是缓存设备,它允许你在这些节点上选择最快的驱动。如果这些Portworx节点中的某一个使用GB2卷,在服务器上有一个NVMe或者一个io1类型的磁盘,就会比普通的驱动要快很多。
你可以使用它作为缓存设备,被Portworx作为缓存来使用。总结一下这些重要的标签。- C是集群名称。-A可用来获取磁盘。-Z代表零存储节点。S代表确定的存储,意味着磁盘模板或者存储设备本身。-D表示数据网络。-M表示管理网络。-X代表调度器或者Swarm,或者Kubernetes。-K代表外部键值存储。-b代表内部键值存储数据库、缓存设备、或者配置缓存设备/缓存元数据,供内部键值存储使用。
另外还有一些,我在这里就不再详细叙述,我们有spec生成器,你可以通过central.portworx.com来访问。你使用spec生成器的时候,它会用图形界面指导你来选择使用这些参数。以上我们介绍了在配置Portworx存储集群中需要考虑的一些方面,希望对您有帮助。谢谢!