华为云网络使用“大全”

举报
tsjsdbd 发表于 2024/09/19 20:49:05 2024/09/19
【摘要】 介绍华为云网络的使用“大全”,设计出更好的用云方案

开发云服务的过程以及使用过程中,需要了解云网络的各种属性(如果能理解云网络的底层实现原理就更好了),这样对云服务设计出更好的架构有帮助。这里唐老师分享一下我所了解的华为云网络的使用大全,跟大家互相交流学习。

一、目标vs工具

首先我们看下云网络的目标工具

先说本文的网络目标,单纯就是:网络怎么连通。(至于安全组等其他网络特性,本文不讨论)

而具备云网络连通能力的工具,这个就比较多了,列举如下:

  1. vpc-peering 对等连接
  2. 挂载port网卡
  3. vpc-sharing 网络共享
  4. SNAT+DNAT翻译员
  5. vpc-endpoint 定向通道
  6. EIP
  7. pep云内版“EIP”
  8. 254.169.254 上帝后门
  9. 云连接 CC
  10. 企业路由 ER

后面会逐一介绍。

整体思路,就是要用一个个的工具去解决我们的目的

 

二、基础知识

云网络的目的是去模拟现实世界,所以看待VPC就把它当作普通的物理组网就行。一个VPC,你就映射成一套独立的物理局域网(想象成一个机房)。电脑接入同一机房(VPC)就是连通的,不同的机房物理上就不通。需要加额外网络设备(如路由器),才能将两个机房的网络连通。

原理可以参考我之前的文章:

跟唐老师学习云网络 - 什么是VLAN和VXLAN

跟唐老师学习云网络 - OpenStack网络实现

1.    VPC和子网

VPC是云网络的“隔离单位”。不同的VPC就代表不同的网络,就像2个物理独立的机房,无论这2VPC是否属于同一个用户。即VPC本身是不分用户的,用户只是后期给VPC的一个属性(一个VPC,可以同时属于多个用户,后面会介绍)。比如一个人可以拥有多个机房,同一个机房也可以属于多个人(当然,默认只属于一个人)。

所以,如下的(A)和(B)从技术视角看是一样的。区别仅仅是在跨租户的时候,需要征得对方同意。即除了权限以外,打通一个用户下的2VPC,与打通2个用户的VPC是一样的。


子网则相对简单,只是VPC内部为了管理方便,而划分的不同网段。本文涉及不多。

 

2.    Floating-IP 行走江湖的“名号”

Floating-IP 是一个非常重要的概念,必须理解!

最初它是用于描述个人家庭上网时,运营商会临时分配一个互联网IP给你,当你下线后,这个互联网IP又会被运营商收回,并分配给后续上线的其他人。可见,这个IP地址是飘来飘去的,是浮动的,所以叫做Floating IP

当一台电脑持有这个“Floating-IP”时,它(这台电脑)访问外部网络时,别人(其他电脑)看到的都是这个“Floating-IP”发出的。且外部访问这个“Floating-IP”就等于是直接访问这台电脑。即:当前Floating-IP代表了这台电脑


云上的虚拟机分配的Floating-IP,很多时候不需要回收,所以当Floating-IP关联到一台虚机后,这个IP就代表了这台虚机的地址了。有点像你被其他班级取的外号一样。

注意:一台电脑是可以分配多个Floating-IP,就如一个人可以拥有多个外号一样。


比如我在游戏中取名叫唐爷,博客中取名叫唐老师,实际上都表示我。即在不同的目的网络中,一台电脑可以拥有不同的Floating-IP地址,如上图。

一个特殊的Floating-IP就是众所周知的EIP(互联网IP)。还有很多其他Floating-IP,后面会介绍。

三、“工具”讲解

1. vpc-peering 对等连接

与通过增加一台路由设备,把2个互相不连通的机房的网络连在一起一样。2VPC也可以通过“虚拟路由器”直接连通在一起。(再次提示:虚拟网络要看作物理世界网络,比较好理解)


又因为这种连通是“直接”的连通,即靠“路由转发”直接将报文发往对方网络里,因此想进行“连通”两边的IP地址不能重叠(假如重叠了,两边连一起后,左边和右边如果有相同IP就会冲突)。

前面提到过,VPC是不分用户的。因此同租户内2VPC进行vpc-peering,与跨租户的2vpc间的vpc-peering技术是一样的。区别只是当跨租户时,需要征得对方同意。

工具小结:

1)当2VPC网络的IP重叠时,vpc-peering这个工具不能用。

注:对应AWS也叫vpc-peering 对等连接

 

2. 挂Port网卡

默认一台电脑接入一个机房的时候,是只连一根网线(多根网线连入同一个机房,没必要嘛)。启动虚机的时候,选择VPC,就好比电脑网线插入哪个机房的网口面板。但有时候电脑可以插多个网卡,这个时候就可以拉多根网线,分别接入多个机房。如下图:


这种在这台电脑里面就会有多条路由表,报文根据不同的目的地,会选择不同的eth0或者eth1发出去到不同的VPC。因此,2VPC自然连通了。但这里也要求挂双网卡时,IP网段不能冲突(负责不好路由)。

Port网卡,就是双网卡。因为OpenStack里面负责虚拟网络实现的Neutron子系统,将虚拟网卡称作Port,所以虚机挂双网卡有时也被称为Port”

话说华为云上,虚拟网卡的实现是ENI(弹性网卡),所以挂Port也可以叫做挂ENI网卡。其实都是一回事。

工具小结:

1)可以将虚机接入多个VPC(即VM挂载多网卡),前提是这些VPC是你的。

2)挂载的多网卡对应的VPC网络的IP不能重叠。

注:对应AWS也叫挂载port网卡

3. vpc-sharing 网络共享

再次说明,VPC技术实现上是不分用户的(原理见《跟唐老师学习云网络 - 什么是VLAN和VXLAN》)。

因此一个VPC是可以同时属于2个用户的。当前默认1VPC只属于1个用户,这是因为管理上的需要,即默认不同租户天然隔离。

所幸,当前大部分云平台已经把VPC跨租户共享,做成一个基本功能。如AWS的RAM。华为云的RAM也具备这个功能。当别人把VPC共享给你的时候,你就拥有了这个VPC权限(即你拥有这个“机房”的权限)。你启动虚机,就可以把网线插入这个VPC“机房”的网口面板上了。


VPC共享是一个非常赞的功能。

工具小结:

1)可以实现VPC共享给其他租户,然后通过双网卡方式,就可以实现连通2VPC

2)与挂Port一样,2VPCIP网段不能重叠。

注:对应AWS也叫vpc-sharing网络共享

 

5. SNAT+DNAT 翻译员

SNATDNAT属于Floating-IP的“青春版”,也可以完成2VPC网络间的互通。

SNATSource Network Address Translation)看名字就知道了,发出去报文的时候,把源IP地址换掉。


DNATDestination Network Address Translation)则相反,收到报文的时候,把目的IP地址换掉。


它本质和Floating-IP很像,但是Floating-IP呢,需要每台虚机占用一个Floating-IP。而SNAT/DNAT则可以很多台虚机共用一个Floating-IP。比如每台VM都买一个EIP(最有名的一种Floating-IP),就会很贵。所以一般很多VM通过SNAT/DNAT规则共享一个EIP,则经济实惠很多。属于是「独立单间」vs「合租寝室」的区别。

一般在2VPC存在地址冲突又需要连通的时候,可以通过给SNAT/DNAT引入一个“中转网络”进行“翻译”后连通。


如上图,本端(左侧)发出去的报文,经过SNAT后到达中转网络,中转网络路由转发给目的电脑(右侧)。从目的来看,以为是从中转网中的“某台电脑”发过来的,所以应答文也直接给中转网中的“那台实际不存在的电脑”回。中转IP收到报文后,经过原来的链接就回到了源头ECS(左侧)。 所以中间的中转IP,有点像翻译员。

无论SNAT还是DNAT,都是单向的。

工具小结:

1)青春版Floating-IP,可多台ECS节点共用一个。

2SNAT时,客户端得知道对方目的地址DNAT时,目的端会看到对方源地址

3)单向连通

 

5. vpc-endpoint 定向通道

要理解 vpc-endpoint,要先搞明白vpc-ep的底层原理Fullnat。而想懂Fullnat当然得先知道前一章节的2NAT。这2NAT都会保留其中一端的IP地址,就是有一方会感知对方VPCIP地址。


如上图,为帮助理解,“外部网络”可以看做互联网(实际上对方网络可以是别的VPC);则100.1.0.2类似EIP。你访问对方时,总得感知对方的实际IP地址。

但是Fullnat的时候(即SNAT+DNAT一起用),则不用感知对方的实际IP了,对方已经在你方网络内,放置了一个“代理人”(下图标星处)。你只需要跟“代理人”通话,自然会传递到目的地。


使用体验上,犹如:对方在你的网络内,放置了一个“代理人”,你跟该代理人聊天,就如跟目标对象聊天一样。该代理人需要占用你网络的一个IP。见下图:


   产品实现上,这个代理人,会被包装为“client”。这个client会占用你本端网络中的一个IP,你访问这个clientIP,就代表你访问另一个网络中的对方。好比游戏地图边缘传送门,任何东西进入它,都会出现到另一个地图上。(取名endpoint的原因?)

AWS实现的endpoint产品,有2种:接口型EP和网关型EP。华为云目前的VPCEP就是接口型的。未来网络型EP也会上。两者的区别:

  • VPCEP - 点对点的EP

这个就是上面介绍的,单点传送门。每一个目的地,都需要创建一个代理入口。当你要访问对方VPC中的每一台VM时,显然创建无数的client很不合理。

  • Network-EP - 点对面的EP

这个是点到面的连通。即通过这个“传送门”,可以到达目的网络的任何地方。因此访问上,不是直接访问这个client-IP了,而是将这个client-IP作为路由表的一个Gateway网关。

其使用上的逻辑为:

ip route add {对方VPC网段} via {EP-Client-IP}

这样子就比较好理解为什么AWS取名网关型EP”了。

 

工具小结:

1)可以连通2VPC,但缺点是单向的。即只能一个方向访问(无论ep还是network-ep)。

2)跨账号建立VPCEP的时候,需要征得双方同意。

3)这个工具需要收费。(每天2.4/client,学生党不友好,非不得已别用)。

注:对应AWS也叫vpc-endpoint 通道

6. 挂EIP

EIP就是一个典型的Floating-IP

其实现原理,可以从个人家庭上网,运营商给你分配一个互联网IP来理解。当你持有这个EIP的时候,这个EIP地址在互联网范围里就代表了你。


如上图这种情况下,双方通信时,都跟对方的EIP通信。

工具小结:

1)走外挂模式嘛,肯定可以将任意VPC里面的节点连通。

2)这个工具比较费钱

注:对应AWS也对应为挂EIP

7. PEP云内版“EIP”

PEPPublic Endpoint)本质就是云内的Floating-IP,属于小号版的EIPregion内)。用于云服务内部互访用,不对用户开放。

 

从底层创建PEP的实现也可以看出,本质就是给目的地网络创建一个Floating-IP

neutron floatingip-create $eps_external_net_id --port-id $vm_port_id --tenant-id $vm_port_tenant_id --floating-ip-address $pep_ip

工具小结:

1PEP可以快速打通网络,好比任意2台电脑绑定EIP一样。

2)但是这个工具一般人用不了。

 

9. 169.254.169.254 上帝后门

在云的世界里面,上帝(管理面)把VM生出来后,VM里面的程序想知道自己这台VM的“生辰八字”或者“档案信息”,是可以去询问上帝的。

curl http://169.254.169.254/latest/meta-data

比如:VM里面是不知道自己的“外号”EIP地址的(因为EIP是可以漂移的,是后期动态挂上来的)。然而有的程序,给外部发通告的时候,是需要告知自己的“外部监听地址”的。因此它需要去询问上帝,关于自己的一些“上帝视角”的信息。这就是 169.254.169.254 这个地址的了。

这个特殊IPAWS搞的元数据服务(metadata-service,后来OpenStack也继承了这个特性,当前该特性基本已经成为云的标准了。


理论上,这个特殊通道的实现原理(详见《跟唐老师学习云网络 - OpenStack网络实现),也可以用于其他网络互通功能,但实际上当前这个特殊IP只提供查询元数据功能。

 

工具小结:

1)数据面访问上帝的一个特殊通道

2)目前只被用来访问一些“元信息”,未拓展其他功能。

注:AWS上面也有这个(其实aws是这个通道的元老)

10. 云连接CC

云连接CCCloud Connect)在同一个region内,效果与VPC-Peering一样。即可以完成2VPC的互联,无论是否同一个账号。只是跨账号的时候需要对方同意。

vpc-peering强的地方在于,CC可以跨region互联


VPC-Peering不同的点,在于VPC打通后路由表CC是自动帮用户设置。另外,VPC Peering的承载网络是基于数据中心网络(DCN),云连接服务的承载网络,则是基于数据中心骨干网(DCI)。具体其他差异可见CC的资料说明

 

工具小结:

1)强化版的vpc-peering

2)可以跨账号VPC互联

3)可以跨region进行VPC互联。(但是域间带宽略贵)

注:AWSregionVPC互联,仍继续用VPC-Peering的。

11. 企业路由 ER

当需要Peering互联的的VPC数量众多,进行两两Peering的配置会变得复杂。

EREnterprise Routing企业路由)可以将多个VPC都对接到ER,实现以ER为中心的星状网络,解决多VPC互通、多资源互联的复杂组网问题。


 工具小结:

1vpc-peering的升级版。

2)多个VPC需要互联时,使用Peering会很乱,可以使用ER进行集中管理。

注:对应AWSTransit Gateway。(所以我图里面直接用AWSTG代表ER

 

五、总结

与大家分享下场景的网络互通方案,不对的地方也多多指正,共同学习。本文也并没有包含云中所有的工具,因为那样文章会很冗长(比如DC专线,VPNELB等),显然这些比较专用场景的工具,默认大家只在特定场景下需要。像ELB这种,本身目的是进行负载均衡,它本身也可以是一个超级工具,即它可以把基础工具利用起来,然后做LB均衡(毕竟它也是一个云服务,得做强做大)。

了解各类云网络工具可以帮助大家开发出更好的云服务。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。