1. PaaS网络基础:VPC概念、子网划分、路由表设计原则
各位同学,咱们今天聊聊PaaS平台最底层的网络基础。说实话,很多刚接触云原生的人,一上来就搞容器编排、微服务治理,结果网络不通,排查三天三夜。我见过太多这样的案例了。
网络是PaaS的血管。血管堵了,再好的应用也跑不起来。所以这一章,咱们把地基打牢。
1.1 VPC到底是什么?
VPC,全称Virtual Private Cloud,虚拟私有云。说白了,就是你在云上圈了一块完全隔离的网络空间。你可以把它想象成你自家的小区——有围墙、有门禁、有独立的门牌号系统。
为什么需要VPC?你想想看,如果所有租户的网络都混在一起,那不乱套了?我有个客户,早期上云时没规划VPC,直接把所有服务丢在一个大网段里。结果呢?开发环境的一个误操作,广播包把生产环境的数据库打挂了。嗯,从那以后,他们再也不敢不搞网络隔离了。
核心要点:VPC提供了逻辑隔离。每个VPC都是一个独立的二层网络,默认与其他VPC不通。这是安全的第一道防线。
VPC有几个关键属性:
- 地域(Region):VPC属于某个地域,不能跨地域。比如北京地域的VPC,不能直接连上海地域的机器。
- CIDR块:VPC的IP地址范围。比如10.0.0.0/8,或者172.16.0.0/12。这个一旦定下来,后期改起来非常麻烦。
- 租户隔离:不同账号的VPC天然隔离。同一个账号下可以创建多个VPC。
我个人习惯,在规划PaaS平台时,至少会创建三个VPC:生产环境一个、测试环境一个、开发环境一个。别嫌多,这是血的教训换来的。
1.2 子网划分——别拍脑袋
VPC建好了,接下来就是子网划分。子网,就是把VPC这个大网段切成若干个小网段。为什么要切?两个原因:
- 管理方便:不同业务、不同层级放在不同子网,一目了然。
- 控制流量:通过路由表和ACL,可以精细控制子网间的访问。
我记得有一次,帮一家金融公司做PaaS改造。他们原来的网络规划是:所有机器都在10.0.0.0/16里,没有子网。结果要上线一个合规审计功能,需要把数据库和Web服务器隔离开。因为没有子网,只能靠安全组硬配,配了200多条规则,最后还是漏了一条,出了事故。
所以,子网划分一定要提前规划。我一般遵循这几个原则:
| 子网类型 | 用途 | 建议CIDR | 说明 |
|---|---|---|---|
| 管理子网 | 运维跳板机、堡垒机 | /24 | 最小权限,只允许特定IP访问 |
| 应用子网 | PaaS容器节点、微服务 | /20 或 /22 | 需要预留弹性扩缩容空间 |
| 数据子网 | 数据库、缓存、消息队列 | /24 | 不直接对外暴露 |
| 公网子网 | 负载均衡、API网关 | /24 | 绑定弹性公网IP |
这里有个坑:子网一旦创建,CIDR就不能改了。所以预留空间要充足。我习惯给应用子网留/20,因为PaaS平台扩缩容非常频繁,IP不够用就尴尬了。
小技巧:子网划分时,尽量使用连续的CIDR块。比如10.0.0.0/16,切成10.0.0.0/20、10.0.16.0/20、10.0.32.0/20……这样路由汇总方便,后期维护也省心。
1.3 路由表设计原则——流量怎么走,你说了算
子网划好了,但流量怎么走?这就靠路由表了。每个子网都关联一个路由表,路由表里定义了流量的下一跳。
路由表的核心是路由条目。每条路由包含:
- 目标网段:要去哪?比如0.0.0.0/0代表所有公网流量。
- 下一跳类型:怎么去?比如Internet网关、NAT网关、对等连接、虚拟专用网关等。
设计路由表时,我总结了三个原则:
原则一:默认路由指向互联网网关
需要访问公网的子网,比如公网子网,路由表里加一条0.0.0.0/0 -> Internet网关。不需要访问公网的子网,比如数据子网,就别加这条。我曾经见过一个案例,数据库子网配了默认路由到公网,结果被DDoS攻击了。嗯,这个锅背得冤。
原则二:内网互通靠对等连接或Transit Gateway
不同VPC之间要通信,不能直接路由。需要建立VPC对等连接,然后在路由表里添加对端VPC的CIDR,下一跳指向对等连接。如果VPC数量多,建议用Transit Gateway,星型拓扑,管理起来省心很多。
原则三:最小路由原则
路由表里只放必要的路由。不要图省事,把所有网段都写进去。路由条目越多,排查问题越难。我习惯每个子网只配3-5条路由:一条默认路由、一条VPC内通信的本地路由(系统自动生成)、一两条对等连接路由。
避坑指南:我曾经遇到过一个线上故障——两个子网之间突然不通了。查了半天,发现是路由表里有一条冲突路由:目标网段10.0.0.0/16,下一跳指向了一个已经删除的对等连接。所以,删除对等连接时,一定要同步清理路由表里的相关条目。这个坑,我踩过,你别踩。
1.4 实战:一个典型的PaaS网络规划
说了这么多理论,咱们来一个实际的例子。假设我们要搭建一个PaaS平台,部署在阿里云上。我会这样规划:
VPC: paas-prod-vpc (10.0.0.0/16)
├── 管理子网: 10.0.0.0/24 (关联路由表: mgmt-rt)
│ └── 路由: 0.0.0.0/0 -> NAT网关
├── 应用子网: 10.0.16.0/20 (关联路由表: app-rt)
│ └── 路由: 0.0.0.0/0 -> NAT网关
│ 10.1.0.0/16 -> 对等连接(pcx-db)
├── 数据子网: 10.0.32.0/24 (关联路由表: db-rt)
│ └── 路由: 无默认路由(不访问公网)
│ 10.0.0.0/16 -> local(系统自动)
└── 公网子网: 10.0.33.0/24 (关联路由表: public-rt)
└── 路由: 0.0.0.0/0 -> Internet网关
你看,每个子网的路由表都很简洁。管理子网和应用子网通过NAT网关访问公网,数据子网完全隔离,公网子网直接挂载Internet网关。这样设计,安全、清晰、好维护。
总结一下:VPC是隔离的基石,子网是管理的单元,路由表是流量的控制器。这三者配合好了,PaaS平台的网络就稳了。下一章,咱们聊聊更细粒度的安全控制——安全组和网络ACL。
好了,今天就到这儿。有什么问题,欢迎在课程群里交流。记住,网络规划这事儿,宁可多花时间设计,也别上线后再返工。我见过太多因为网络规划不合理,导致整个PaaS平台重搭的案例了。嗯,咱们不做那种冤大头。