大家好,我是云计算初学博主,近期跟着课程完成虚拟化原理、Google 三大分布式核心技术、AWS 公有云、OpenStack 私有云从 0 到 1 部署全流程学习与实操,本篇整合理论知识 + 真机实操踩坑经验,从底层原理落地到企业私有云搭建,零基础也能看懂,内容覆盖考试考点 + 企业实操,全文分为三大板块:虚拟化技术详解→云计算核心理论(GFS/MapReduce/Bigtable/AWS)→CentOS7 双节点 OpenStack 实战部署,收藏备用!

实验环境:VMware 虚拟机两台(controller 控制节点:192.168.1.241;compute 计算节点:192.168.1.242)、CentOS7 系统、双网卡配置(ens33 管理网卡、ens36 存储网卡 20.0.0.10)、额外新增 sdb/sdc 两块 20G 磁盘用于块存储与对象存储。

一、虚拟化技术基础|私有云底层基石

1.1 虚拟化定义与诞生初衷

狭义虚拟化:单台物理硬件拆分多台独立虚拟机,隔离操作系统与应用;广义虚拟化:CPU / 内存 / 存储 / 网络全资源抽象,屏蔽硬件细节。 早年服务器单机只跑单一业务,硬件资源利用率不足 20%,硬件资源严重浪费,虚拟化应运而生;1960 年 IBM CP-67 是全球首个商用虚拟化系统,90 年代 VMware Workstation 问世拉开 PC 虚拟化时代序幕。 Hypervisor(VMM 虚拟机监视器)两大架构

类型特点代表产品
裸金属型(Type1)直接运行硬件,无宿主 OS,性能高、安全性强ESXi、Hyper-V、Xen
宿主型(Type2)依托宿主操作系统安装,部署简单,损耗少量性能VMware Workstation、VirtualBox、KVM、QEMU

1.2 虚拟化优缺点 & 常见落地产品

优点:硬件利用率提升、业务快速部署、故障隔离、运维简化、资源弹性调配缺点:虚拟化层占用硬件资源、运维门槛提升、虚拟化隔离带来安全隐患

  • 桌面虚拟化:VirtualBox(全开源免费)、VMware Workstation(Pro 商用 / Player 免费)
  • 内核虚拟化:Linux 内置 KVM(OpenStack 底层默认虚拟化驱动)
  • 容器虚拟化:Docker(操作系统级虚拟化,无完整 OS 内核,轻量化部署)

补充:Docker 与传统虚拟机区别:虚拟机虚拟化整套硬件 + OS,Docker 共享宿主机内核,镜像体积小、启动秒级,是微服务 & 云原生主流方案。

二、云计算核心理论:Google 三剑客 + AWS 公有云架构

2.1 Google 云计算三驾马车(大数据基石,Hadoop 技术源头)

2003-2006 谷歌连续发布三篇经典论文,诞生GFS(分布式存储)、MapReduce(分布式计算)、Bigtable(分布式结构化数据库),HDFS、Hadoop MR、HBase 全部基于三篇论文开源落地。

① GFS 分布式文件系统
  • 架构:Master 元数据节点 + ChunkServer 数据节点 + 客户端,默认数据块 64MB,每个 Chunk3 副本存储实现高可用。
  • 核心机制:Master 只存文件目录与块位置,不存磁盘偏移;客户端先找 Master 拿块地址,直连 ChunkServer 读写(控制流、数据流分离);心跳探测故障节点、副本自动迁移、租约机制保障写入一致性。
  • 优势:廉价服务器组建集群、海量大文件优化、追加写入高并发、故障自动容错。
② MapReduce 分布式计算(分而治之思想)

核心两步:Map 拆分数据、Reduce 聚合结果,经典案例:WordCount 单词统计

  1. Split:原始大数据切分成多份分片,分发多台 Worker;
  2. Map:单机分片遍历,输出 <单词,1> 键值对;
  3. Shuffle:相同 Key 数据汇总排序,分发对应 Reduce;
  4. Reduce:累加相同 Key 的 Value,输出最终统计结果。

容错:Worker 宕机任务重新调度;Master 故障依靠检查点回滚数据。

③ Bigtable 分布式列存储数据库
  • 数据模型:(Row行键、Column列族、TimeStamp时间戳)→Value,同一行连续存储、按列族划分权限、多版本时间戳留存历史数据。
  • 存储结构:大表拆分为多个 Tablet 子表,子表 = 内存 MemTable + 磁盘 SSTable + 操作日志;内存满后落盘 SSTable,布隆过滤器加速数据检索。
  • 对比传统 MySQL:横向无限扩容、适配海量半结构化数据、PB 级单表存储,NoSQL 数据库鼻祖。

2.2 AWS 公有云核心架构(行业标杆 IaaS)

  1. 基础存储 Dynamo:去中心化键值数据库 一致性哈希 + 虚拟节点解决数据分片倾斜,多副本 + 提示移交(Hinted Handoff)处理临时故障、Merkle 树校验数据一致性、向量时钟解决多节点数据冲突,S3 存储服务底层基于 Dynamo 开发。
  2. 两大王牌服务
  • EC2 弹性云主机:AMI 镜像启动实例,按需扩缩容、搭配负载均衡 ELB、自动伸缩 AutoScaling;
  • S3 对象存储:Bucket(全局唯一文件夹)+Object(文件对象),最终一致性模型、ACL + 密钥双重安全认证。

三、实战落地|双节点 OpenStack 私有云全流程部署(CentOS7)

3.0 整体架构 & IP 规划

节点名称管理网卡 ens33外网网卡 ens36额外磁盘核心组件
controller 控制192.168.1.24120.0.0.10sdb (块存储)/sdc (对象存储)Keystone/Glance/Nova 控制端 / Cinder 控制端 / Horizon
compute 计算192.168.24220.0.0.20sdb/sdcNova 计算端 / Cinder 计算端

前置说明:采用 iaas 一键脚本部署,环境变量统一配置在/etc/xiandian/openrc.sh,所有密码统一 000000。

步骤 1:硬件磁盘分区(两台节点都操作)

  1. 识别新增硬盘:echo "- - -">/sys/class/scsi_host/host0/scanfdisk -l查看 /dev/sdb、/dev/sdc;
  2. 分区:fdisk /dev/sdb→n 新建主分区→t 改分区 ID 为 8e→w 保存,sdc 同操作;
  3. 格式化:mkfs.xfs /dev/sdb1mkfs.xfs /dev/sdc1(sdb1 挂载 Cinder 块存储,sdc1 挂载 Swift 对象存储)。

步骤 2:网卡静态 IP 配置(重点:ens36 配置 20.0.0.10)

ens36 永久配置(/etc/sysconfig/network-scripts/ifcfg-ens36)

TYPE=Ethernet BOOTPROTO=static NAME=ens36 DEVICE=ens36 ONBOOT=yes IPADDR=20.0.0.10 PREFIX=24 

重启网络:systemctl restart networkip a验证 IP 生效,临时配置:ip addr add 20.0.0.10/24 dev ens36

坑点记录:之前 ens36IP 莫名丢失,原因ONBOOT=no 开机不自启,配置务必开启开机自启。

主机名修改

# controller hostnamectl set-hostname controller

# compute hostnamectl set-hostname compute

步骤 3:自建本地 YUM 源 + 搭建 VSFTP 私有源(controller 节点)

  1. 备份原有源:mv /etc/yum.repos.d/* /opt/
  2. 挂载 CentOS&IAAS 光盘,复制软件至 /opt/centos、/opt/iaas-repo;
  3. 配置本地 repo:

[centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1

[iaas] name=iaas baseurl=file:///opt/iaas-repo gpgcheck=0 enabled=1

搭建 vsftpd 匿名源(compute 通过 ftp 拉取源)

yum install vsftpd -y # 修改/etc/vsftpd/vsftpd.conf,添加anon_root=/opt systemctl start vsftpd && systemctl enable vsftpd # compute节点yum源baseurl改为ftp://192.168.1.241/centos

关闭防火墙(测试环境)

systemctl stop firewalld

systemctl disable firewalld

yum clean all && yum list #校验yum源可用性

步骤 4:OpenStack 全局环境变量配置(双节点 /etc/xiandian/openrc.sh)

在配置文件末尾追加全部参数(关键截取):

HOST_IP=192.168.1.241 HOST_NAME=controller HOST_IP_NODE=192.168.1.242 HOST_NAME_NODE=compute ADMIN_PASS=000000 DB_PASS=000000 BLOCK_DISK=sdb1 OBJECT_DISK=sdc1 INTERFACE_NAME=ens33 # Keystone/Glance/Nova/Cinder各组件数据库密码统一000000

OpenStack 各组件分步一键部署(脚本路径 /usr/local/bin/)

组件controller 操作compute 操作
基础环境iaas-pre-host.shiaas-pre-host.sh,yum install MySQL-python
Mysql 数据库iaas-install-mysql.sh无需安装
Keystone 认证iaas-install-keystone.sh无需安装
Glance 镜像iaas-install-glance.sh,上传 qcow2 镜像无需安装
Nova 计算iaas-install-nova-controller.shiaas-install-nova-compute.sh
Cinder 块存储iaas-install-cinder-controller.shiaas-install-cinder-compute.sh
Horizon 面板iaas-install-dashboard.sh,访问 http://controller/dashboard无需安装

步骤 6:平台功能验证

  1. 浏览器访问控制面板:http://192.168.1.241/dashboard,账号 admin/000000;
  2. 镜像验证:项目→镜像,查看提前上传的 CentOS 镜像;
  3. 云主机测试:创建实例,验证双节点计算资源调度、块存储挂载。

四、实操踩坑总结|初学者必看避坑

  1. 网卡 IP 丢失:配置文件ONBOOT=yes必须开启,临时配置重启失效只适合调试;
  2. VSFTP 无法访问源:关闭防火墙 + SELinux,anon_root 目录权限全开;
  3. OpenStack 组件安装失败:优先核对 openrc.sh 环境变量 IP、密码、磁盘分区名称;
  4. Horizon 打不开:检查 httpd 服务、防火墙放行 80 端口。

五、结尾总结 & 后续学习计划

从虚拟化底层→公有云架构→私有云落地,完整打通云计算 IaaS 全链路,理论对接实操。后续计划:①学习 Neutron 自定义网络;②尝试手动分步安装 OpenStack(脱离一键脚本);③学习 Docker 容器 + K8s 云原生技术。

以下是我的做的步骤图片(仅供参考)

更多推荐