openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal

news2024/10/5 16:06:12

openEuler 22.03 LTS SP3源码编译部署OpenStack-Caracal

  • 说明
  • 机器详情
  • 安装操作系统注意事项
  • 基础准备
    • Controller节点 && Compute节点 && Block节点
      • 关闭防火墙
      • 关闭selinux
      • 设置静态IP
      • 更新
  • 安装前准备
    • Controller节点 && Compute节点 && Block节点
      • 设置主机名
      • 配置hosts
      • 验证配置
  • 安装 SQL DataBase
    • Controller节点
      • 安装软件包
      • 编辑配置文件
      • 启动服务
      • 初始化配置
  • 安装 RabbitMQ
    • Controller节点
      • 安装软件包
      • 启动服务
      • 添加openstack用户
      • 设置openstack用户权限,允许进行配置、写、读
  • 安装 Memcached
    • Controller节点
      • 安装软件包
      • 编辑配置文件
      • 启动服务
      • 验证
  • 安装Keystone
    • Controller节点
      • 下载源码包
      • 创建数据库
      • 安装httpd、mod_wsgi软件包
      • 解压keystone-25.0.0.tar.gz
      • 安装tox
      • 安装postgresql-devel
      • 安装openldap-devel
      • 安装python3-devel
      • 修改tox.ini
      • 生成示例配置文件
      • 安装所需依赖包
      • 把SQLAlchemy的版本降为1.4.49
      • 编译安装
      • 创建/etc/keystone文件夹
      • 复制etc/目录下的内容到/etc/keystone
      • 编辑keystone配置文件
      • 同步数据库
      • 初始化Fernet密钥仓库
      • 启动服务
      • 配置Apache HTTP server
      • 启动Apache HTTP服务
      • 创建脚本文件
      • 下载openstackclient源码包
      • 解压python-openstackclient-6.6.0.tar.gz
      • 安装依赖包
      • 编译安装
      • 创建domain
      • 创建project
      • 创建user
      • 创建role
      • 将role添加到project和user
      • 验证
  • 安装Glance
    • Controller节点
      • 下载源码包
      • 创建数据库
      • 创建glance用户
      • 将glacne添加到admin中去
      • 创建glance服务实体
      • 创建Image服务API端点
      • 解压glance-28.0.1.tar.gz
      • 安装依赖包
      • 编译安装
      • 创建/etc/glance文件夹
      • 复制etc/文件夹下的内容到/etc/glance
      • 创建并编辑glance配置文件
      • 同步数据库
      • 创建/var/lib/glance/images/文件夹并修改权限
      • 编写servie并启动服务
      • 验证
  • 安装Placement
    • Controller节点
      • 下载源码包
      • 创建数据库
      • 创建placement用户
      • 将用户添加到admin
      • 创建placement服务实体
      • 创建API 服务端点
      • 解压openstack-placement-11.0.0.tar.gz
      • 修改tox.ini
      • 生成示例配置文件
      • 安装依赖包
      • 编译安装
      • 创建/etc/placement文件夹
      • 复制配置文件
      • 编辑placement文件
      • 同步数据库
      • 安装uwsgi
      • 创建service并启动
      • 重启httpd服务
      • 验证1
      • 下载osc-placement-4.3.0.tar.gz
      • 解压osc-placement-4.3.0.tar.gz
      • 安装依赖包
      • 编译安装
      • 验证2
  • 安装Nova
    • Controller节点
      • 下载源码包
      • 创建数据库
      • 创建nova用户
      • 添加到admin
      • 创建nova服务实体
      • 创建API服务端点
      • 解压nova-29.0.1.tar.gz
      • 修改tox.ini
      • 生成示例配置文件
      • 安装依赖包
      • 编译安装
      • 创建/etc/nova文件夹
      • 复制etc/nova目录下的内容到/etc/nova
      • 编辑nova配置文件
      • 创建/var/lib/nova/tmp
      • 解压noVNC-master.zip
      • 复制到/usr/share/novnc
      • 创建vnc_auto.html链接文件
      • 同步数据库
      • 创建service并启动
    • Compute节点
      • 编译安装libvirt-7.0.0
      • 安装dnsmasq
      • 重启dnsmasq服务
      • 下载源码包
      • 解压nova-29.0.1.tar.gz
      • 安装tox
      • 修改tox.ini
      • 生成示例配置文件
      • 安装依赖包
      • 降低SQLAlchemy的版本为1.4.49
      • 编译安装
      • 创建/etc/nova文件夹
      • 复制etc/nova目录下的内容到/etc/nova
      • 编辑nova配置文件
      • 修改虚拟类型
      • 安装libvirt-python
      • 创建/var/lib/nova/instances/与/var/lib/nova/tmp并修改权限
      • 编写service并启动
    • 验证(controller)
    • 安装qemu-img(Controller && Compute && Block)
  • 安装Neutron(使用的是OVN)
    • 编译安装OVN(Controller节点 && Compute节点)
      • 下载OVN源码包
      • 下在与之对应的OVS源码包
      • 解压
      • 删除OVS空目录
      • 解压OVS压缩包并移动到OVN目录下并重命名为OVS
      • 进入ovs目录执行下面命令,对ovs进行编译安装
      • 回到ovn目录执行下面命令对ovn进行编译安装
    • Controller节点
      • 下载源码包
      • 创建数据库
      • 创建neutron用户
      • 添加到admin
      • 创建neutron服务实体
      • 创建API端点
      • 解压neutron-24.0.0.tar.gz
      • 修改tox.ini
      • 生成示例配置文件
      • 安装依赖包
      • 编译安装
      • 创建/etc/neutron文件夹
      • 复制文件
      • 编辑neutron配置文件
      • 同步数据库
      • 配置与启动OVS
      • 编写service并启动
      • 重启服务
    • Compute节点
      • 解压neutron-24.0.0.tar.gz
      • 修改tox.ini
      • 生成示例配置文件
      • 安装依赖包
      • 编译安装
      • 创建/etc/neutron文件夹
      • 复制文件
      • 编辑neutron配置文件
      • 配置与启动OVS
      • 启动ovn-controller服务
      • 设置OVN
      • 编写服务并启动
    • 配置验证(Controller)
    • 配置OVN网络
      • Controller节点 && Compute节点
      • Controller节点
      • 可能遇到的问题解决办法
        • 问题1
        • 问题2
  • 安装Dashboard
    • Controller节点
      • 下载源码包
      • 创建/etc/openstack_dashboard目录
      • 解压horizon-24.0.0.tar.gz
      • 安装依赖包
      • 复制local_settings.py.example为local_settings.py并编辑
      • 安装pymemcache
      • 编译
      • 收集静态资源
      • 把fontawesome.scss改为font-awesome.scss
      • 修改_checkboxes.scss
      • 修改_radiobuttons.scss
      • 修改WEBROOT
      • 生成horizon_wsgi.py
      • 生成httpd的配置文件
      • 修改生成的httpd的配置文件
      • 修改权限
      • 查询启动httpd的用户和组
      • 修改base.html
      • 在编译一下
      • 重启httpd服务
  • 安装Cinder
    • Controller节点
      • 下载源码包
      • 创建数据库
      • 创建cinder用户
      • 添加到admin
      • 创建 cinderv3 服务实体
      • 创建API 端点
      • 解压cinder-24.0.0.tar.gz
      • 修改tox.ini
      • 生成示例配置文件
      • 安装依赖包
      • 编译安装
      • 创建/etc/cinder目录
      • 移动文件到/etc/cinder目录
      • 编辑/etc/cinder/cinder.conf
      • 同步数据库
      • 编写service并启动
      • 验证
    • Block节点
      • 安装targetcli
      • 解压cinder-24.0.0.tar.gz
      • 修改tox.ini
      • 安装tox
      • 生成示例配置文件
      • 安装依赖包
      • 把SQLAlchemy的版本降为1.4.49
      • 安装pymysql
      • 编译安装
      • 创建/etc/cinder目录
      • 移动文件到/etc/cinder目录
      • 编辑/etc/cinder/cinder.conf
      • 编辑/etc/lvm/lvm.conf
      • 编写service
      • 创建volume group
      • 启动服务
    • Compute节点
      • 修改/etc/nova/nova.conf
      • 安装
      • 重启服务

说明

本教程只用于学习,虽然能够成功运行,但是还有一些bug

机器详情

主机名 IP 磁盘 CPU 内存
controller ens160:192.168.46.31/24
ens192:不配置IP地址
100G 2C 8G
compute1 ens160:192.168.46.32/24
ens192:不配置IP地址
100G 2C 8G
block1 ens160:192.168.46.33/24 sda:50G
sdb:100G
2C 4G

安装操作系统注意事项

安装操作只需注意的一步是Software Selection要勾选Development Tools
在这里插入图片描述

这会自动地帮我们安装一些基础的编译环境,如果你没有勾选,也无大碍,在编译安装时可能会遇到
报错说缺失一些编译环境,根据报错安装与之对应地编译环境即可解决

基础准备

Controller节点 && Compute节点 && Block节点

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

关闭selinux

vim /etc/selinux/config
SELINUX=disabled

设置静态IP

nmtui

设置ens160网卡的IP地址为静态IP地址
设置ens192网卡不获取到IP地址(即设置为Disabled)
网卡配置生效命令

nmcli c reload
nmcli c up ens160
nmcli c up ens192

更新

dnf update -y

重启一下机器

安装前准备

Controller节点 && Compute节点 && Block节点

设置主机名

hostnamectl set-hostname controller
hostnamectl set-hostname compute1
hostnamectl set-hostname block1

配置hosts

vim /etc/hosts
192.168.46.31   controller
192.168.46.32   compute1
192.168.46.33   block1

验证配置

# Controller节点
ping -c 4 www.baidu.com
ping -c 4 compute1
ping -c 4 block1
# Compute节点
ping -c 4 www.baidu.com
ping -c 4 controller
ping -c 4 block1
# Block节点
ping -c 4 www.baidu.com
ping -c 4 controller
ping -c 4 compute1

安装 SQL DataBase

Controller节点

安装软件包

dnf install mariadb mariadb-server python3-PyMySQL -y

编辑配置文件

vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = Controller-IP
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

Controller-IP为Controller节点的IP地址

启动服务

systemctl restart mariadb.service && systemctl enable mariadb.service

初始化配置

mysql_secure_installation

安装 RabbitMQ

Controller节点

安装软件包

dnf install rabbitmq-server -y

启动服务

systemctl restart rabbitmq-server.service && systemctl enable rabbitmq-server.service

添加openstack用户

rabbitmqctl add_user openstack RABBIT_PASS

RABBIT_PASS为设置的密码

设置openstack用户权限,允许进行配置、写、读

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

安装 Memcached

Controller节点

安装软件包

dnf install memcached python3-memcached -y

编辑配置文件

vim /etc/sysconfig/memcached
OPTIONS="-l 127.0.0.1,::1,controller"

启动服务

systemctl restart memcached.service && systemctl enable memcached.service

验证

memcached-tool controller stats

安装Keystone

Controller节点

下载源码包

下载地址:https://releases.openstack.org/caracal/index.html#caracal-keystone
所需下载的源码包:keystone-25.0.0.tar.gz

创建数据库

mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
exit

KEYSTONE_DBPASS为要设置的密码

安装httpd、mod_wsgi软件包

dnf install httpd mod_wsgi -y

解压keystone-25.0.0.tar.gz

tar -xvf keystone-25.0.0.tar.gz
cd keystone-25.0.0/

安装tox

pip3 install tox -i https://pypi.tuna.tsinghua.edu.cn/simple

安装postgresql-devel

dnf -y install postgresql-devel

安装openldap-devel

dnf -y install openldap-devel

安装python3-devel

dnf -y install python3-devel

修改tox.ini

vim tox.ini

在这里插入图片描述

生成示例配置文件

tox -egenconfig
tox -egenpolicy

安装所需依赖包

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

把SQLAlchemy的版本降为1.4.49

pip3 install SQLAlchemy==1.4.49 -i https://pypi.tuna.tsinghua.edu.cn/simple

编译安装

python3 setup.py install

创建/etc/keystone文件夹

mkdir /etc/keystone

复制etc/目录下的内容到/etc/keystone

cp -r etc/* /etc/keystone/

编辑keystone配置文件

cp /etc/keystone/keystone.conf.sample /etc/keystone/keystone.conf
cp /etc/keystone/keystone.policy.yaml.sample /etc/keystone/keystone.policy.yaml
vim /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

KEYSTONE_DBPASS为创建keystone用户设置的数据库访问密码

同步数据库

useradd keystone
su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化Fernet密钥仓库

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

启动服务

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne

ADMIN_PASS为准备设置管理员用户的密码
如果遇到如下的错误

2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt Traceback (most recent call last):
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt   File "/usr/local/lib/python3.9/site-packages/keystone/identity/backends/sql.py", line 209, in get_user_by_name
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt     user_ref = query.one()
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt   File "/usr/local/lib64/python3.9/site-packages/sqlalchemy/orm/query.py", line 2870, in one
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt     return self._iter().one()
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt   File "/usr/local/lib64/python3.9/site-packages/sqlalchemy/engine/result.py", line 1522, in one
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt     return self._only_one_row(
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt   File "/usr/local/lib64/python3.9/site-packages/sqlalchemy/engine/result.py", line 562, in _only_one_row
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt     raise exc.NoResultFound(
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt sqlalchemy.exc.NoResultFound: No row was found when one was required
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt 
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt During handling of the above exception, another exception occurred:
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt 
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt Traceback (most recent call last):
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt   File "/usr/local/lib/python3.9/site-packages/keystone/cmd/bootstrap.py", line 205, in _bootstrap_admin_user
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt     user = PROVIDERS.identity_api.get_user_by_name(
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt   File "/usr/local/lib/python3.9/site-packages/keystone/common/manager.py", line 115, in wrapped
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt     __ret_val = __f(*args, **kwargs)
2024-04-13 14:21:16.788 274641 ERROR passlib.handlers.bcrypt   File "/usr/local/lib/python3.9/site-packages/keystone/identity/core.py",

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1698318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

auto关键字(C++11)

auto关键字(C11) 文章目录 auto关键字(C11)前言一、auto使用规则二、auto不适用的场景三、auto推荐适用的场景总结 前言 在C11中,auto关键字能够自动推导出变量的实际类型,可以帮助我们写出更加简洁、现代…

开发公众号自定义菜单之创建菜单

文章目录 申请测试账号换取Token接口测试提交自定义菜单查看效果校验菜单配置清空菜单配置结束语 申请测试账号 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?actionshowinfo&tsandbox/index 或 得到appid和secret 换取Token 使用appid和secret换取token令牌…

Python应用实战,用动画生成冒泡排序的过程

写在前言 hello,大家好,我是一点,专注于Python编程,如果你也对感Python感兴趣,欢迎关注交流。 希望可以持续更新一些有意思的文章,如果觉得还不错,欢迎点赞关注,有啥想说的&#x…

解决文件夹打开出错问题:原因、数据恢复与预防措施

在我们日常使用电脑或移动设备时,有时会遇到一个非常棘手的问题——文件夹打开出错。这种错误可能会让您无法访问重要的文件和数据,给工作和生活带来极大的不便。本文将带您深入了解文件夹打开出错的原因,并提供有效的数据恢复方案&#xff0…

栈和队列的基本见解

1.栈 1.1栈的基本概念和结构: 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。 压栈:栈的插入操作叫做进栈/压栈…

Vxe UI 表单设计器、零代码平台

vxe-pc-ui Vxe UI 表单设计器、零代码表单设计器 安装 Vxe UI PC端组件库 官方文档 查看 github、gitee // ...import VxeUI from vxe-pc-uiimport vxe-pc-ui/lib/style.css// ...// ...createApp(App).use(VxeUI).mount(#app)// ...使用 vxe-form-design 设计器组件 vxe-fo…

QML的Image 路径问题(source)

四种路径格式 在 QML 中,当你使用 Image 元素的 source 属性来指定一个图片的路径时,有几种不同的方式可以指定这个路径,每种方式都有其特定的用途和上下文。 相对路径: QML 文件和一个名为 close.png 的图片在同一目录下&#x…

列表元素添加的艺术:从单一到批量

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、向列表中添加单一元素 1. append方法 2. insert方法 三、向列表中添加批量…

CentOS网络配置(三种网络模式:桥接、NAT、Host-Only)

目录 1、虚拟机网络模式 1.1 桥接 1.2 NAT 1.3 Host-Only 2、桥接模式 3、仅主机模式 4、NAT模式 5、centos网络配置 5、virtualbox 下centos7网络配置 5.1管理 ——> 全局设定 ——> 网络,新加网络 5.2 具体虚拟机设置,网络设置&#…

软件设计师笔记2

文章目录 软考知识点总结1. 计算机组成原理网络与信息安全数据结构与算法AOE网 编译原理操作系统软件设计软件测试数据库计算机软件产权其它 软考知识点总结 1. 计算机组成原理 cpu控制器,专门产生指令操作,送到计算机各个部位执行处理 DMA&#xff08…

python调用阿里云通义千问(q-wen-max)API-只能总结pdf文档内容

文章目录 通义千问插件PDF解析插件调用案例通义千问插件 Dashscope插件功能能够使得大模型的生成内容与外部三方应用结合,使得模型生成的内容更加准确和丰富,模型将拥有更好的生成能力。您也可以通过开发自定义插件,来使得模型生成更符合您预期的结果。 使用插件功能,大模…

第十三节:带你梳理Vue2 : watch侦听器

官方解释:> 观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式&#xff0c;用一个函数取代<br/>## 1. 侦听器的基本使用侦听器可以监听data对象属性或者计算属性的变化watch是观察属性的…

细粒度图像分类论文(AAM模型方法)阅读笔记

细粒度图像分类论文阅读笔记 摘要Abstract1. 用于细粒度图像分类的聚合注意力模块1.1 文献摘要1.2 研究背景1.3 本文创新点1.4 计算机视觉中的注意力机制1.5 模型方法1.5.1 聚合注意力模块1.5.2 通道注意力模块通道注意力代码实现 1.5.3 空间注意力模块空间注意力代码实现 1.5.…

VScode解决报错“Remote-SSH XHR failed无法访问远程服务器“的方案

VScode解决报错"Remote-SSH XHR failed无法访问远程服务器"的方案 $ ls ~/.vscode-server/bin 2ccd690cbff1569e4a83d7c43d45101f817401dc稳定版下载链接&#xff1a;https://update.code.visualstudio.com/commit:COMMIT_ID/server-linux-x64/stable 内测版下载链接…

ABAQUS应用07-实现拉伸和压缩刚度不同的弹簧建模

文章目录 0、背景描述1、步骤 0、背景描述 到目前为止&#xff0c;本文的内容我还没有具体实践过&#xff0c;但是个人认为后期是会用到的。比如说&#xff0c;对于风电机组地基转动刚度的设置&#xff0c;土体就是一种拉压刚度并不相同的材料。所以现在先记录下来&#xff0c…

如何利用OpenHarmony ArkUI的Canvas组件实现涂鸦功能?

简介 ArkUI是一套UI开发框架&#xff0c;提供了开发者进行应用UI开发时所需具备的能力。随着OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;不断更新迭代&#xff0c;ArkUI也提供了很多新的组件&#xff0c;例如Canvas、OffscreenCanvas、XComponent组…

Git Large File Storage (LFS) 的安装与使用

Git Large File Storage [LFS] 的安装与使用 1. An open source Git extension for versioning large files2. Installing on Linux using packagecloud3. Getting StartedReferences 1. An open source Git extension for versioning large files https://git-lfs.com/ Git …

手把手从0到1教你做STM32+FreeRTOS智能家居--第10篇之ASR-PRO语音识别模块

前言 先看实验效果&#xff0c;通过ASR-PRO语音智能识别控制模块&#xff0c;来控制STM32单片机实现对应的控制功能。因为后台好多小伙伴私信问用的是什么语音模块&#xff0c;并且很少在网上看到如何使用此模块相关的文章&#xff0c;所以我将会在本篇文章详细介绍一下此模块…

列表和元组

2.1序列概述 列表和元组的主要不同在于&#xff0c;列表是可以修改的&#xff0c;而元组不可以。这意味着列表适用于需 要中途添加元素的情形&#xff0c;而元组适用于出于某种考虑需要禁止修改序列的情形。 Python支持一种数据结构的基本概念&#xff0c;名为容器&#xff0…

Gradle筑基——Gradle Maven仓库管理

基础概念&#xff1a; 1.POM pom:全名Project Object Model 项目对象模型&#xff0c;用来描述当前maven项目发布模块的基础信息 pom主要节点信息如下&#xff1a; 配置描述举例&#xff08;com.android.tools.build:gradle:4.1.1&#xff09;groupId组织 / 公司的名称com.…