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 内存
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",

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统启动原理

Linux系统启动原理及故障排除 Centos6系统启动过程 修改系统启动级别 vim /etc/inittabCentos7启动流程 加载BIOS信息,进行硬件检测 根据BIOS设定读取设备中的MBR,加载Boot loader 加载内核,内核初始化以后以模块的形式动态加载硬件 并且加…

嵌入式进阶——蜂鸣器

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 蜂鸣器原理图测试发声乐理知识乐理应用PWM测试发声PWM驱动封装 蜂鸣器 蜂鸣器是一种能够产生固定频率的声音的电子元件。它通常由…

MySQL数据库中的多表查询/连接查询操作

类型:内连接 ,外连接{左外连接,右外连接} 之所以要使用连接查询的意义就是为了,借助数据库可以避免大量的数据重复。 进行连接查询的前提是要求多张表之间存在相关联的字段。 这里指的相关联的字段就是表与表之间存在着关系&am…

linux 常用命令:find grep ps netstat sudo df du rm

rm 命令 删除 -r 是递归参数(recursive),用于删除目录及其内容。如果不加这个参数,rm 命令无法删除非空目录。-f 是强制参数(force),用于强制删除文件或目录,不会进行任何确认提示…

windows 搭建 go开发环境

go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须…

Android network — 进程指定网络发包

Android network — 进程指定网络发包 0. 前言1. 进程绑定网络1.1 App进程绑定网络1.2 Native进程绑定网络 2. 源码原理分析2.1 申请网络requestNetwork2.2 绑定网络 BindProcessToNetwork 3. 总结 0. 前言 在android 中,一个app使用网络,需要在manifest…

从零开始搭建Springboot项目脚手架4:保存操作日志

目的:通过AOP切面,统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面,把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…

【C/C++】Makefile文件的介绍与基本用法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

烟囱ERP系统

一、烟囱系统定义 “烟囱式”系统&#xff0c;来自维基百科的解释是&#xff1a;一种不能与其他系统进行有效协调工作的信息系统&#xff0c;又称为孤岛系统。 二、烟囱系统的案例 比如&#xff1a;就像以下一样&#xff0c;各个系统之间是独立的&#xff0c;所有对接是通过…

揭秘Markdown:轻松掌握基础语法,让你的写作更高效、优雅!

文章目录 前言1.标题1.1 使用 和 - 标记一级和二级标题1.2 使用 # 号标记 2.段落格式2.1 字体2.2 分割线2.3 删除线2.4 下划线2.5 脚注 3.列表3.1 无序列表3.2 有序列表3.3 列表嵌套 4.区块4.1 区块中使用列表4.2 列表中使用区块 5.代码代码区块 6.链接7.图片8.表格9.高级技巧…

访问元组元素

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;如果想将元组的内容输出也比较简单&#xff0c;可以直接使用print()函数即可。例如&#xff0c;要想打印上面元组中的untitle…

嵌入式进阶——震动马达

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 原理图控制分析功能设计 原理图 控制分析 S8050 NPN三极管特性 NPN型三极管的工作原理是基于PN结和PNP型晶体管的工作原理。 当外…

【大数据面试题】32 Flink 怎么重复读 Kafka?

一步一个脚印&#xff0c;一天一道面试题 首先&#xff0c;为什么要读过的 Kafka 数据重写读一次呢&#xff1f;什么场景下要怎么做呢&#xff1f; 答&#xff1a;当任务失败&#xff0c;从检查点Checkpoint 开始重启时&#xff0c;检查点的数据是之前的了&#xff0c;就需要…

扩散模型学习1

DDPM 总体训练原理 https://www.bilibili.com/video/BV1nB4y1h7CN/?spm_id_from333.337.search-card.all.click&vd_sourcef745c116402814185ab0e8636c993d8f 讲得很好&#xff1a;每次都是输入t和noise-x的图像&#xff0c;预测noise之后得到和加入的noise比较&#xff1b…

【Spring】深入理解 Spring 上下文(Context)层次结构

前言 在使用 Spring 框架进行应用程序开发时&#xff0c;Spring 上下文&#xff08;Context&#xff09;是一个非常重要的概念。Spring 上下文提供了一个环境&#xff0c;用于管理应用程序中的对象&#xff08;通常称为 Bean&#xff09;及其之间的依赖关系。在复杂的应用程序…

Virtual Box安装Ubuntu及设置

Virtual Box安装Ubuntu及设置 本文包含以下内容&#xff1a; 使用Virtual Box安装Ubuntu Desktop。设置虚拟机中的Ubuntu&#xff0c;使之可访问互联网并可通过SSH访问。 Ubuntu Desktop下载 从官网下载&#xff0c;地址为&#xff1a;Download Ubuntu Desktop | Ubuntu U…

HTML.

HTML:超文本标记语言&#xff08;Hyper Text Markup Language&#xff09; 超文本&#xff1a;不同于普通文本&#xff0c;可以定义图片&#xff0c;音频&#xff0c;视频等内容 标记语言&#xff1a;由标签构成的语言 HTML标签都是预定义好的HTML代码直接在浏览器中运行&#…

B站大数据分享视频创作300天100+原创内容4000+粉

以今年五一作为一个里程碑参考点&#xff0c;给明年一个可以比较的数据。 我正经发力创作是2023.06.17 (前面几个视频是试水)&#xff0c;300天不到一年时间 创作了100原创数据相关视频&#xff0c;创作频率应该很高了&#xff0c;收获了下面几个数字&#xff0c;审视自身&…

Cadence OrCAD学习笔记(3)capture使用技巧_1

本期介绍capture的一些使用技巧。资料来源于小破站up主硬小二 1、导出像Visio规格的图纸 2、全局修改元件属性 然后保存、关闭即可。 3、导出BOM 4、导出网表 5、元件自动编号 6、capture软件和allegro关联 7、新建原理图symbol 以上为添加封装库的路径 如果要创建多部分的sy…

Pandas 多层索引中的索引和切片操作你学会了吗

1. Series的索引操作 对于Series来说&#xff0c;直接中括号[]与使用 .loc() 完全一样 显式索引 # 导包import numpy as npimport pandas as pd data np.random.randint(0,100,size6) index [ ["1班","1班","1班","2班","…