云原生运维实战笔记:华为云计算与网络类服务全景解析
在之前的系列笔记中,我们深入剖析了开源云平台OpenStack的各大核心组件(Nova、Glance、Neutron等),对私有云的底层架构有了系统性的认知。然而,在企业实际的生产环境中,公有云由于其免运维、高可用和极速弹性等特性,已经成为承载绝大多数业务的首选底座。
今天的学习重点正式转向公有云的商业落地------华为云。本篇笔记将严格按照实验手册,围绕**计算类服务(ECS、IMS、AS)与网络类服务(VPC、EIP、ELB、对等连接、VPN)**进行全流程的实操演练。笔记不仅会详尽记录每一步的配置命令与执行结果,还会结合底层技术原理进行深度拓展,剖析公有云产品背后隐藏的架构机制。
一、 计算类服务基础理论与底层逻辑
在开始实操前,有必要理清公有云计算资源的分类与云化趋势。
1.1 云计算演进与核心特征
传统企业IT架构面临着业务上线慢、扩展困难、可靠性不强、I/O瓶颈导致延迟以及TCO(总拥有成本)居高不下等问题。云计算通过资源池化,将计算、存储、网络等资源以按需自助服务、广泛的网络访问、快速伸缩性以及可计量的方式对外提供。其关键技术支撑包括虚拟化技术(底层基石)、分布式数据存储技术(高吞吐、高传输)以及海量数据管理技术。
1.2 核心计算服务概览
华为云提供的计算服务涵盖了多个层次:
- ECS(弹性云服务器):由CPU、内存、操作系统、云硬盘组成的基础计算组件,提供开箱即用的虚拟化算力。
- BMS(裸金属服务器):用户独享的物理服务器,无虚拟化开销,性能卓越,适用于核心数据库、高性能计算等场景。
- CCE(云容器引擎):基于Kubernetes的容器编排服务,提供高度可扩展的容器化应用管理能力。
- IMS(镜像服务):提供镜像生命周期管理,是业务批量部署与迁移的模板。
- AS(弹性伸缩):根据策略自动调整计算资源,保障业务平稳运行并节省成本。
公有云通常在Region(区域)下划分多个AZ(可用区),AZ之间物理隔离(独立的风火水电),但网络时延极低(通常<1ms),以此实现高可用容灾。
二、 计算类服务深度实操
本节将进入实验环境,完成ECS、IMS与AS的全生命周期管理。
2.1 基础设施准备:VPC与密钥对
在发放ECS前,必须先构建隔离的虚拟网络环境。
- 登录华为云控制台(华东-上海一),进入虚拟私有云VPC ,创建
vpc-default(网段192.168.0.0/16),并在其下创建子网subnet-2fb(网段192.168.0.0/24)。 - 进入数据加密服务DEW -> 密钥对管理 ,创建名为
KeyPair-b669的密钥对。系统会自动下载KeyPair-b669.pem私钥文件。该机制基于非对称加密RSA算法,公钥注入实例,私钥由用户保管,用于后续的免密登录解密。
2.2 ECS的创建与登录
进入弹性云服务器ECS控制台,购买两台不同操作系统的实例:
- Windows实例(ecs-windows) :规格选
s6.large.2(2vCPUs/4GB),镜像选"Windows Server 2012 R2 数据中心版 64位",登录凭证选密钥对KeyPair-b669。 - Linux实例(ecs-linux) :规格选
s6.small.1(1vCPU/1GB),镜像选"CentOS 7.6 64bit",登录凭证选密码方式,设置root密码。
登录Windows实例:
由于使用密钥对,需先解密初始密码。在ECS控制台操作列点击"获取密码",选择本地的.pem文件,获取明文密码。
打开本地终端的"运行"(Win+R),输入mstsc,输入Windows实例的公网IP和账号(Administrator)及解密后的密码,即可进入远程桌面。
登录Linux实例:
由于未绑定EIP,此处使用控制台自带的CloudShell进行登录。
在ECS控制台操作列点击"远程登录",选择CloudShell,输入用户名root及设定密码。
bash
# 验证系统版本
[root@ecs-linux ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@ecs-linux ~]# uname -r
3.10.0-957.21.3.el7.x86_64
2.3 ECS规格变更(Resize)
当业务负载增加,需要提升配置。在ECS控制台将ecs-windows关机,点击"更多" -> "变更规格",将其从4GB内存变更为8GB内存,提交并开机。该过程在底层类似于Nova的Resize操作,涉及计算节点间的资源重新分配与实例迁移。
2.4 IMS私有镜像制作与业务验证
为了验证镜像的批量部署能力,我们在一台Linux实例上安装Web服务并打包为私有镜像。
前置配置检查(极其重要):
bash
# 1. 确保网卡DHCP开启(公有云必须)
[root@ecs-linux ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
PERSISTENT_DHCLIENT="yes"
# 2. 检查cloud-init安装(用于新实例初始化)
[root@ecs-linux ~]# which cloud-init
/usr/local/bin/cloud-init
# 3. 检查一键式重置密码插件
[root@ecs-linux ~]# ps -ef | grep cloudResetPwdAgent
root 1234 1 0 10:00 ? 00:00:00 /usr/local/cloudResetPwdAgent/bin/cloudResetPwdAgent
部署业务并创建镜像:
bash
[root@ecs-linux ~]# yum install -y httpd
[root@ecs-linux ~]# systemctl enable httpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@ecs-linux ~]# echo "Hello Huawei Cloud" > /var/www/html/index.html
此时在外部访问公网IP(需安全组放通80端口)即可看到页面。随后,在控制台基于该ECS创建私有镜像img_web。用该私有镜像创建的新ECS,自带Apache服务,验证了环境一致性。
2.5 弹性伸缩(AS)架构与策略
AS由伸缩配置(ECS模板)、伸缩组(实例集合)和伸缩策略(触发条件)组成。
- 创建伸缩配置 :基于
ecs-windows规格创建,分配公网IP,选择密钥对。 - 创建伸缩组:设定最大实例数为5,期望实例数为2,最小实例数为1。多可用区策略选均衡分布。
- 创建伸缩策略:添加周期策略,设定每天18:00增加1个实例,23:00减少1个实例,冷却时间设为900秒(防止频繁伸缩导致资源震荡)。
- 验证:点击"立即执行策略",在"活动历史"中可查看到"定时策略触发,减少3个实例"的记录,ECS控制台对应实例被销毁。
三、 网络类服务实战与排障
网络是云上业务的血管。本节涵盖了VPC内部通信、安全组控制、公网访问、负载均衡以及跨VPC、跨Region的复杂网络互通实验。
3.1 VPC与基础网络通信验证
在华东-上海一区域创建两个VPC:
VPC-SH01:网段192.168.0.0/16,包含子网subnet-01(192.168.0.0/24)和subnet-02(192.168.1.0/24)。VPC-SH02:网段10.0.0.0/16,包含子网subnet-03(10.0.0.0/24)。
在VPC-SH01中创建ecs-sh-01(IP: 192.168.0.169)和ecs-sh-02(IP: 192.168.1.13)。在VPC-SH02中创建ecs-sh-03(IP: 10.0.0.38)。
同VPC互通测试:
登录ecs-sh-02,Ping ecs-sh-01:
bash
[root@ecs-sh-02 ~]# ping 192.168.0.169
PING 192.168.0.169 (192.168.0.169) 56(84) bytes of data.
64 bytes from 192.168.0.169: icmp_seq=1 ttl=64 time=0.869 ms
64 bytes from 192.168.0.169: icmp_seq=2 ttl=64 time=0.343 ms
结果:同一VPC下的不同子网默认互通(底层通过VPC虚拟路由器转发)。
跨VPC隔离测试:
在ecs-sh-02上Ping ecs-sh-03:
bash
[root@ecs-sh-02 ~]# ping 10.0.0.38
PING 10.0.0.38 (10.0.0.38) 56(84) bytes of data.
# 长时间无回显,超时。
结果:不同VPC之间二层完全隔离,默认不通。
3.2 安全组通信控制
安全组是基于有状态(Stateful)的包过滤虚拟防火墙,运行在Hypervisor层,独立于操作系统内部的iptables。
进入控制台的安全组 页面,将默认安全组的所有入方向规则删除。
再次在ecs-sh-02上Ping ecs-sh-01,由于没有放通ICMP协议,Ping请求被直接丢弃。
返回安全组页面,点击"一键放通",添加入方向规则(允许ICMP、TCP 22、TCP 3389等),再次Ping测试,网络恢复互通。
3.3 EIP与公网访问
为ecs-sh-02绑定弹性公网IP(EIP)。
bash
# 在ecs-sh-02上测试公网访问
[root@ecs-sh-02 ~]# ping baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=50 time=32.8 ms
底层机制:EIP本质上是NAT网关上的1:1 NAT映射,将公网IP的流量NAT转换为实例的私网IP,使实例具备访问公网及被公网访问的能力。
3.4 ELB弹性负载均衡
ELB是将访问流量根据分配策略分发到后端多台服务器的流量分发控制服务,解决单点故障并提升系统吞吐量。
- 在
ecs-sh-01和ecs-sh-02上启动HTTP服务:
bash
[root@ecs-sh-01 ~]# nohup python -m SimpleHTTPServer 8889 > /dev/null 2>&1 &
[root@ecs-sh-02 ~]# nohup python -m SimpleHTTPServer 8889 > /dev/null 2>&1 &
# 创建用于区分的文件
[root@ecs-sh-01 ~]# touch SERVER1
[root@ecs-sh-02 ~]# touch SERVER2
- 购买ELB实例:选择共享型,绑定VPC-SH01,分配公网IP。
- 配置监听器:前端协议选HTTP,端口8881。后端服务器组选加权轮询算法,添加两台ECS的8889端口。
- 故障排查 :配置完成后,发现后端服务器健康检查状态为异常 。排查发现,安全组未放通8889端口。添加规则放通后,状态变为正常。
- 验证 :本地浏览器访问
http://<ELB_EIP>:8881,刷新页面,发现内容在SERVER1和SERVER2之间交替切换,负载均衡生效。
3.5 对等连接(Peering)
对等连接用于打通同区域不同VPC之间的网络。创建peering-sh连接VPC-SH01和VPC-SH02。关键步骤是配置路由:
- 在
VPC-SH01的路由表中添加目的地址10.0.0.0/8,下一跳指向对等连接。 - 在
VPC-SH02的路由表中添加目的地址192.168.0.0/16,下一跳指向对等连接。
bash
# 在ecs-sh-01上测试跨VPC通信
[root@ecs-sh-01 ~]# ping 10.0.0.38
PING 10.0.0.38 (10.0.0.38) 56(84) bytes of data.
64 bytes from 10.0.0.38: icmp_seq=1 ttl=63 time=0.966 ms
64 bytes from 10.0.0.38: icmp_seq=2 ttl=63 time=0.366 ms
结果:路由配置正确后,跨VPC内网互通成功。
3.6 VPN跨区域互通
由于不同Region的VPC无法建立对等连接,必须通过VPN进行加密隧道通信。
- 在北京四区域创建
VPC-BJ01(172.16.0.0/16)和ecs-bj-01。 - 在北京四和上海一分别创建VPN网关,并互相配置对端网关(填入对方VPN网关的EIP)。
- 创建VPN连接:配置静态路由,本端子网与对端子网(上海一填
192.168.0.0/16,北京四填172.16.0.0/12),预共享密钥需两端严格一致,配置IKE和IPSec策略。 - 验证:
bash
# 从北京ECS测试访问上海ECS
[root@ecs-bj-01 ~]# ping -c 5 192.168.0.169
PING 192.168.0.169 (192.168.0.169) 56(84) bytes of data.
64 bytes from 192.168.0.169: icmp_seq=3 ttl=63 time=29.2 ms
64 bytes from 192.168.0.169: icmp_seq=4 ttl=63 time=28.3 ms
--- 192.168.0.169 ping statistics ---
5 packets transmitted, 3 received, 40% packet loss, time 4002ms
rtt min/avg/max/mdev = 28.341/28.676/29.266/0.418 ms
结果:出现丢包是正常的(公网VPN波动及首次协商),后续稳定后通信正常。说明IPSec隧道建立成功,跨Region网络打通。
四、 底层机制探究与故障排查总结
在整个实验过程中,深入理解公有云的底层机制对于故障排查至关重要。
1. 为什么镜像制作前必须开启DHCP和安装Cloud-init?
公有云在实例启动时,通过网络注入(Metadata Service)下发网络配置和登录凭证。如果未开启DHCP,实例将无法获取IP,导致失联;如果未安装Cloud-init/Cloudbase-init,实例无法读取元数据,导致密钥对注入失败或密码无法重置。公共镜像默认已集成这些组件,自定义导入镜像必须手动配置。
2. 安全组为什么会拦截流量?
安全组是**有状态(Stateful)**的。在默认策略下(拒绝所有入站,允许所有出站),如果入站规则没有显式放通某个端口,流量在到达虚拟网卡前就会被云平台的虚拟化层(如OVS流表)直接丢弃。配置ELB时健康检查异常,往往是因为安全组未放通后端端口。
3. 为什么对等连接建立后仍不通?
对等连接只是建立了一条"物理连线",但VPC内部的路由表需要管理员手动添加路由条目,指定目标网段和下一跳地址。只有两端VPC的路由表都配置正确,数据包才知道往哪里转发。
4. 公有云AS与OpenStack Heat的对比
OpenStack的Heat通过YAML模板定义资源拓扑(编排),但实现自动扩容还需依赖Ceilometer监控和Aodh告警。华为云AS将这些功能高度集成,用户只需定义规则(如CPU>80%增加实例),底层自动完成监控、决策、发机和挂载ELB的全流程,屏蔽了复杂的底层组件依赖。
| 技术维度 | 华为云实现 | OpenStack原生组件 | 异同点分析 |
|---|---|---|---|
| 计算虚拟化 | ECS | Nova | 底层均基于KVM等Hypervisor,ECS提供更丰富的实例族(通用、计算、内存、GPU)。 |
| 镜像管理 | IMS | Glance | IMS支持系统盘/整机镜像秒级快照导出;Glance需自行管理存储后端。 |
| 网络管理 | VPC | Neutron | VPC隐藏了底层网络虚拟化(如VXLAN)细节,对用户呈现扁平化、易配置的网段模型。 |
| 弹性伸缩 | AS | Heat + Aodh | AS为SaaS化服务,开箱即用;OpenStack需手动编写HOT模板和配置告警触发链。 |
通过本次计算与网络类服务的系统性实操,我们不仅掌握了ECS、IMS、AS等计算组件的配置,还打通了VPC、安全组、EIP、ELB、对等连接与VPN构建的复杂云上网络拓扑。公有云在易用性和产品化程度上远超开源组件,但底层的网络流转、虚拟化调度和元数据注入逻辑依然万变不离其宗。掌握这些底层原理,是成为高级云原生运维工程师的必经之路。