云网络
云网络是连接云计算资源的纽带,它提供了虚拟网络、负载均衡、内容分发等核心能力。理解云网络对于构建安全、高性能的云应用至关重要。
云网络概述
云网络将传统网络功能虚拟化,通过软件定义网络(SDN)技术实现网络的灵活配置和管理。用户可以在云中创建自己的虚拟网络,完全控制网络拓扑、IP地址分配、路由策略等。
云网络的核心价值
网络隔离:通过虚拟私有云(VPC)实现网络隔离,不同用户的网络相互独立,提高安全性。
灵活配置:可以随时创建、修改和删除网络资源,适应业务的动态变化。
全球互联:云服务商提供全球网络骨干,实现跨区域的高速互联。
按需付费:网络资源按使用量付费,降低网络成本。
虚拟私有云(VPC)
虚拟私有云(Virtual Private Cloud,VPC)是云网络的核心概念,它允许用户在云中创建一个隔离的虚拟网络环境。
VPC的核心概念
VPC:一个隔离的虚拟网络,用户可以完全控制IP地址范围、子网、路由表和网络网关。
子网:VPC内的IP地址块,子网必须位于某个可用区。子网分为公有子网(有公网访问能力)和私有子网(无公网访问能力)。
路由表:定义网络流量的路由规则,决定流量从哪里发出。
互联网网关:允许VPC内的资源与互联网通信。
NAT网关:允许私有子网中的资源访问互联网,同时阻止互联网发起的连接。
VPC架构设计
一个典型的VPC架构包括:
公有子网:部署需要直接访问互联网的资源,如Web服务器、负载均衡器。
私有子网:部署不需要直接访问互联网的资源,如数据库、应用服务器。
数据库子网:专门用于部署数据库的私有子网,通常有额外的安全限制。
VPC配置示例
以AWS VPC为例,创建一个包含公有子网和私有子网的VPC:
# 创建VPC
aws ec2 create-vpc --cidr-block 10.0.0.0/16
# 创建公有子网
aws ec2 create-subnet \
--vpc-id vpc-12345678 \
--cidr-block 10.0.1.0/24 \
--availability-zone us-east-1a
# 创建私有子网
aws ec2 create-subnet \
--vpc-id vpc-12345678 \
--cidr-block 10.0.2.0/24 \
--availability-zone us-east-1a
# 创建互联网网关
aws ec2 create-internet-gateway
# 将互联网网关附加到VPC
aws ec2 attach-internet-gateway \
--vpc-id vpc-12345678 \
--internet-gateway-id igw-12345678
# 创建路由表
aws ec2 create-route-table --vpc-id vpc-12345678
# 添加路由到互联网
aws ec2 create-route \
--route-table-id rtb-12345678 \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-12345678
# 将路由表关联到公有子网
aws ec2 associate-route-table \
--subnet-id subnet-12345678 \
--route-table-id rtb-12345678
VPC对等连接
VPC对等连接允许两个VPC之间进行通信,就像它们在同一个网络中一样。VPC可以在同一账户或不同账户之间,也可以在同一区域或不同区域之间。
应用场景:
- 跨账户资源共享
- 跨区域数据同步
- 开发环境和生产环境互联
VPC最佳实践
合理规划CIDR块:预留足够的IP地址空间,考虑未来的扩展需求。避免使用重叠的CIDR块,以便VPC对等连接。
多可用区部署:在多个可用区创建子网,提高可用性。
最小权限原则:安全组和网络ACL只开放必要的端口和协议。
使用NAT网关:私有子网通过NAT网关访问互联网,提高安全性。
负载均衡
负载均衡将传入的流量分发到多个后端服务器,提高应用的可用性和性能。
负载均衡的类型
四层负载均衡(Layer 4):基于IP地址和端口进行流量分发,不检查请求内容。性能高,适合TCP/UDP流量。
七层负载均衡(Layer 7):基于HTTP/HTTPS请求内容进行流量分发,可以根据URL、Header、Cookie等进行路由。功能丰富,适合Web应用。
负载均衡的核心功能
健康检查:定期检查后端服务器的健康状态,自动将流量路由到健康的服务器。
会话保持:将同一用户的请求路由到同一后端服务器,保持会话状态。
SSL终止:在负载均衡器上处理SSL/TLS加密,减轻后端服务器的负担。
跨可用区负载均衡:将流量分发到多个可用区的后端服务器,提高可用性。
主流负载均衡产品
| 云服务商 | 四层负载均衡 | 七层负载均衡 |
|---|---|---|
| AWS | Network Load Balancer | Application Load Balancer |
| Azure | Load Balancer | Application Gateway |
| GCP | TCP Proxy Load Balancer | HTTP(S) Load Balancer |
| 阿里云 | 传统型负载均衡CLB | 应用型负载均衡ALB |
负载均衡配置示例
以AWS ALB为例,创建一个HTTP负载均衡器:
# 创建目标组
aws elbv2 create-target-group \
--name my-targets \
--protocol HTTP \
--port 80 \
--vpc-id vpc-12345678
# 注册目标
aws elbv2 register-targets \
--target-group-arn arn:aws:elasticloadbalancing:... \
--targets Id=i-12345678 Id=i-87654321
# 创建负载均衡器
aws elbv2 create-load-balancer \
--name my-load-balancer \
--subnets subnet-12345678 subnet-87654321 \
--security-groups sg-12345678
# 创建监听器
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:... \
--protocol HTTP \
--port 80 \
--default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:...
内容分发网络(CDN)
内容分发网络(Content Delivery Network,CDN)将内容缓存到全球各地的边缘节点,用户从最近的节点获取内容,大大降低延迟。
CDN的工作原理
- 用户请求内容
- DNS将请求解析到最近的CDN节点
- CDN节点检查是否有缓存
- 如果有缓存,直接返回内容
- 如果没有缓存,从源站获取内容并缓存
CDN的核心功能
静态内容加速:缓存图片、CSS、JavaScript等静态资源,加速网页加载。
动态内容加速:通过优化的网络路径传输动态内容,降低延迟。
视频点播和直播:提供视频内容的分发和加速服务。
安全防护:提供DDoS防护、WAF等安全功能。
主流CDN产品
| 云服务商 | CDN产品 | 特点 |
|---|---|---|
| AWS | CloudFront | 与AWS服务深度集成 |
| Azure | CDN | 多种定价层级 |
| GCP | Cloud CDN | 与GCP负载均衡集成 |
| 阿里云 | CDN | 国内节点覆盖广 |
CDN配置示例
以AWS CloudFront为例,创建一个CDN分发:
# 创建CloudFront分发
aws cloudfront create-distribution \
--origin-domain-name my-bucket.s3.amazonaws.com \
--default-cache-behavior \
TargetOriginId=my-origin,\
ViewerProtocolPolicy=redirect-to-https,\
AllowedMethods=GET,HEAD,\
CachedMethods=GET,HEAD,\
ForwardedValues="{QueryString=false,Cookies={Forward=none}}"
DNS服务
DNS服务将域名解析为IP地址,是云网络的重要组成部分。
云DNS的特点
高可用性:分布式DNS服务器,保证解析服务的高可用。
低延迟:全球分布的DNS节点,提供低延迟的解析服务。
健康检查:监控后端服务的健康状态,自动切换到健康的端点。
流量路由:支持基于延迟、地理位置、权重等策略的流量路由。
主流DNS产品
| 云服务商 | DNS产品 | 特点 |
|---|---|---|
| AWS | Route 53 | 功能全面,支持多种路由策略 |
| Azure | Azure DNS | 与Azure服务集成 |
| GCP | Cloud DNS | 简单易用 |
| 阿里云 | 云解析DNS | 国内解析速度快 |
网络安全
安全组
安全组是虚拟防火墙,控制虚拟机的入站和出站流量。
特点:
- 在实例级别运行
- 只允许规则,没有拒绝规则
- 有状态:返回流量自动允许
- 可以引用其他安全组
配置示例:
# 创建安全组
aws ec2 create-security-group \
--group-name my-security-group \
--description "My security group" \
--vpc-id vpc-12345678
# 添加入站规则
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
# 添加SSH规则(仅允许特定IP)
aws ec2 authorize-security-group-ingress \
--group-id sg-12345678 \
--protocol tcp \
--port 22 \
--cidr 203.0.113.0/24
网络ACL
网络ACL是子网级别的防火墙,控制子网的入站和出站流量。
特点:
- 在子网级别运行
- 同时支持允许和拒绝规则
- 无状态:返回流量需要明确允许
- 按规则编号顺序处理
安全组与网络ACL对比
| 特性 | 安全组 | 网络ACL |
|---|---|---|
| 运行级别 | 实例 | 子网 |
| 规则类型 | 只允许 | 允许和拒绝 |
| 状态 | 有状态 | 无状态 |
| 规则处理 | 全部评估 | 按顺序处理 |
网络最佳实践
分层网络架构
采用分层网络架构,将不同功能的资源部署在不同的子网:
- Web层:部署在公有子网,处理用户请求
- 应用层:部署在私有子网,处理业务逻辑
- 数据层:部署在私有子网,存储数据
高可用设计
- 在多个可用区部署资源
- 使用跨可用区的负载均衡器
- 配置健康检查和自动故障转移
安全加固
- 使用最小权限原则配置安全组
- 启用VPC流日志监控网络流量
- 使用VPN或专线连接企业数据中心
性能优化
- 使用CDN加速静态内容
- 选择合适的负载均衡类型
- 优化网络路由和延迟
小结
本章介绍了云网络的核心概念和技术。VPC提供了隔离的虚拟网络环境;负载均衡实现了流量的分发和高可用;CDN加速了内容的分发;DNS服务提供了域名解析能力。理解这些网络服务对于构建安全、高性能的云应用至关重要。
下一章我们将探讨云安全,了解云计算中的安全架构和最佳实践。