openstack是什么openstack能做什么openstack特点openstack与虚拟化openstack与云计算安装openstack借助packstack工具安装出两台centos8-stream更改相应配置内容更改主机名更改网络关闭防火墙修改selinux文件配置hosts文件安装基础包保证时间同步配置yum仓库在线源二选一配置yum仓库本地源二选一安装httpd服务配置永久挂载配置本地yum仓库安装packstack工具生成应答文件修改应答文件关闭networkmanager服务安装openstack验证开启networkmanager服务安装openstack失败的原因openstack是什么OpenStack是一种云操作系统可控制整个数据中心内的大型计算、存储和网络资源池所有资源都通过具有通用身份验证机制的API进行管理和配置。管理员也可通过Web界面控制同时授权用户通过Web界面配置资源。openstack能做什么OpenStack既是一个社区也是一个项目和一个开源软件提供开放源码软件建立公共和私有云它提供了一个部署云的操作平台或工具集其宗旨在于帮助组织运行为虚拟计算或存储服务的云为公有云、私有云也为大云、小云提供可扩展的、灵活的云计算。作为一个开源的云计算管理平台OpenStack由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务IaaS的解决方案每个服务提供API以进行集成。openstack特点开放源代码开放设计与开发流程开放。不重复发明轮子”“站在巨人的肩膀上”。不使用任何不可替代的私有/商业组件。灵活架构可裁剪可以根据实际需要决定选取的组件范围。大量采用驱动与插件机制。通过配置项控制对系统功能特性进行便捷配置。可扩展松耦合架构组件间RESTful API通信组件内消息总线通信。无中心架构核心组件无中心节点有效避免单点故障。无状态架构各组件无本地持久化数据所有持久化数据保存在数据库中。openstack与虚拟化OpenStack不是虚拟化OpenStack只是系统的控制面不包括系统的数据面组件如Hypervisor、存储和网络设备等虚拟化是OpenStack底层的技术实现手段之一但并非核心关注点openstack与云计算OpenStack只是构建云计算的关键组件内核、骨干、框架、总线OpenStack是框架以OpenStack为框架将计算、存储、网络、管理、运营、运维等多个领域的软硬件产品组件整合在一起共同组成面向业务场景的整体解决方案。云计算的特点是IT能力的服务化按需使用按量计费多租户隔离等。安装openstack借助packstack工具安装出两台centos8-stream可参考Linux模板制作克隆出两台注意安装时候所给的配置内存8g硬盘120g根据自己电脑内存情况选择配置越高越好。一台做controller节点、一台做compute节点注意安装克隆完成后需要打开虚拟化Intel VT-x/EPT或AMD-V/RVIV如下图所示更改相应配置内容更改主机名(controller和computer做同样的操作)[rootlocalhost ~]# hostnamectl set-hostname controller [rootlocalhost ~]# bash [rootcontroller ~]# [rootlocalhost ~]# hostnamectl set-hostname computer [rootlocalhost ~]# bash [rootcomputer ~]#更改网络(controller和computer做同样的操作)ip地址和网关要查看VM上的虚拟网络编辑器上所给的子网地址我选择的是nat网络所以是192.168.195.0/24。注意网关地址要与VM上一致否则无法上网。controller192.168.195.200/24compute192.168.195.201/24[rootcontroller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens160 TYPEEthernet BOOTPROTOnone DEFROUTEyes NAMEens160 DEVICEens160 ONBOOTyes IPADDR192.168.195.200 NETMASK255.255.255.0 GATEWAY192.168.195.2 DNS1192.168.195.2 [rootcontroller ~]# systemctl restart NetworkManager [rootcontroller ~]# nmcli c down ens160 [rootcontroller ~]# nmcli c up ens160要验证是否能上网如果ping不通则需要检查网络否则接下来的安装会失败。[rootcontroller ~]# ping www.baidu.com PING www.a.shifen.com (39.156.70.46) 56(84) bytes of data. 64 bytes from 39.156.70.46 (39.156.70.46): icmp_seq1 ttl128 time18.6 ms 64 bytes from 39.156.70.46 (39.156.70.46): icmp_seq2 ttl128 time22.6 ms 64 bytes from 39.156.70.46 (39.156.70.46): icmp_seq3 ttl128 time18.6 ms ^C --- www.a.shifen.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2010ms rtt min/avg/max/mdev 18.572/19.910/22.563/1.882 ms关闭防火墙(controller和computer做同样的操作)[rootcontroller ~]# systemctl stop firewalld [rootcontroller ~]# systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.修改selinux文件(controller和computer做同样的操作)​ [rootcontroller ~]# vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUXdisabled # SELINUXTYPE can take one of these three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPEtargeted ​打开/etc/selinux的文件就需要修改这一条命令。SELINUXdisabled配置hosts文件(controller和computer做同样的操作)[rootcontroller ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.195.100 controller 192.168.195.101 computer安装基础包(controller和computer做同样的操作)[rootcontroller ~]# cd /etc/yum.repos.d/ [rootcontroller yum.repos.d]# mkdir bak [rootcontroller yum.repos.d]# mv CentOS-Stream-* bak/ [rootcontroller yum.repos.d]# ls bak [rootcontroller yum.repos.d]# vi abc.repo [AppStream] nameAppSteream baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/AppStream/x86_64/os/ gpgcheck0 enabled1 [BaseOS] nameBaseOS baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/BaseOS/x86_64/os/ gpgcheck0 enabled1 [rootcontroller ~]# yum install -y vim net-tools bash-completionrm -rf *在这里创建bak是为了把过期的centos的内容清除这样不会干扰接下来的安装或者可以使用rm -rf *直接删除原来的包也可以。在这里我使用的是在线源根据需要也可以使用本地源。如果失效可以去重新搜索阿里云镜像仓库找相应的包https://developer.aliyun.com/mirror/保证时间同步[rootcontroller ~]# date Wed Jun 25 11:23:06 CST 2025 [rootcomputer ~]# date Wed Jun 25 11:23:09 CST 2025如果时间不同步可以使用下面的命令修改过来或者安装时间服务器(controller和computer做同样的操作)[rootcontroller618 ~]# date -s 20250618 20:30:29配置yum仓库在线源二选一只需要在controller节点上做操作直接粘贴复制即可[rootcontroller ~]# vi /etc/yum.repos.d/abc.repo [highavailability] nameCentOS Stream 8 - HighAvailability baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/HighAvailability/x86_64/os/ gpgcheck0 [nfv] nameCentOS Stream 8 - NFV baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/NFV/x86_64/os/ gpgcheck0 [rt] nameCentOS Stream 8 - RT baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/RT/x86_64/os/ gpgcheck0 [resilientstorage] nameCentOS Stream 8 - ResilientStorage baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/ResilientStorage/x86_64/os/ gpgcheck0 [extras-common] nameCentOS Stream 8 - Extras packages baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/extras-common/ gpgcheck0 [extras] nameCentOS Stream $releasever - Extras baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/extras/x86_64/os/ gpgcheck0 [centos-ceph-pacific] nameCentOS - Ceph Pacific baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific/ gpgcheck0 [centos-rabbitmq-38] nameCentOS-8 - RabbitMQ 38 baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/messaging/x86_64/rabbitmq-38/ gpgcheck0 [centos-nfv-openvswitch] nameCentOS Stream 8 - NFV OpenvSwitch baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/nfv/x86_64/openvswitch-2/ gpgcheck0 [baseos] nameCentOS Stream 8 - BaseOS baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/BaseOS/x86_64/os/ gpgcheck0 [appstream] nameCentOS Stream 8 - AppStream baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/AppStream/x86_64/os/ gpgcheck0 [centos-openstack-victoria] nameCentOS 8 - OpenStack victoria baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/cloud/x86_64/openstack-victoria/ gpgcheck0 [powertools] nameCentOS Stream 8 - PowerTools baseurlhttps://mirrors.aliyun.com/centos-vault/8-stream/PowerTools/x86_64/os/ gpgcheck0仓库都是在这个镜像仓库里找到的centos-vault-centos-8-stream安装包下载_开源镜像站-阿里云配置yum仓库本地源二选一只需在compute节点上操作使用远程连接工具将ISO文件上传到compute节点[rootcomputer ~]# ll total 21996692 -rw-r--r--. 1 root root 10965106688 Jun 25 16:53 CentOS-Stream-8-OPS-Victoria.iso -rw-------. 1 root root 1253 Jun 25 14:59 anaconda-ks.cfg -rw-r--r--. 1 root root 11559501824 Jun 25 16:56 CentOS-Stream-8-x86_64-latest-dvd1.iso安装httpd服务[rootcomputer ~]# yum install -y httpd [rootcomputer ~]# systemctl restart httpd [rootcomputer ~]# systemctl status httpd配置永久挂载[rootcomputer ~]# mkdir /var/www/html/os/ [rootcomputer ~]# mkdir /var/www/html/op/ [rootcomputer ~]# vi /etc/fstab # # /etc/fstab # Created by anaconda on Wed Jun 25 06:50:13 2025 # # Accessible filesystems, by reference, are maintained under /dev/disk/. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run systemctl daemon-reload to update systemd # units generated from this file. # /dev/mapper/cs-root / xfs defaults 0 0 UUID369fd744-2fb9-4678-87b1-8364bb61c48c /boot xfs defaults 0 0 /dev/mapper/cs-home /home xfs defaults 0 0 /dev/mapper/cs-swap none swap defaults 0 0 /root/CentOS-Stream-8-OPS-Victoria.iso /var/www/html/op/ iso9660 defaults 0 0 /root/CentOS-Stream-8-x86_64-latest-dvd1.iso /var/www/html/os/ iso9660 defaults 0 0配置本地yum仓库注意这俩所填写的ip地址要是自己规划的compute节点的ip地址根据自己的ip做修改。[rootcomputer ~]# cat /etc/yum.repos.d/local.repo [highavailability] namehighavailability baseurlhttp://192.168.195.201/op/highavailability/ gpgcheck0 [resilientstorage] nameCentOS Stream 8 - ResilientStorage baseurlhttp://192.168.195.201/op/resilientstorage/ gpgcheck0 [extras-common] nameCentOS Stream 8 - Extras packages baseurlhttp://192.168.195.201/op/extras-common/ gpgcheck0 [extras] nameCentOS Stream $releasever - Extras baseurlhttp://192.168.195.201/op/extras/ gpgcheck0 [centos-ceph-pacific] nameCentOS - Ceph Pacific baseurlhttp://192.168.195.201/op/centos-ceph-pacific/ gpgcheck0 [centos-rabbitmq-38] nameCentOS-8 - RabbitMQ 38 baseurlhttp://192.168.195.201/op/centos-rabbitmq-38/ gpgcheck0 [centos-nfv-openvswitch] nameCentOS Stream 8 - NFV OpenvSwitch baseurlhttp://192.168.195.201/op/centos-nfv-openvswitch/ gpgcheck0 [baseos] nameCentOS Stream 8 - BaseOS baseurlhttp://192.168.195.201/os/BaseOS/ gpgcheck0 [appstream] nameCentOS Stream 8 - AppStream baseurlhttp://192.168.195.201/os/AppStream/ gpgcheck0 [centos-op-victoria] nameCentOS 8 - OpenStack victoria baseurlhttp://192.168.195.201/op/centos-openstack-victoria/ gpgcheck0 [powertools] nameCentOS Stream 8 - PowerTools baseurlhttp://192.168.195.201/op/powertools/ gpgcheck0 [nfv] nameCentOS Stream 8 - nvf baseurlhttp://192.168.195.201/op/nfv/ gpgcheck0 [rt] nameCentOS Stream 8 - rt baseurlhttp://192.168.195.201/op/rt/ gpgcheck0安装packstack工具只需要在controller节点上做操作即可[rootcontroller ~]# yum install -y openstack-packstack生成应答文件只需要在controller节点上做操作即可[rootcontroller ~]# packstack --gen-answer-filehyc.txt Packstack changed given value to required value /root/.ssh/id_rsa.pub Additional information: * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS plugin. Geneve will be used as the encapsulation method for tenant networks [rootcontroller ~]# ls anaconda-ks.cfg hyc.txt“packstack --gen-answer-filehyc.txt”生成应答文件的名称可以自己修改在这里我生成的应答文件名称是hyc.txt也可以是xxx.txt修改应答文件只需要在controller节点上做操作即可进入应答文件下只需要编辑以下标注的几行内容即可注意第97行要写上自己规划的controller和compute的ip地址。[rootcontroller ~]# vi hyc.txt 60 CONFIG_HEAT_INSTALLy 97 CONFIG_COMPUTE_HOSTS192.168.195.200,192.168.195.201 323 CONFIG_KEYSTONE_ADMIN_PW123456 909 CONFIG_NEUTRON_OVN_BRIDGE_IFACESbr-ex:ens160 如果你的物理网卡名称是ens160 这块就写ens160如果你的物理网卡名称是ens33 这块就写ens33 1169 CONFIG_PROVISION_DEMOn关闭networkmanager服务(controller和computer做同样的操作)[rootcontroller ~]# systemctl stop NetworkManager [rootcontroller ~]# systemctl disable NetworkManager [rootcomputer ~]# systemctl stop NetworkManager [rootcomputer ~]# systemctl disable NetworkManager安装openstack只需要在controller节点上做操作即可[rootcontroller ~]# packstack --answer-filehyc.txt到这步等待时间会长只要前面不出现报错报红就不用管耐心等待即可。验证安装成功后会出现以下界面就可以直接去登录相应的地址登录到页面就可以查看到也可以查看rabbitmq-server.service是否正常运行如果忘记密码可以查看文件keystonerc_adminPASSWORD显示的就是密码[rootcontroller ~]# cat keystonerc_admin unset OS_SERVICE_TOKEN export OS_USERNAMEadmin export OS_PASSWORD123456 export OS_REGION_NAMERegionOne export OS_AUTH_URLhttp://192.168.195.200:5000/v3 export PS1[\u\h \W(keystone_admin)]\$ export OS_PROJECT_NAMEadmin export OS_USER_DOMAIN_NAMEDefault export OS_PROJECT_DOMAIN_NAMEDefault export OS_IDENTITY_API_VERSION3开启networkmanager服务[rootcontroller ~]# systemctl enable network [rootcontroller ~]# systemctl start network [rootcomputer ~]# systemctl enable network [rootcomputer ~]# systemctl start network到此为止最后openstack搭建完成。可以拍摄快照保存好内容避免后期环境出现问题可以还原到新建的环境当中。安装openstack失败的原因网络问题先检查是否能正常上网。如不能则需要查看配置文件内容注意网关是否与VM的网关一致防火墙和NetWorkmanager服务是否关闭时间是否同步如果没有则需要修改时间或者安装时间服务器controller和compute都需要安装yum仓库文件出现问题查看yum仓库配置文件的内容可以本地和在线源都试试。注意标注的看清楚需要在compute节点和controller节点上的操作同样的操作我只展示出来了其中一个节点另一个节点也是需要做的。本人在做的时候遇到的问题就是忘记关闭防火墙和不能正常上网的问题配置文件一般粘贴复制不会出现太大的问题。还有要注意安装openstack的时候时间可能会长每个人电脑配置不一样如果快的二十多分钟慢的一个小时只要安装过程不报错就不需要担心。如果需要镜像的可以去各个平台的开源镜像站寻找。