搭建多地域共享存储

这篇教程将和大家一起轻松探索在腾讯云上搭建高可用的共享存储解决方案。

0x00 前言

最近,隔壁部门的工程师小刘正在探索如何搞一套支持多地域容灾、且能共享访问的文件服务解决方案。在之前他尝试过本地的NAS存储,无奈扩容艰难、远程访问性能和吞吐量都很受限,管理复杂且成本高昂,多地备份服务更是代价巨大。

其实这些功能,利用腾讯云的公有云基础服务,简单几步就可以实现。这篇小教程中,将和大家一起轻松探索,在腾讯云上搭建高可用的共享存储解决方案。

今天这篇教程的主角是CVM、VPC、CFS等腾讯云IaaS层的核心基础服务。

0x01 云服务器和私有网络创建

作为预热,本节我们将在创建VPC(以及相关的子网),并在不同可用区创建两台CVM云服务器实例,它们是上层应用业务的基础,也是我们后续验证部署CFS的基础。

创建私有网络(VPC)

腾讯云在每个地域都为用户创建了默认的VPC,方便创建云服务器实例时可以直接选用。不过,针对我们这次的多节点云服务器的应用场景,推荐在创建CVM前先创建私有网络VPC,可以更灵活地规划后续网络结构。在私有网络VPC控制台界面,可以创建VPC,点击+新建按钮后如图:

搭建多地域共享存储

创建VPC,键入名称和CIDR即可,通常可以选择大范围一些,我们这里选择默认的/16的的IPv4地址段。另外第一次创建VPC时需要同时指定初始子网,其实就时该VPC下的第一个子网,子网的CIDR在VPC的范围内即可。注意:子网是和可用区关联的,且一个子网只可以关联一个可用区。如果需要一个跨多个可用区的VPC,需要在VPC下分别创建属于各个可用区的多个子网。另外,网络规划也是搭建基础服务前期必不可少的谋划工作。

我们这里选择创建一个新加坡地域的VPC(my-vpc-sg,10.0.0.0/16),并在其下创建关联两个子网,分别在新加坡一区(my-subnet-sg-1,10.0.0.0/24)和二区(my-subnet-sg-2,10.0.1.0/24)。

多学一点: CIDR全称Classless Inter-Domain Routing,CIDR记法用于标识一个IP地址和它所关联的路由前缀。在云服务中用可以简单地理解为一个被分配可使用的网络地址段,简称网段。IANA规定了三个可用与私有网络的IPv4地址段:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16,这些地址段均可在腾讯云被设置使用。

创建云服务器(CVM)

创建CVM实例大家想必已经非常熟悉了,唯一的不同在于指定我们刚刚创建的VPC/子网

搭建多地域共享存储

镜像选择上,我们选择最近新上的Centos8.0和Ubuntu20.04等镜像,尝尝新鲜。

我们这里在上述两个子网下,各分别创建一台CVM

搭建多地域共享存储

由于它们在一个VPC内,彼此是可以通过内网IP高效访问的。同一VPC下的云服务器彼此可以连通,而不论其在哪个子网或可用区,都能如同内网一样访问,这也是私有网络VPC的核心功能。

搭建多地域共享存储

0x02 文件存储创建与挂载

腾讯云文件存储是什么?先引用一段官网的介绍:

腾讯云文件存储(CFS),即公有云上的NAS存储,帮助用户解决公有云上的高性能、共享存储需求。CFS支持容量和性能的线性扩展,现有应用无需修改即可挂载使用。腾讯文件存储具有使用便捷、高性能、高可用等特性,适用于多种业务场景。如企业文件共享(为OA、ERP、财务管理系统等实现文件共享)、流媒体处理(通过高吞吐加速视频编辑、影音制作/渲染过程)、Web服务及内容管理(提供弹性高性价比的共享存储空间)、机器学习及大数据应用(提供PB级数据,高IOPS)。CFS通常与CVM、容器、Batch、黑石等服务搭配使用,为多个计算性能提供弹性高性能的共享存储空间。

不免让人有点云里雾里,其实NAS(Network Attached Storage)最开始是指通过网络远程访问的共享文件存储设备,简单地说它跟我们常用的主机硬盘有3点不同:

第一,它不是裸盘,而是已经被格式化过的符合POSIX标准(read/write等OS接口标准)的文件系统;

第二,通过网络访问的,而不是挂在本地主机上的;

第三,最重要的一点,它是可以共享访问的,意味着可以多个客户端同时进行读写操作。厉害吧?

这个所谓的云上NAS是什么意思呢?功能特性还是和NAS一样,即刚才那核心的三点都没变。区别首先是其非功能的特性大大提升,如容量弹性可扩展、更高读写性能、以及高吞吐量支持更多的客户端并发访问;另外是增加了一些方便的如监控统计、权限管理等。二者两方面都是公有云服务的共有必备特性,无需太多理解。

文件存储和块存储/对象存储的关系如何呢?CFS相比云盘CBS(公有云上的硬盘),区别在于主机是通过NFS协议挂载而非直接挂载,以及无需格式化;相比对象存储COS,区别在于其与POSIX标准兼容,而COS是通过HTTP协议访问的(你无法 ls命令 读取COS的目录)。总之,需要共享访问大量文件的场景用CFS,没错的。

创建CFS实例

在CFS的文件系统列表页面,可以创建CFS文件系统。过程很简单,除了起名称外,最重要的是选择可用区和网络。如下图:

搭建多地域共享存储

这里我们选择新加坡一区的子网。由于都在一个VPC下,上一节创建的两台CVM云服务器将都可以访问(挂载)它,后续我们将详细介绍挂载命令。

多学一点: CVM里是无法通过ping命令来验证和CFS的连通性的,对于NFSv4协议的CFS,其验证可以通过如下telnet命令:

telnet YOUR.CFS.IP.ADDR 2049
搭建多地域共享存储

挂载CFS文件系统

同样的页面,还可以查看刚刚创建的CFS实例。我们点击该CFS实例ID进入实例详情页,在挂载点信息标签下,可以查看该CFS实例的挂载点信息详情,包括所在VPC/子网信息,内网IPv4地址,以及最关键的——挂载命令。如图,而且命令还可以方便的复制,即便对于NFS新手都很友好。

搭建多地域共享存储

我们这里按照提示的命令,将CFS文件系统的根目录挂载到CVM的指定目录/mnt/cfs下。

# ubuntu下需要用sudo或者先su到root下
mkdir -p /mnt/cfs
mount -t nfs -o vers=4.0,noresvport YOUR.CFS.IP.ADDR:/ /mnt/cfs

mount命令,-t参数指定了挂载类型为nfs-o参数是的挂载选项的意思,这里我们指定NFS版本(vers)为4.0版本,noresvport的意思是nfs客户端采用非特权的源端口,这样可以提升客户端的最大挂载点数量。两个必选参数先后分别是远端地址&目录、以及本地目录,和普通的挂载场景用法没有任何区别。

无需紧张: Centos里第一次创建镜像启动CVM实例时,是没有预装nfs的相关命令的,用yum安装nfs-utils包即可:

mount mntcfs bad option; for several filesystems (e.g. nfs, cifs) you might need a sbinmount.type helper program.
# 没有/sbin/mount.nfs4,安装相关软件包即可
yum install -y nfs-utils

验证挂载可以用df命令

搭建多地域共享存储

0x03 对等连接创建与配置

对等连接(Peer Connection,简称PC)是VPC领域下的一个子产品,提供了大带宽、高质量的云上资源互通服务,可以帮助我们打通腾讯云上的资源通路。对等连接可以做到在多区域之间、多账户间以及多种异构网络之间打通链路。对于我们接下来要做的事:使跨多地域之间的VPC互联。腾讯云的对等连接产品就是一大利器。

首先,可以参考第二节完全一样的方法,我们先在东京地域创建了一个VPC(my-vpc-jp, 172.16.0.0/16),以及其初始的子网(my-subnet-jp-1, 172.16.0.0/24),并在其下创建云服务器CVM(jp-server-1)。不同的VPC下的云服务器是默认完全不内网互通的,若要使我们的东京服务器可以和新加坡地域的两台服务器互相连通,只需要为两个VPC创建对等连接即可。需要以下两步。

创建对等连接

在VPC的对等连接控制台,可以新建对等连接实例。需要选定两端的VPC,以及对应的带宽上限大小,如图:

搭建多地域共享存储

多学一点:同地域下基本免费,跨地域的费用结算默认是日峰值阶梯计算(也可申请月95计算)。另外,对等连接还可以支持跨账户间建立,由连接发起方支付,效果一样,有兴趣可以试试。

更新两端VPC的路由表

创建完对等连接实例后,控制台会提示去修改路由表。在VPC的路由表列表页,找到我们VPC的default路由表,点击ID进入详情。然后选择+新增路由策略,加入对端VPC的下一跳规则即可。目的端选择对端VPC(也可以是对端子网的)的网段,下一跳类型选择对等连接

新加坡VPC的路由表更新:

搭建多地域共享存储

东京VPC的路由表更新:

搭建多地域共享存储

注意:两端VPC的路由表都要增加下一跳策略。对等连接私有网络网段不能有冲突。

路由表规则生创建后,网络连通性即时生效。东京的服务器立即可以和新加坡的服务器互相ping通对方,并且自然地,可以挂载新加坡地域的CFS了。mount命令不变:

mount -t nfs -o vers=4.0,noresvport YOUR.CFS.IP.ADDR:/ /mnt/cfs

0x04 网络结构&访问性能分析

网络拓扑总结

至此,我们整体总结下上述实验的网络拓扑。两个地域各有一个VPC(私有网络),并通过对等连接实现了内部的互通。新加坡地域两个子网分别在两个不同的可用区,东京地域一个可用区部署一个子网。每个子网下各有一台服务器,且CFS部署在其中一个子网下。网络拓扑结构如下图所示:

搭建多地域共享存储

最底层依托腾讯云CFS文件存储,仅需通过一个CFS挂载点进行接入,即可保证文件存储层的灵活扩展和高性能/高吞吐要求;而上层用于运行业务的CVM服务器可以做到两地三中心部署,任何一个宕机都不影响其余业务服务器正常访问共享文件存储,这也是常见的支持容灾备份的高可用方案。

CFS访问性能分析

我们将上述的三种典型的CVM/CFS挂载访问方式总结一下:

CVM与CFS放置关系访问CFS存储的方式访问性能通常用途
CVM实例与CFS在同一地域,同一可用区直接挂载最高在线业务生产中心
CVM实例与CFS在同一地域,不同可用区直接挂载很高同城灾备双活中心
CVM实例与CFS在不同地域需对两个VPC创建对等连接一般异地容灾备份中心

CVM对CFS的写入性能简单评测

我们在三台CVM里,通过dd命令测试一下其对挂载的CFS目录写性能,命令具体如下:

# 注意:命令需要root权限,ubuntu下需要先:sudo su -
echo 3>/proc/sys/vm/drop_caches && dd if=/dev/urandom of=/mnt/cfs/data bs=1M count=1K

注意:由于有操作系统缓存的存在,通常用dd命令进行硬盘读写测试前,最好清空一下系统的缓存。不过对于上述随机写入数据的场景,缓存影响较小。

我们根据写入block size的大小,本实验中我们取block size为1KB、4KB、16KB … 512KB、1MB。结果如下图:

搭建多地域共享存储

从上图可以看出,同一地域,即便不同可用区之间的CVM到CFS访问性能都是相对高且近似的,平均写性能到80~120MB/s之间。然而,对于通过对等连接(peer connection)连接起来的不同地域的CVM,其访问CFS存储的性能瓶颈不在于存储,而是和对等连接的带宽以及各地域网络的具体情况相关。新加坡和东京地域本次的实测是20MB/s,也还不错。

0x05 结语

至此,本篇教程进入尾声。如果你一路跟着实践下来,相信已经更加熟悉了VPC、CVM、CFS等云服务的核心基础产品、了解了对等连接的使用场景,以及熟悉了如何设计高可用的网络拓扑结构和简单的存储性能测试,并最终搭建一套跨地域支持容灾的云上共享存储。腾讯云上还有各种更多好玩的各种服务等待着我们一起探索、组合与构建。让我们一起享受搭积木的快感吧~

0x06 参考资料

本文来自腾讯云计算社区,转载请注明出处:https://computeinit.com/archives/2739

发表评论

登录后才能评论
交流群