1. 环境准备:从零开始的单机云平台基石
大家好,我是老张,一个在云平台和存储领域摸爬滚打了十来年的老运维。今天想和大家分享一个非常“接地气”的实战项目:在一台物理服务器上,从零开始,手把手搭建一个集成了Ceph分布式存储的OpenStack 2023.2社区版云平台。这个方案特别适合想深入学习OpenStack和Ceph集成、或者需要搭建一个轻量级私有云用于开发测试的朋友。我们这次的目标是“All-in-One”,也就是把所有核心组件都装在一台机器上,麻雀虽小,五脏俱全。别担心,我会把每一步都掰开揉碎了讲,包括我踩过的那些坑和解决方案。
首先,我们得明确这次搭建的“全家桶”版本。核心是OpenStack 2023.2,代号“Bobcat”。存储方面,我们选择Ceph的Pacific版本,这是一个非常稳定且与OpenStack集成良好的长期支持版。操作系统我选择了Rocky Linux 9.3,它是CentOS的完美继任者,稳定性和社区支持都没得说。硬件方面,我用的是一台戴尔服务器,CPU是英特尔至强银牌,内存64G。存储部分比较关键:系统盘是一块480G的SSD,另外我额外挂载了三块1TB的NVMe SSD硬盘,专门给Ceph当数据盘用。网络配置上,我规划了两个网卡:ens160作为管理网络(比如OpenStack各服务之间的通信、API访问),IP是192.168.10.20;ens192作为业务网络(未来虚拟机的流量),IP段是192.168.10.0/24。这个架构虽然简单,但已经具备了生产环境的雏形,理解了它,以后扩展到多节点集群就是水到渠成的事。
在真正动手安装系统之前,我强烈建议你先做好两件事。第一,去服务器厂商官网下载最新版的固件和驱动,把BIOS、BMC、网卡、RAID卡(如果你用了的话)的驱动都更新到最新。这能避免很多稀奇古怪的兼容性问题,我吃过亏。第二,如果你的服务器有硬件RAID卡,我建议在配置RAID时,系统盘做个RAID 1(镜像),保证系统高可用;而那三块给Ceph用的NVMe盘,千万不要做硬件RAID,直接以“JBOD”(直通)模式交给操作系统。因为Ceph自己就是软件定义的分布式存储,它需要在裸盘上直接操作,硬件RAID层反而会成为性能和管理的负担。把这些准备工作做扎实了,后面部署过程会顺畅很多。
2. Rocky Linux 9.3 系统初始化与关键配置
系统安装过程我就不赘述了,用Rocky Linux 9.3的ISO镜像启动,选择带GUI的服务器安装或者最小化安装都可以,按提示分区、设置root密码就行。安装完成后,重启进入系统,我们首先要做的是一系列“标准化”的初始化操作,这些操作看似基础,但却是整个平台稳定的前提。
### 2.1 基础环境调优:为自动化部署铺平道路
第一件事,安装我们后续离不开的工具包。打开终端,直接用root用户执行:
dnf install -y vim wget curl net-tools unzip tmux openssh* python3 python3-pip
这里我特意加上了tmux,因为它能在你执行长时间部署任务时,防止因为SSH会话断开而导致前功尽弃,非常实用。接下来,修改主机名并让它立刻生效:
hostnamectl set-hostname control01 && exec bash
然后,为了减少初期部署时可能遇到的权限和访问阻碍(生产环境请根据安全策略重新收紧),我们先禁用防火墙和SELinux:
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
注意:setenforce 0是临时生效,修改配置文件是永久生效,两者都做,确保重启后也不会再启用。
网络配置是关键。我们需要配置静态IP,并且确保业务网卡(ens192)不通过DHCP获取地址。编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens160和ifcfg-ens192(如果你的Rocky 9使用了新的NetworkManager,配置文件路径可能不同,可以用nmcli命令来配置)。核心是确保ens160有固定的管理IP(如192.168.10.20),而ens192的配置中BOOTPROTO设为none或static,并指定IP地址。配置完后用systemctl restart network重启网络服务。
### 2.2 解决第一个“拦路虎”:SSH服务的坑
这里我要重点讲一个我遇到的坑,也是很多新手会卡住的地方。我们后面部署Ceph和Kolla-Ansible,都需要在节点间(虽然我们只有一台,但工具逻辑如此)通过SSH免密通信。但Rocky Linux 9.3默认的SSH配置可能比较严格。按照常规思路配置了SSH密钥后,执行cephadm bootstrap或者Kolla-Ansible的检查时,可能会一直报错,提示SSH连接失败,即使手动SSH localhost没问题。
我折腾了半天才发现,问题可能出在SSH服务本身的一些兼容性上。我的解决方法是彻底重装一下openssh,并明确允许root登录(再次强调,仅用于实验环境):
dnf remove -y openssh*
dnf install -y openssh*
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config # 初期也可以用密码,方便调试
systemctl restart sshd && systemctl enable sshd
重装之后,SSH服务焕然一新,之前的连接问题就消失了。记得也把公钥id_rsa.pub内容追加到~/.ssh/authorized_keys中,实现本机自身的免密登录。

1857

被折叠的 条评论
为什么被折叠?



