天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。

一不小心,踩了阿里云”埋下”的雷!

往事如烟 140次浏览 扫描二维码

希望点击上方“终码一生”,选择“加为星标”

第一时间获取技术干货!

哈喽,大家好!

今天分享一个关于近期使用阿里云时遇到的问题,记录下来,只是为了提醒选购了阿里云产品的小伙伴,尤其是后期有打通云上多个ECS或者EMR产品之间通讯的(我们是跨集群数据迁移),需要注意下面这些事项,希望通过下面的内容,能帮助大家避免遇到类似的情况。

1、写在最前面

阿里的 ECS(云服务器),很多小伙伴应该都有使用过。个人也一直在使用,性能,稳定性,性价比还是比较高的。但是今天我要说的是他们的另一个产品 E-MapReduce,简称EMR,就是多个 ECS 云服务器搭建的 Hadoop 集群,如果更确切点说,这次的问题应该是他们的VPC,云专网产品,里面“埋着”了一个不大不小的雷。

话虽如此,但是在我看来这不是一个代码bug,更像是产品设计上的缺陷,考虑不周造成的。具体阿里云会做出如何的优化调整,我们只能拭目以待。个人认为影响还是比较大的。

2、事情起因

事情是这样。
公司近期计划对集群做一次大的迁移,具体就是将老集群(这里就叫A集群)上的数仓Hive数据迁移到新购的集群(叫做B集群),我们集群并不是很大,大概20个节点左右。

具体迁移
将老集群A上面的数据(HDFS存储数据和Hive元数据),迁移到新购的集群B上面。

服务商迁移方案

我们结合自身的情况和从数据安全考虑,决定不接入合作服务商的帮助(因为他们给的迁移方案,太low了,都什么年代了,竟然要拿硬盘帮我们从云上把数据Copy下来,然后在再传到云上,我们肯定不会采用这样方案)

我们的迁移方案
跨集群通信,打通A,B两个集群之间的通讯,直接通过工具将集群A数据推送到集群B。工具DistCp,不做过多介绍。

DistCp工具:http://hadoop.apache.org/docs/r1.0.4/cn/distcp.html

方案确定下来之后,我们需要解决网络问题,大家都知道,大数据迁移,带宽是瓶颈,所以这个是优先考虑,那么我们在选购新集群的时候(说明下,我们B集群是新购集群),尽量的保持新购集群所在地区和老集群是同一个地区,如果可以的话,同一个机房就更好了,这个需要和阿里的售前和技术沟通,让他们帮你查同机房下是否还有可选购的机型。最终,我们选择了同一个区(北京2区)下面的ECS。

3、开始操作

开始迁移之前,大家需要了解阿里云的几个产品名词:VPC,云企业网。为了方便大家理解,下面介绍摘自于阿里云官方文档。如果你知道这些产品,可以直接跳过。

什么是专有网络VPC?

专有网络VPC(Virtual Private Cloud)是用户基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、SLB、RDS等。

VPC官方文档:https://help.aliyun.com/product/27706.html

我们在选购阿里云 ECS 时,一般都是默认为专有网络(经典网络大部分地区现在已经无法选择),创建好VPC,生成虚拟路由虚拟交换机。并直接绑定我们的ECS绑定。相信95%以上的用户都是怎么操作的。

ECS选购界面

而EMR在创建的时候,是没有默认专网的,需要先手动创建好,在创建时,会让我们选择iP段,因为是有多个ECS组的私有网(系统无法确定你需要创建多少个VPC),这个很容易理解,所以,需要我们自己创建专有网络,选择iP段,阿里云会动态给我们每台ECS,创建hosts文件自动划分iP,所以很多人不会去考虑这个问题,阿里云会给出3个iP段,你选择一个即可。你如果是这样操作,很好,你已经进入到雷区了!

提示:你会发现iP的划分,真的很重要,这也是为什么我们在自建Hadoop集群的时候,会先手动规划iP,配置hosts了,避免冲突啊!但是你通过阿里云不需要,他会自动创建,可是你觉得他就真的不会出现问题了吗?

EMR选购界面

专有网络创建

关于专有网络创建这块,再说下,在创建专有网络的页面,网段划分附带一个网络配置建议,是官方关于VPC创建时给的建议,(这也是事发后,我再次查看VPC时发现的),官方文档有对VPC网段划分的说明(但是对于使用企业云网如何划分并没有说明),而且,我的理解是这个关于VPC的创建的说明,更多是同账号下多个 ECS 划分网段的说明,更偏向于业务层,来搭建各自的私有网络。同时,在企业云网的使用文档中,也并没有说明和介绍VPC在创建时需要注意这些。

好了,下面几段抄自官方,关于网络划分和VPC创建的说明:

一个VPC

如果您没有多地域部署系统的要求且各系统之间也不需要通过VPC进行隔离,那么推荐使用一个VPC。

多个VPC

如果您有以下任意一个需求,推荐您使用多个VPC:

  • 多地域部署系统

VPC是地域级别的资源,不支持跨地域部署。当您有多地域部署系统的需求时,必须使用多个VPC。您可以通过使用高速通道、VPN网关、云企业网等产品实现跨地域VPC间互通。

  • 多业务系统隔离

如果在一个地域的多个业务系统需要通过VPC进行严格隔离,例如生产环境和测试环境,那么也需要使用多个VPC,如下图所示。

关于VPC与VPC互通

当您有VPC与VPC互通或VPC与本地数据中心互通的需求时,请确保VPC的网段与需要互通网络的网段没有冲突。建议遵循以下网段规划原则:

  • 请尽量做到不同VPC的网段不同,不同VPC可以使用标准网段的子网来增加VPC可用的网段数。
  • 如果不能做到不同VPC的网段不同,则尽量保证不同VPC的交换机网段不同。
  • 如果不能做到不同VPC的交换机网段不同,则保证要通信的交换机网段不同。

上面便是VPC的介绍了,你在选购ECS的时候,有注意到嘛?

网络规划:https://help.aliyun.com/document_detail/54095.html

什么是云企业网?

云企业网CEN(Cloud Enterprise Network)是承载在阿里云提供的高性能、低延迟的私有全球网络上的一张高可用网络。

云企业网可帮助您在不同地域专有网络VPC(Virtual Private Cloud)间,VPC与本地数据中心间搭建私网通信通道,通过自动路由分发及学习,提高网络的快速收敛和跨网络通信的质量和安全性,实现全网资源的互通,帮助您打造一张具有企业级规模和通信能力的互联网络。

云企业网:https://help.aliyun.com/document_detail/59870.html

我们要做的是什么呢?

简单的说,我们现在是两个阿里云账号,下面分别有一个EMR集群,我们需要将两个集群的网络打通,实现跨集群操作。

按官方说明,这个是可以实现的,而且非常简单,因为阿里云已经提供了对应的产品,就是云企业网,只需要在一个账号上面创建云企业网,另一个账号做授权,然后,两个集群的VPC分别加载到企业云网,就可以实现他们之间的通讯了。完美!

现实情况真的是这样吗?

我们很快便打通了2个集群的网络,节点之间互相ping是没有问题的(请忽略冲突的iP),但是推送数据的时候,一直报错,检查发现,两个集群hosts配置中,iP映射存在冲突的问题。显然,当放在云企业网上,这种情况是错误的,就是他造成的数据无法推送。
但是很多公司和企业在新购服务器时,和我们的情况一样,一开始或许也不会去过多的关注这些,因为你无法判断自己后面业务发展是否需要这些。直到你在使用企业云网打通多个VPC通讯时,你才发现,你的VPC在购机的时候就已经创建了,网段已经固定了,ECS也已经绑定了,而且是无法删除的。而这个时候,你又无法将自己的ECS解绑VPC。于是便会出现开篇时,我们所遇到的尴尬情况。

4、解决方法

出现这样的问题,该如何解决呢?答案是,没有办法。

在沟通时我们讨论过两个解决方案:

  1. 手动修改hosts配置,直接修改冲突的iP,解决iP冲突的问题,但是这个属于非常规操作,动了云产品的配置(阿里云不同意)
  2. 重新选购,治标不治本。因为我们是新购的集群,上面什么数据也没有的,可以重新选购,那如果是使用一年的ECS或EMR呢!还能够重新选购吗?

最后,没有解决的办法,我们还是退回机器,重新选购。

5、最后

 事情到这里,就完了吗?大家有没有觉得很别扭?我们在创建VPC之前,需要提前就想明白后面的业务是否有需要跨集群通讯的情况,而且,一旦遇到iP段冲突的情况,除了重购就真的没有办法了嘛?作为一个程序员,本着刨根问底的劲头,继续寻找下去,果然,解决的方法还是让我找到了。

我们不妨看看亚马逊云是如何操作的?难道也是VPC创建时iP冲突就重购吗?答案是No,亚马逊云不存在这样的问题,具体他们是如何解决的,因为篇幅问题,这里也不再过多讲解了,留着大家去研究吧!

至此,我们踩的VPC的坑,也已经解决,个人认为这不是一个小坑,因为当你无法断定自己后期是否需要打通多个ECS时,我们都会很随意的选择一个网段,而埋下的这个雷,直后到你后面需要打通网络时才会发现他的严重性。目前阿里云并没有提供相应合理的解决办法。更让人担心的是,我们买的ECS,是系统默认创建的VPC,那我们要打通多个ECS,创建企业云网时,这个又是否存在类似的问题呢?

最后,期待阿里云后续的优化方案。也希望大家在选择创建专网时能提前了解到这个,避免这种尴尬的事情再次发生。

参考:

亚马逊VPC创建:https://blog.csdn.net/zhuyunier/article/details/86538525

亚马逊网络划分:https://www.jianshu.com/p/6a7a9e6f478d

亚马逊VPC官方文档:https://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/what-is-amazon-vpc.html

阿里云EMR迁移:https://help.aliyun.com/document_detail/97959.html

PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。

转自于公号:终码一生


ITZOO版权所有丨如未注明 , 均为原创丨转载请注明来自IT乐园 ->一不小心,踩了阿里云”埋下”的雷!