最近有些朋友在研究使用Packstack自动化工具单机部署OpenStack,遇到了各种各样的问题,在这里总结一下整个部署的流程,希望能帮到各位
首先准备系统环境,直接安装一个没有图形界面的基础系统,节省内存资源的占用,避免后期各种服务因内存资源不足(可能,没具体分析)崩溃导致创建实例时调度失败等问题
系统安装完成后手动给系统分配一个IP地址,鉴于在不同的环境中具体的名称不尽相同,需要根据自己的实际情况去修改网卡名,网卡名可以使用命令
【资料图】
查看,全新系统一般第一个为回环第二个才是物理网卡的网卡名
这里我的网段是192.168.2.0/24所以在这里就分配一个192.168.2.59的IP地址,不需要UUID和IPV6,这里注释掉UUID并且关闭了IPV6INIT,在这里需要注意一下网关的设置,假设使用的是VMware虚拟机就需要和"虚拟网络编辑器"中设置保持一致
禁用NetworkManager和firewalld同时立即停止服务,如图
重启network服务更新网络设置
以下部分为可选,但是为了避免后续因包获取超时导致安装中止请尽量更换为国内的镜像源
使用一键脚本换源脚本链接:https://gitee.com/SuperManito/LinuxMirrors
直接复制这条命令就能立即执行
这里选择的是13,使用中科大维护的镜像源(最新的脚本已更新为15个候选且顺序也有变化)你也可以选择对自己网络友好的源,需要注意的是不要安装EPEL扩展源因为会导致稍后安装packstack失败,建议只更换基础源不要更换OpenStack相关的源避免后续在获取某些软件包时超时失败
最好就是选择“更新软件包”完成之后再执行一次
这样能够缓存一部分包信息,加速安装过程
安装openstack-train源
安装packstack
更改系统的主机名,可以设置成你喜欢的名字,这里设置成packstack。还需要在/etc/hosts中记录本机的IP地址用于服务对主机名的解析
可以正常Ping通说明刚刚的修改已经成功生效了
修改/etc/selinux/config禁用selinux
临时关闭selinux
你也可以通过重启,重启就不需要使用这条命令临时关闭,这里使用 getenforce 检查输出为图示即临时关闭生效
强烈建议重新启动一次系统,因为有一定的可能在部署时将主机名错误识别成packstack.localdomain,具体可部署后检查配置文件 /etc/nova/nova.conf,问题同下novnc服务无法启动(监听地址)
完成以上操作创建一个快照
开始正式部署OpenStack
成功安装OpenStack后会返回如下信息
测试OpenStack各组件是否部署成功
上传测试用的cloud-init镜像,这里选用CentOS7的,假如你想要其他项目也可以使用这个镜像而无需再次上传,你可以使用admin账号上传镜像并将“可见性”设置成“公有”
现在可以创建一个实例用于验证了
测试阶段可以选择“删除实例时删除卷”为“是”
配置实例类型,其他保持默认
解决一个小问题
成功创建实例之后,当显示状态为运行时,进入实例控制台检查是否有输出,像这种连接故障可以通过修改配置文件来修复,前提是在日志选项卡中确实有启动时初始化的信息
当看到类似下图的日志输出时其实实例已经启动,可以确定novnc服务出现异常
修改/etc/nova/nova.conf 使用/localdomain找到这条配置进行修改,去掉尾部的localdomain使其正常的解析到计算节点
直接重启所有的OpenStack服务,使用命令
检查novnc服务启动情况
已经能够有正常输出显示了,可以正常交互
需要在实例能够成功创建并能输出显示的前提下完成后续配置,出现无法创建的情况回退到上一个快照重新部署
网络的配置部分,我们需要修改网卡的配置还有桥接网桥的配置实现OpenStack实例访问外网,推荐只保留这些基本配置,第一条命令一定要按照实际的网卡名进行修改
更新网络设置
重新使用 ip addr命令检查网桥是否成功设置IP地址并能连通外网
登录dashboard,直接以admin身份登录,删除先前创建的实例
来到管理员选项卡中的网络-网络可以看到当前有两个项目,admin项目是外网,demo项目是其自有的私网,目前外网的子网网段不符合实际情况需要进行重新创建
来到管理员选项卡中的网络-路由可以看到默认demo项目已经有了一个路由绑定了外部网络,需要先对其删除才能重新创建public中的子网
回到管理员选项卡中的网络-网络,直接点击蓝色public进行子网的重新创建
先删除原子网
再点击创建子网
需要注意的是这里的地址池范围是因网络实际情况避免冲突才进行的限制,可以根据自己的情况更改范围
子网创建完成
重新创建demo项目的路由
demo项目的路由创建完成
转到demo项目进行实例内外网互通的测试
进入网络-路由,点击刚刚重新创建的demo路由
给其添加一个接口用于私网用于连接外部网络
添加完成之后应该会出现一个名称随机的内部接口
进入网络-网络拓扑查看网络拓扑,检查是否内外网通过demo路由连接到一起,此为配置完成
为了Ping通和能够使用SSH登录到实例需要修改默认安全组规则
点击管理规则
添加两个规则
此规则即允许任意来源的IP的ICMP报文通过/进入
此规则即允许任意来源的IP能够使用SSH协议连接到实例
添加完成后,安全组应该是这样的
添加一个浮动IP用于绑定实例,通过这个浮动IP可以测试实例是否联通外网并且能够使用这个浮动IP使用SSH协议连接实例
点击分配IP给项目
此IP为地址池中任意的一个IP
回到计算选项卡导入宿主机的公钥/终端模拟软件生成的密钥用于SSH连接实例
这里导入宿主机的公钥,安装packstack时应该默认就已经自动生成了一个公钥,可以直接使用这个公钥
复制公钥然后导入
回到计算-实例和上面提到的一样创建一个实例用于测试内外网互通和SSH登录
在创建实例的过程中遇到一直在调度的问题可以去检查一下日志,需要持续监控,有可能是openstack-nova-conductor这个服务崩了或者没有启动,可以单独重启这个服务再试试,查看状态和重启的命令可以参考下面
持续显示末尾后100行的内容,会有类似的输出
假如还是一直处于调度状态可以先重启一遍所有的OpenStack服务再重新创建实例
注意检查openstack-nova-conductor服务的运行状态
如状态不为running则需要使用命令重启服务
等待实例创建成功并能通过控制台查看到登录界面时即可使用SSH免密登录到fedora-37实例
先测试能不能Ping通绑定的浮动IP
测试完连通性再尝试使用SSH免密登录实例,登录成功
可以看到这个实例的对应IP是分配的私网网段地址,绑定的浮动IP地址则是外部网段的地址,SSH登录需要使用的是外部网段的这个IP地址
至此已完成基本的,部署OpenStack、创建实例、SSH访问实例