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

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内存
controllerens160:192.168.46.31/24
ens192:不配置IP地址
100G2C8G
compute1ens160:192.168.46.32/24
ens192:不配置IP地址
100G2C8G
block1ens160:192.168.46.33/24sda:50G
sdb:100G
2C4G

安装操作系统注意事项

安装操作只需注意的一步是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.mzph.cn/bicheng/16285.shtml

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

相关文章

第十课,while循环

一,认识循环是什么 循环普遍存在于日常生活中,同样,在程序中,循环功能也是至关重要的基础功能。 当程序需要重复执行某一段代码,利用循环可以轻松完成工作 例如我要你打印100次上课,直接写100次print&…

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

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

电子阅览室在管理时需注意什么

关于如今的绝大多数人来说,想必都听说过“电子阅览室”这一概念。它首要运用在校园中,给学生们供给愈加丰厚的常识储藏。它也是一个独立的局域网,在校园网络中作为重要的一个组成部分而存在。但是,一个好的电子阅览室是需求满意运…

CCF20231201——仓库规划

CCF20231201——仓库规划 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int n,m,a[1001][11],b[1001]{0};cin>>n>>m;for(int i1;i<n;i){for(int j1;j<m;j)cin>>a[i][j];}for(int i1;i<n;i){bool foundfals…

设计模式在芯片验证中的应用——模板方法

一、模板方法 模板方法(Template Method)设计模式是一种行为设计模式&#xff0c; 它在父类中定义了一个功能的框架&#xff0c; 允许子类在不修改结构的情况下重写功能的特定步骤。也就是模板方法定义了一组有序执行的操作&#xff0c;将一些步骤的实现留给子类&#xff0c;同…

把自己的垃圾代码发布到官方中央仓库

参考博客&#xff1a;将组件发布到maven中央仓库-CSDN博客 感谢这位博主。但是他的步骤有漏缺&#xff0c;相对进行补充 访问管理页面 网址&#xff1a;Maven Central 新注册账号&#xff0c;或者使用github快捷登录&#xff0c;建议使用github快捷登录 添加命名空间 注意&…

【Linux】进程通信实战 —— 进程池项目

送给大家一句话: 没有一颗星&#xff0c;会因为追求梦想而受伤&#xff0c;当你真心渴望某样东西时&#xff0c;整个宇宙都会来帮忙。 – 保罗・戈埃罗 《牧羊少年奇幻之旅》 &#x1f3d5;️&#x1f3d5;️&#x1f3d5;️&#x1f3d5;️&#x1f3d5;️&#x1f3d5;️ &a…

flink cdc mysql整理与总结

文章目录 一、业务中常见的需要数据同步的场景CDC是什么FlinkCDC是什么CDC原理为什么是FlinkCDC业务场景flink cdc对应flink的版本 二、模拟案例1.阿里云flink sql2.开源flink sql(单机模式)flink 安装安装mysql3.flink datastream 三、总结 提示&#xff1a;以下是本篇文章正文…

kali基本扫描工具(自带)

免责声明:本文仅做技术交流与学习...请勿非法破坏... 详细用法: 命令 -h/百度/翻译 fping 用法 hostlist 文件里面为ip fping -a -q -f hostlist -a 只看存活的 fping -g 202.100.1.1 202.100.1.255 -a -q > Ahost 输出到Ahost文件上 nping nping -c 1 201.100.2.155-244 …

香橙派AIpro使用SSH远程登录

香橙派AIpro可以连接HDMI显示器使用&#xff0c;也可以远程登录。这里采用MobaXterm软件远程登录开发板。 首先要使得控制电脑和香橙派开发板连接到同一个局域网&#xff0c;两者的IP地址能够ping通。在Windows 下可以使用MobaXterm 远程登录开发板&#xff0c;首先新建一个ss…

属于程序员的浪漫,一颗会跳动的心!!!

绘制一颗会跳动的心❤ 嘿嘿 可以说是程序员的专属浪漫了吧&#xff0c;就像点燃一颗LED灯一样&#xff1f;&#xff08;我瞎说的啊&#xff0c;大家别当真&#xff0c;我很菜的&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 程序就在下面啦&#xff0c;然…

Java8Stream

目录 什么是Stream? IO流&#xff1a; Java8Stream&#xff1a; 什么是流&#xff1f; stream图解 获取流 集合类&#xff0c;使用 Collection 接口下的 stream() 代码 数组类&#xff0c;使用 Arrays 中的 stream() 方法 代码 stream&#xff0c;使用 Stream 中的…

重生之 SpringBoot3 入门保姆级学习(02、打包部署)

重生之 SpringBoot3 入门保姆级学习&#xff08;02、打包部署&#xff09; 1.6 打包插件1.7 测试 jar 包1.8 application.properties 的相关配置 1.6 打包插件 官网链接 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-starte…

【Python】 XGBoost模型的使用案例及原理解析

原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…

Kubernetes(K8S) 集群环境搭建指南

Kubernetes&#xff08;简称K8s&#xff09;是一个开源的容器编排平台&#xff0c;旨在自动化部署、扩展和管理容器化应用。K8S环境搭建过程比较复杂&#xff0c;涉及到非常多组件安装和系统配置&#xff0c;本文将会详细介绍如何在服务器上搭建好Kubernetes集群环境。 在学习…

面试题·栈和队列的相互实现·详解

A. 用队列实现栈 用队列实现栈 实现代码如下 看着是队列&#xff0c;其实实际实现更接近数组模拟 typedef struct {int* queue1; // 第一个队列int* queue2; // 第二个队列int size; // 栈的大小int front1, rear1, front2, rear2; // 两个队列的首尾指针 } MyS…

6.Redis之String命令

1.String类型基本介绍 redis 所有的 key 都是字符串, value 的类型是存在差异的~~ 一般来说,redis 遇到乱码问题的概率更小~~ Redis 中的字符串,直接就是按照二进制数据的方式存储的. (不会做任何的编码转换【讲 mysql 的时候,知道 mysql 默认的字符集, 是拉丁文,插入中文…

Jenkins--从入门到入土

Jenkins–从入门到入土 文章目录 Jenkins--从入门到入土〇、概念提要--什么是CI/DI&#xff1f;1、CI&#xff08;Continuous Integration&#xff0c;持续集成&#xff09;2、DI&#xff08;DevOps Integration&#xff0c;DevOps 集成&#xff09;3、解决的问题 一、Jenkins安…

world machine学习笔记(4)

选择设备&#xff1a; select acpect&#xff1a; heading&#xff1a;太阳的方向 elevation&#xff1a;太阳的高度 select colour&#xff1a;选择颜色 select convexity&#xff1a;选择突起&#xff08;曲率&#xff09; select height&#xff1a;选择高度 falloff&a…

用常识滚雪球:拼多多的内生价值,九年的变与不变

2024年5月22日&#xff0c;拼多多公布了今年一季度财报&#xff0c;该季度拼多多集团营收868.1亿元&#xff0c;同比增长131%&#xff0c;利润306.0亿&#xff0c;同比增长了202%&#xff0c;数据亮眼。 市场对拼多多经历了“看不见”、“看不懂”、“跟不上”三个阶段。拼多多…