从理论到落地|云计算全解:虚拟化 + 谷歌三剑客 + 双节点 OpenStack 私有云实战
大家好,我是云计算初学博主,近期跟着课程完成虚拟化原理、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 单词统计
- Split:原始大数据切分成多份分片,分发多台 Worker;
- Map:单机分片遍历,输出 <单词,1> 键值对;
- Shuffle:相同 Key 数据汇总排序,分发对应 Reduce;
- Reduce:累加相同 Key 的 Value,输出最终统计结果。
容错:Worker 宕机任务重新调度;Master 故障依靠检查点回滚数据。
③ Bigtable 分布式列存储数据库
- 数据模型:
(Row行键、Column列族、TimeStamp时间戳)→Value,同一行连续存储、按列族划分权限、多版本时间戳留存历史数据。 - 存储结构:大表拆分为多个 Tablet 子表,子表 = 内存 MemTable + 磁盘 SSTable + 操作日志;内存满后落盘 SSTable,布隆过滤器加速数据检索。
- 对比传统 MySQL:横向无限扩容、适配海量半结构化数据、PB 级单表存储,NoSQL 数据库鼻祖。
2.2 AWS 公有云核心架构(行业标杆 IaaS)
- 基础存储 Dynamo:去中心化键值数据库 一致性哈希 + 虚拟节点解决数据分片倾斜,多副本 + 提示移交(Hinted Handoff)处理临时故障、Merkle 树校验数据一致性、向量时钟解决多节点数据冲突,S3 存储服务底层基于 Dynamo 开发。
- 两大王牌服务
- EC2 弹性云主机:AMI 镜像启动实例,按需扩缩容、搭配负载均衡 ELB、自动伸缩 AutoScaling;
- S3 对象存储:Bucket(全局唯一文件夹)+Object(文件对象),最终一致性模型、ACL + 密钥双重安全认证。
三、实战落地|双节点 OpenStack 私有云全流程部署(CentOS7)
3.0 整体架构 & IP 规划
| 节点名称 | 管理网卡 ens33 | 外网网卡 ens36 | 额外磁盘 | 核心组件 |
|---|---|---|---|---|
| controller 控制 | 192.168.1.241 | 20.0.0.10 | sdb (块存储)/sdc (对象存储) | Keystone/Glance/Nova 控制端 / Cinder 控制端 / Horizon |
| compute 计算 | 192.168.242 | 20.0.0.20 | sdb/sdc | Nova 计算端 / Cinder 计算端 |
前置说明:采用 iaas 一键脚本部署,环境变量统一配置在/etc/xiandian/openrc.sh,所有密码统一 000000。
步骤 1:硬件磁盘分区(两台节点都操作)
- 识别新增硬盘:
echo "- - -">/sys/class/scsi_host/host0/scan,fdisk -l查看 /dev/sdb、/dev/sdc; - 分区:
fdisk /dev/sdb→n 新建主分区→t 改分区 ID 为 8e→w 保存,sdc 同操作; - 格式化:
mkfs.xfs /dev/sdb1、mkfs.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 network,ip 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 节点)
- 备份原有源:
mv /etc/yum.repos.d/* /opt/; - 挂载 CentOS&IAAS 光盘,复制软件至 /opt/centos、/opt/iaas-repo;
- 配置本地 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.sh | iaas-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.sh | iaas-install-nova-compute.sh |
| Cinder 块存储 | iaas-install-cinder-controller.sh | iaas-install-cinder-compute.sh |
| Horizon 面板 | iaas-install-dashboard.sh,访问 http://controller/dashboard | 无需安装 |
步骤 6:平台功能验证
- 浏览器访问控制面板:
http://192.168.1.241/dashboard,账号 admin/000000; - 镜像验证:项目→镜像,查看提前上传的 CentOS 镜像;
- 云主机测试:创建实例,验证双节点计算资源调度、块存储挂载。
四、实操踩坑总结|初学者必看避坑
- 网卡 IP 丢失:配置文件
ONBOOT=yes必须开启,临时配置重启失效只适合调试; - VSFTP 无法访问源:关闭防火墙 + SELinux,anon_root 目录权限全开;
- OpenStack 组件安装失败:优先核对 openrc.sh 环境变量 IP、密码、磁盘分区名称;
- Horizon 打不开:检查 httpd 服务、防火墙放行 80 端口。
五、结尾总结 & 后续学习计划
从虚拟化底层→公有云架构→私有云落地,完整打通云计算 IaaS 全链路,理论对接实操。后续计划:①学习 Neutron 自定义网络;②尝试手动分步安装 OpenStack(脱离一键脚本);③学习 Docker 容器 + K8s 云原生技术。
以下是我的做的步骤图片(仅供参考)





































更多推荐
所有评论(0)