OpenStack 全套搭建部署指南(基于 Kolla-Ansible)

一、环境准备

1. 硬件要求

  • 控制节点:至少 4 核 CPU,8GB 内存,100GB 磁盘(推荐 SSD)。

  • 计算节点:根据虚拟机需求调整,建议 8 核 CPU,16GB 内存,200GB+ 磁盘。

  • 网络节点(可选):若需独立网络服务,分配 2 核 CPU,4GB 内存。

2. 操作系统

  • 推荐系统:Ubuntu 22.04 LTS 或 CentOS 9 Stream。

  • 所有节点需满足以下条件

    复制代码
    # 关闭 SELinux(CentOS)  
    sudo setenforce 0  
    sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config # 关闭防火墙(测试环境) sudo systemctl stop firewalld && sudo systemctl disable firewalld # CentOS sudo ufw disable # Ubuntu # 配置时间同步(NTP/Chrony) sudo timedatectl set-ntp true 

3. 主机名与网络规划

  • 主机名 :确保所有节点的主机名可解析(如 controller, compute1)。

  • 网络规划

    • 管理网络(Management Network):10.0.0.0/24

    • 业务网络(Tunnel/Data Network):10.0.1.0/24

    • 外部网络(External Network):与物理网络桥接(如 192.168.1.0/24)。


二、安装依赖与工具

1. 安装 Python 和 Ansible

复制代码
# Ubuntu  
sudo apt update  
sudo apt install -y python3-dev python3-pip git sudo pip3 install -U pip ansible # CentOS sudo dnf install -y python3-devel git sudo pip3 install -U pip ansible 

2. 安装 Docker 和依赖

复制代码
# Ubuntu  
sudo apt install -y docker.io  
sudo systemctl enable --now docker # CentOS sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install -y docker-ce sudo systemctl enable --now docker # 配置 Docker 镜像加速(可选) sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"] } EOF sudo systemctl restart docker 

3. 安装 Kolla-Ansible

复制代码
sudo pip3 install git+https://opendev.org/openstack/kolla-ansible@stable/zed  
sudo mkdir -p /etc/kolla  
sudo cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/ sudo cp /usr/local/share/kolla-ansible/ansible/inventory/* /etc/kolla/ 

三、配置 Kolla-Ansible

1. 生成全局配置文件

复制代码
# 生成密码文件  
sudo kolla-ansible genpwd  

# 编辑全局配置(/etc/kolla/globals.yml)  
sudo vim /etc/kolla/globals.yml  

# 关键配置项 kolla_base_distro: "centos" # 或 "ubuntu" kolla_internal_vip_address: "10.0.0.100" # 控制节点 VIP network_interface: "eth0" # 管理网络接口 neutron_external_interface: "eth1" # 外部网络接口 enable_cinder: "yes" enable_cinder_backend: "lvm" glance_backend: "file" 

2. 配置 Inventory 文件

复制代码
sudo vim /etc/kolla/inventory/multinode  

# 示例配置  
[control]  
controller  

[network] controller [compute] compute1 [monitoring] controller [storage] controller 

四、部署 OpenStack

1. 执行预检查

复制代码
sudo kolla-ansible -i /etc/kolla/inventory/multinode bootstrap-servers  
sudo kolla-ansible -i /etc/kolla/inventory/multinode prechecks  

2. 开始部署

复制代码
sudo kolla-ansible -i /etc/kolla/inventory/multinode deploy  

3. 生成管理员凭据

复制代码
sudo kolla-ansible post-deploy  
source /etc/kolla/admin-openrc.sh  # 加载环境变量  

五、验证与初始化

1. 验证服务状态

复制代码
# 检查容器运行状态  
sudo docker ps  

# 检查 OpenStack 服务  
openstack compute service list openstack network agent list 

2. 创建初始资源

复制代码
# 创建外部网络  
openstack network create --external --provider-physical-network physnet1 --provider-network-type flat public  
openstack subnet create --network public --subnet-range 192.168.1.0/24 --gateway 192.168.1.1 --allocation-pool start=192.168.1.100,end=192.168.1.200 public-subnet # 创建测试虚拟机 wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img openstack image create --file jammy-server-cloudimg-amd64.img --disk-format qcow2 --container-format bare ubuntu-jammy openstack flavor create --ram 2048 --disk 20 --vcpus 2 m1.small openstack server create --image ubuntu-jammy --flavor m1.small --network public test-vm 

六、后续维护与扩展

1. 添加计算节点

复制代码
# 在新节点安装依赖并加入 Inventory  
sudo vim /etc/kolla/inventory/multinode  
[compute]  
compute1  
compute2  

# 重新部署 sudo kolla-ansible -i /etc/kolla/inventory/multinode deploy 

2. 升级 OpenStack

复制代码
# 更新 Kolla-Ansible  
sudo pip3 install -U kolla-ansible  

# 执行升级  
sudo kolla-ansible -i /etc/kolla/inventory/multinode upgrade 

3. 备份与恢复

复制代码
# 备份数据库  
sudo docker exec -it mariadb mysqldump -uroot -p$(grep 'database_password' /etc/kolla/passwords.yml | awk '{print $2}') --all-databases > openstack-backup.sql # 恢复数据库 sudo docker exec -i mariadb mysql -uroot -p$(grep 'database_password' /etc/kolla/passwords.yml | awk '{print $2}') < openstack-backup.sql 

七、故障排查

1. 查看容器日志

复制代码
sudo docker logs <container_name>  

2. 检查网络配置

复制代码
# 验证 Neutron Agent  
openstack network agent list  

# 检查 OVS 桥接  
sudo ovs-vsctl show  

总结

  • 核心工具:Kolla-Ansible 提供了容器化部署的标准化流程,适合生产环境。

  • 关键步骤:网络规划、Inventory 配置、全局参数调优。

  • 扩展性:通过添加计算/存储节点横向扩展资源。

  • 注意事项

    • 生产环境需启用 TLS 加密和防火墙规则。

    • 定期备份数据库和配置文件。

相关推荐
ycydynq17 分钟前
python html 解析的一些写法
linux·python·html
知识分享小能手21 分钟前
openEuler入门学习教程,从入门到精通,openEuler 24.03 中的 Vim 编辑器 —— 全面知识点详解(7)
linux·vim·openeuler
西猫雷婶37 分钟前
CNN的四维Pytorch张量格式
人工智能·pytorch·python·深度学习·神经网络·机器学习·cnn
未来之窗软件服务44 分钟前
幽冥大陆(二十三)python语言智慧农业电子秤读取——东方仙盟炼气期
开发语言·python·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟浏览器
程序员三藏1 小时前
Web自动化测试详细流程和步骤
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
数据知道1 小时前
FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能
前端·python·fastapi·python项目
2501_941111251 小时前
自动化与脚本
jvm·数据库·python
LCG元1 小时前
Linux 性能监控三板斧:top/vmstat/iostat 快速入门
linux
LCG元1 小时前
实战案例:服务器磁盘空间告急,如何快速定位和清理"大文件"
linux
以琦琦为中心1 小时前
很好!从 `fdisk -l` 输出可以看到您的磁盘确实是600GB,但只有29.5GB被分配给根分区 `/dev/sda3`。现在我来帮您扩展这个分区。
linux·ubuntu