云计算:openstack学习笔记和环境部署
记录一次openstack的学习和部署
openstack
OpenStack���一个自由、开源的云计算平台。它主要作为基础设施即服务(IaaS)部署在公用云和私有云中,提供虚拟服务器和其他资源给用户使用。该软件平台由相互关联的组件组成,控制着整个数据中心内不同的厂商的计算、存储和网络资源的硬件池。用户可以通过基于网络的仪表盘或者命令行工具管理。
应用场景:OpenStack是基础设施即服务(IaaS)软件,让任何人都可以自行创建和提供云计算服务。
核心服务组件
OpenStack 的主要部分(组件):
- Nova(计算服务): Nova 是 OpenStack 的计算服务组件,用于管理和调度虚拟机实例。它允许用户创建、启动、停止和管理虚拟机,还负责资源调度,以确保虚拟机在计算节点上得到适当的分配。
- Neutron(网络服务): Neutron 是 OpenStack 的网络服务组件,负责创建和管理虚拟网络资源,包括虚拟子网、路由、防火墙等。它使用户能够定义和配置虚拟网络拓扑,以便虚拟机实例之间和与外部网络进行通信。
- Cinder(块存储服务): Cinder 是 OpenStack 的块存储服务组件,用于管理块级存储卷。它允许用户创建、附加、分离和备份块存储卷,以满足虚拟机实例的持久性存储需求。
- Glance(镜像服务): Glance 是 OpenStack 的镜像服务组件,用于管理虚拟机镜像。它允许用户上传、存储和共享虚拟机镜像,以便在创建虚拟机实例时使用。
- Keystone(身份认证服务): Keystone 是 OpenStack 的身份认证服务组件,用于管理用户身份验证和授权。它提供了用户、角色、项目和权限管理,以确保只有经过身份验证和授权的用户才能访问 OpenStack 资源。
- Swift(对象存储服务): Swift 是 OpenStack 的对象存储服务组件,用于存储和检索大规模的非结构化数据,如文件、图片和视频。它提供了可扩展的对象存储能力,适用于云存储和数据备份。
- Horizon(仪表板): Horizon 是 OpenStack 的官方 Web 用户界面,用于管理和监视云资源。它提供了直观的图形界面,使用户能够通过浏览器访问和控制 OpenStack。
- Heat(编排服务): Heat 是 OpenStack 的编排服务组件,用于定义和管理云基础设施的资源和配置。它允许用户创建模板,以自动化和编排云资源的部署和配置。
- Ceilometer(监控和计量服务): Ceilometer 是 OpenStack 的监控和计量服务组件,用于收集、存储和分析云资源的使用和性能数据。它有助于云资源的监控、报告和计量。
- Trove(数据库服务): Trove 是 OpenStack 的数据库服务组件,用于管理和提供云数据库服务。它支持各种数据库引擎,使用户能够轻松地创建、扩展和管理数据库实例。
- Sahara(大数据处理服务): Sahara 是 OpenStack 的大数据处理服务组件,用于在云中部署和管理大数据框架(如Hadoop、Spark等)。它提供了大数据处理的自动化工具和服务。
- 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.