云计算:openstack学习笔记和环境部署

小明 2025-05-02 08:42:33 4

记录一次openstack的学习和部署

openstack

OpenStack���一个自由、开源的云计算平台。它主要作为基础设施即服务(IaaS)部署在公用云和私有云中,提供虚拟服务器和其他资源给用户使用。该软件平台由相互关联的组件组成,控制着整个数据中心内不同的厂商的计算、存储和网络资源的硬件池。用户可以通过基于网络的仪表盘或者命令行工具管理。

应用场景:OpenStack是基础设施即服务(IaaS)软件,让任何人都可以自行创建和提供云计算服务。

核心服务组件

OpenStack 的主要部分(组件):

  1. Nova(计算服务): Nova 是 OpenStack 的计算服务组件,用于管理和调度虚拟机实例。它允许用户创建、启动、停止和管理虚拟机,还负责资源调度,以确保虚拟机在计算节点上得到适当的分配。
  2. Neutron(网络服务): Neutron 是 OpenStack 的网络服务组件,负责创建和管理虚拟网络资源,包括虚拟子网、路由、防火墙等。它使用户能够定义和配置虚拟网络拓扑,以便虚拟机实例之间和与外部网络进行通信。
  3. Cinder(块存储服务): Cinder 是 OpenStack 的块存储服务组件,用于管理块级存储卷。它允许用户创建、附加、分离和备份块存储卷,以满足虚拟机实例的持久性存储需求。
  4. Glance(镜像服务): Glance 是 OpenStack 的镜像服务组件,用于管理虚拟机镜像。它允许用户上传、存储和共享虚拟机镜像,以便在创建虚拟机实例时使用。
  5. Keystone(身份认证服务): Keystone 是 OpenStack 的身份认证服务组件,用于管理用户身份验证和授权。它提供了用户、角色、项目和权限管理,以确保只有经过身份验证和授权的用户才能访问 OpenStack 资源。
  6. Swift(对象存储服务): Swift 是 OpenStack 的对象存储服务组件,用于存储和检索大规模的非结构化数据,如文件、图片和视频。它提供了可扩展的对象存储能力,适用于云存储和数据备份。
  7. Horizon(仪表板): Horizon 是 OpenStack 的官方 Web 用户界面,用于管理和监视云资源。它提供了直观的图形界面,使用户能够通过浏览器访问和控制 OpenStack。
  8. Heat(编排服务): Heat 是 OpenStack 的编排服务组件,用于定义和管理云基础设施的资源和配置。它允许用户创建模板,以自动化和编排云资源的部署和配置。
  9. Ceilometer(监控和计量服务): Ceilometer 是 OpenStack 的监控和计量服务组件,用于收集、存储和分析云资源的使用和性能数据。它有助于云资源的监控、报告和计量。
  10. Trove(数据库服务): Trove 是 OpenStack 的数据库服务组件,用于管理和提供云数据库服务。它支持各种数据库引擎,使用户能够轻松地创建、扩展和管理数据库实例。
  11. Sahara(大数据处理服务): Sahara 是 OpenStack 的大数据处理服务组件,用于在云中部署和管理大数据框架(如Hadoop、Spark等)。它提供了大数据处理的自动化工具和服务。
  12. Zun(容器服务): Zun 是 OpenStack 的容器服务组件,用于管理和编排容器。它支持 Docker 容器,并允许用户创建、部署和管理容器化应用程序。

devstack

devstack是面向开发者的一个openstack部署工具,用户可以指定不同的版本分支进行安装。devstack借助于Shell脚本实现openstack自动化部署,devstack源码中的stack.sh即为安装脚本,该脚本默认会安装并配置nova,glance,horizon和keyston、eplacement。

部署过程

创建stack用户

sudo useradd -s /bin/bash -d /opt/stack -m stack
sudo passwd stack #编辑stack用户的登录密码
sudo chmod +x /opt/stack #具有可执行权限
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

切换到stack用户空间下

su - stack

下载devstack源码

git clone https://opendev.org/openstack/devstack
cd devstack

在devstack创建local.conf配置文件

[[local|localrc]]
ADMIN_PASSWORD=123456
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
TEMPEST_REPO=http://git.trystack.cn/openstack/tempest
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2

安装

./stack.sh

报错记录:

sudo apt install libldap-dev=2.5.11+dfsg-1~exp1ubuntu3.1 libldap-2.5-0=2.5.11+dfsg-1~exp1ubuntu3.1
sudo apt install libsasl2-dev=2.1.27+dfsg2-3ubuntu1 libsasl2-2=2.1.27+dfsg2-3ubuntu1
#第三条依赖:依赖关系可以使用aptitude安装
sudo aptitude install libsystemd0=249.11-0ubuntu3.7

mkdir ~/.pip
vim ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

报错:

Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xeu apache2.service" for details.

查看apache日志

端口80被占用,如下图

将 Apache2 的监听端口更改为其他可用端口,需要编辑 Apache2 的配置文件。

sudo nano /etc/apache2/ports.conf

找到以下行:

Listen 80

将 80 更改为其他未被占用的端口,例如 8080:

Listen 8080

保存并退出配置文件

重新启动 Apache2 服务以使更改生效:

sudo systemctl restart apache2

成功启动apache2

放宽依赖范围:您可以尝试放宽对grpcio的版本限制,让pip尝试选择与etcd3兼容的版本。可以这样做:

pip install etcd3==0.12.0 grpcio

这将允许pip选择满足etcd3依赖的grpcio版本。

修改inc/python中pip_install函数,189行

报错:

No module named 'setuptools.command.build'

官网有这个issue:https://github.com/pypa/setuptools/issues/3560,

按照这个issue去做也尚未解决,最后卸载这个包后,重新使用国内源下载

export ALL_PROXY=socks5://222.24.18.228:1080(这个是我们实验室的代理) 脚本执行到pip按照依赖部分会报错:

“ERROR: Could not install packages due to an OSError: Missing dependencies for SOCKS support.”

解决:

unset all_proxy
unset ALL_PROXY

但是执行后github克隆会很慢

找到git clone的脚本部分 在git clone时设置环境变量export ALL_PROXY=socks5://222.24.18.228:1080,执行完后unset all_proxy&&unset ALL_PROXY

脚本下载报错

单独克隆

export ALL_PROXY=socks5://222.24.18.228:1080 && git clone https://opendev.org/openstack/glance.git /opt/stack/glance && unset ALL_PROXY

报错:

建议在一个全新的ubuntu系统上部署,整个过程中会下载很多依赖包,在全新的系统上部署可以避免包之间的冲突(上述过程中的问题大多是网络问题和包冲突)!!!!!!!!!!

部署成功后,终端输出如下

=========================
DevStack Component Timing
 (times are in seconds)  
=========================
wait_for_service      10
async_wait            39
osc                  141
apt-get                5
test_with_retry        3
dbsync                 3
pip_install           80
apt-get-update         2
run_process           25
-------------------------
Unaccounted time      85
=========================
Total runtime        393
=================
 Async summary
=================
 Time spent in the background minus waits: 185 sec
 Elapsed time: 393 sec
 Time if we did everything serially: 578 sec
 Speedup:  1.47074
Post-stack database query stats:
+------------+-----------+-------+
| db         | op        | count |
+------------+-----------+-------+
| cinder     | SELECT    |   143 |
| cinder     | UPDATE    |     5 |
| keystone   | SELECT    | 46308 |
| keystone   | INSERT    |    93 |
| cinder     | INSERT    |     4 |
| neutron    | SELECT    |  4142 |
| neutron    | INSERT    |  6084 |
| neutron    | UPDATE    |   115 |
| placement  | SELECT    |    48 |
| placement  | INSERT    |    60 |
| placement  | SET       |     2 |
| neutron    | DELETE    |    25 |
| nova_api   | SELECT    |   120 |
| nova_cell1 | SELECT    |   151 |
| nova_cell0 | SELECT    |   119 |
| nova_cell0 | INSERT    |     9 |
| nova_cell0 | UPDATE    |     6 |
| placement  | UPDATE    |     3 |
| glance     | SELECT    |    48 |
| glance     | INSERT    |     6 |
| nova_api   | INSERT    |    20 |
| nova_api   | SAVEPOINT |    10 |
| nova_api   | RELEASE   |    10 |
| glance     | UPDATE    |     2 |
| nova_cell1 | INSERT    |     6 |
| nova_cell1 | UPDATE    |    21 |
+------------+-----------+-------+
This is your host IP address: 192.168.115.130
This is your host IPv6 address: ::1
Horizon is now available at http://192.168.115.130/dashboard
Keystone is serving at http://192.168.115.130/identity/
The default users are: admin and demo
The password: 123456
Services are running under systemd unit files.
For more information see: 
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: 2023.2
Change: 129d0964a87ad5757ba21587e1aa7daac2300447 Merge "Remove openeuler job from periodic and check queue" 2023-09-12 21:45:50 +0000
OS Version: Ubuntu 23.04 lunar
2023-09-18 07:59:37.003 | stack.sh completed in 394 seconds.

The End
微信