OpenStack之Train版本部署---glance篇 (:=)

本文详细介绍如何在OpenStack环境中部署Glance镜像服务,包括配置数据库、创建OpenStack用户、安装Glance服务及配置文件等步骤,并演示了如何上传测试镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于部署的环境

环境

本次部署流程是基于测试环境部署的,实机部署可能会有所偏差,请参照生产环境自行检查。

先使用vmware workstation创建3台虚拟机(根据架构图应该是4台 但是宿主机资源有限,将存储节点和网络节点合并)

虚拟机配置

所有虚拟机 均使用以下配置 (宿主机至少拥有24g内存和6核心的英特尔处理器或者6核的AMD 4代ryzen以上)开启处理器虚拟化

控制节点ct:

处理器2核2线程实际上在宿主机应该是2核4线程,因为vm设置的虚拟机线程是每个核心的线程数
内存/存储8G300g+300g设置多个硬盘文件,不会立即分配所有空间
网卡net:20.0.0.20(模拟公网,面向用户)vm1:192.168.100.10 (模拟局域网,面向内部服务)
操作系统Centos7.6-1810最小化安装(模拟生产环境)

如下:
在这里插入图片描述

其他节点只需修改地址即可
c1:
ens33:20.0.0.21
ens37:192.168.100.11
c2:
ens33:20.0.0.22
ens37:192.168.100.12

部署流程

  1. 为所有主机配置网卡+运行环境
  2. 为所有主机配置基础服务(rabbitmq、mariadb、memcache、Apache)
  3. 部署keystone组件
  4. 部署Glance组件 <<<(本次介绍的位置)
  5. 部署placement组件
  6. 部署Nova组件
  7. 部署Neutron组件
  8. 部署dashboard组件
  9. 部署Cinder组件

过程太长博主会分篇介绍,本次只是glance部署

为glance创建数据库 并授权

mysql -u root -p
CREATE DATABASE glance; #创建名为glance的库
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; #授权给本地
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; #授权给所有网段
flush privileges;
exit

为glance服务创建OpenStack用户并创建区域端口

openstack user create --domain default --password GLANCE_PASS glance
openstack role add --project service --user glance admin
Image" image #创建OpenStack中的glance用户密码并设置其为管理员
openstack endpoint create --region RegionOne image public http://ct:9292 #为其创建在数据网络域的端口
openstack endpoint create --region RegionOne image internal http://ct:9292 #为其创建在外部网络域的端口
openstack endpoint create --region RegionOne image admin http://ct:9292 #为其创建在管理网络域的端口

安装glance服务并配置api和registry配置文件

yum -y install openstack-glance #yum安装glance
cp -a /etc/glance/glance-api.conf{,.bak} #备份原配置文件模板
grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf #输出并覆盖原配置文件中的非注销项给原文件
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/
cat /etc/glance/glance-api.conf
cp -a /etc/glance/glance-registry.conf{,.bak} #备份
grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf #输出并覆盖原配置文件中的非注销项给原文件
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-registry.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-registry.conf glance_store default_store file
openstack-config --set /etc/glance/glance-registry.conf glance_store filesystem_store_datadir /var/lib/glance/images/
cat /etc/glance/glance-registry.conf
[DEFAULT]
[database]
connection = mysql+pymysql://glance:GLANCE_DBPASS@ct/glance #指定数据库的类型和数据库用户名密码
[keystone_authtoken]
www_authenticate_uri = http://ct:5000 、#指定keystone的地址端口
auth_url = http://ct:5000 
memcached_servers = ct:11211 #指定token令牌缓存的地址端口
auth_type = password #访问keystone验证方式
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = GLANCE_PASS
[oslo_messaging_amqp]
[oslo_messaging_kafka]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
[oslo_policy]
[paste_deploy]
flavor = keystone #token的验证方式
[profiler]
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/ #指定镜像文件存储位置

初始化glance数据库

su -s /bin/sh -c "glance-manage db_sync" glance #切换用户执行初始化
Database is synced successfully. #提示sync 表示同步成功

开启服务并上传测试镜像

systemctl enable openstack-glance-api.service #开启glance-api服务开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-glance-api.service to /usr/lib/systemd/system/openstack-glance-api.service.
systemctl start openstack-glance-api.service #开启glance-api服务
netstat -natp | grep 9292 #查看开放的端口
tcp        0      0 0.0.0.0:9292            0.0.0.0:*               LISTEN      12365/python2       
yum -y install lrzsz #安装Xshell文件传输软件
完毕!
rz -E #上传测试镜像文件
rz waiting to receive.
openstack image create --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros #将镜像导入glance使其识别
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| checksum         | f8ab98ff5e73ebab884d80c9dc9c7290                                                                                                                                                           |
| container_format | bare                                                                                                                                                                                       |
| created_at       | 2020-12-21T12:02:59Z                                                                                                                                                                       |
| disk_format      | qcow2     #镜像格式                                                                                                                                                                                  |
| file             | /v2/images/b59d3ef0-b40d-43be-a1fa-e25039b46627/file                                                                                                                                       |
| id               | b59d3ef0-b40d-43be-a1fa-e25039b46627                                                                                                                                                       |
| min_disk         | 0                                                                                                                                                                                          |
| min_ram          | 0                                                                                                                                                                                          |
| name             | cirros                                                                                                                                                                                     |
| owner            | dcff771374df4c618c93996fdcf87dad                                                                                                                                                           |
| properties       | os_hash_algo='sha512', os_hash_value='f0fd1b50420dce4ca382ccfbb528eef3a38bbeff00b54e95e3876b9bafe7ed2d6f919ca35d9046d437c6d2d8698b1174a335fbd66035bb3edc525d2cdb187232', os_hidden='False' |
| protected        | False                                                                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                                                                          |
| size             | 13267968                                                                                                                                                                                   |
| status           | active    #上传的状态 该状态为传输完成可以调用                                                                                                                                                                                  |
| tags             |                                                                                                                                                                                            |
| updated_at       | 2020-12-21T12:03:00Z                                                                                                                                                                       |
| virtual_size     | None                                                                                                                                                                                       |
| visibility       | public                                                                                                                                                                                     |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

openstack image list #使用OpenStack命令查看镜像列表 可以看到镜像状态
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| b59d3ef0-b40d-43be-a1fa-e25039b46627 | cirros | active |
+--------------------------------------+--------+--------+
[root@localhost ~]# glance image-list #使用glance命令查看镜像列表 看不到镜像状态
+--------------------------------------+--------+
| ID                                   | Name   |
+--------------------------------------+--------+
| b59d3ef0-b40d-43be-a1fa-e25039b46627 | cirros |
+--------------------------------------+--------+
<think>好的,我需要帮助用户在CentOS 8上部署OpenStack Train版本。首先,我需要回顾一下用户提供的引用内容,看看哪些步骤是相关的。用户提到了几个引用,其中引用[3]特别提到了CentOS 8需要禁用NetworkManager安装network-scripts,这可能是关键步骤。另外,引用[1]和[2]提到了初始化OpenStack和启动cinder服务,这些步骤可能也适用。 首先,我需要确保用户的环境满足基本要求,比如操作系统版本、网络配置和必要的软件包。根据引用[3],CentOS 8默认使用NetworkManager,但OpenStack需要传统的network-scripts,所以第一步应该是禁用NetworkManager启用network服务。用户需要运行systemctl disable和stop NetworkManager,然后安装network-scripts启动network服务。 接下来,安装依赖项和Kolla-ansible。Kolla-ansible是OpenStack部署工具,用户可能需要配置EPEL仓库来安装必要的软件包。比如,dnf install python3-devel libffi-devel gcc openssl-devel python3-libselinux这些包可能都是必须的。然后,使用pip安装kolla-ansible,复制配置文件到正确的位置,比如/etc/kolla/。 然后,配置globals.yml文件,这里需要指定OpenStack版本train设置网络接口和虚拟接口。用户可能需要根据实际网络环境调整这些参数,比如network_interface和neutron_external_interface。此外,需要生成密码文件,使用kolla-genpwd生成密码,确保所有服务都有正确的凭证。 部署前需要检查依赖,运行kolla-ansible -i all-in-one bootstrap-servers和prechecks命令,确保所有节点配置正确。然后执行实际的部署命令kolla-ansible -i all-in-one deploy。这个过程可能会比较耗时,取决于系统性能和网络速度。 部署完成后,初始化OpenStack环境,可能需要运行init-runonce脚本,如引用[1]提到的/usr/share/kolla-ansible/init-runonce,这有助于创建初始网络和实例。此外,用户需要安装OpenStack客户端,配置环境变量,以便通过命令行管理OpenStack资源。 启动cinder服务也是必要的,如引用[2]所述,需要启用启动openstack-cinder-api和scheduler服务。同时,确保其他相关服务如Nova、Neutron、Glance等都已正确启动和配置。 最后,验证部署是否成功,创建虚拟机实例,检查网络连通性和资源分配情况。用户可能还需要配置安全组规则,允许SSH或其他流量。 在整个过程中,可能会遇到各种问题,比如服务启动失败、网络配置错误或依赖包缺失。需要引导用户查看日志文件,如/var/log/kolla/下的日志,进行故障排除。另外,确保所有步骤都按照顺序执行,特别是在修改配置文件后重新运行部署命令。 用户可能还会问及相关问题,比如如何扩展计算节点、如何备份OpenStack配置、如何进行版本升级等,但根据当前问题,主要集中在部署步骤上。需要确保回答结构清晰,步骤详细,且参考了提供的引用内容,特别是禁用NetworkManager和使用kolla-ansible的部分。</think>### CentOS 8 上部署 OpenStack Train 版本指南 #### 一、环境准备 1. **操作系统要求** - CentOS 8 Stream 或 CentOS 8(建议最小化安装- 至少 8GB 内存、4 核 CPU、100GB 磁盘空间 - 双网卡(管理网络与外部网络)[^3] 2. **禁用 NetworkManager** ```bash systemctl disable --now NetworkManager dnf install network-scripts -y systemctl enable --now network ``` #### 二、安装依赖与工具 1. **配置 EPEL 仓库** ```bash dnf install epel-release -y dnf config-manager --set-enabled powertools ``` 2. **安装必要软件包** ```bash dnf install python3-devel libffi-devel gcc openssl-devel python3-libselinux -y pip3 install --upgrade pip pip3 install 'ansible-core>=2.13,<2.14' kolla-ansible --ignore-installed PyYAML ``` 3. **复制 Kolla 配置文件** ```bash mkdir -p /etc/kolla cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/ cp /usr/share/kolla-ansible/ansible/inventory/all-in-one . ``` #### 三、配置 OpenStack 1. **修改 `globals.yml`** ```yaml kolla_base_distro: "centos" kolla_install_type: "source" openstack_release: "train" network_interface: "ens192" # 管理网卡名称 neutron_external_interface: "ens224" # 外部网络网卡 enable_cinder: "yes" # 启用块存储服务[^2] ``` 2. **生成密码文件** ```bash kolla-genpwd ``` #### 四、部署与验证 1. **执行预检查与部署** ```bash kolla-ansible -i all-in-one bootstrap-servers kolla-ansible -i all-in-one prechecks kolla-ansible -i all-in-one deploy ``` 2. **初始化 OpenStack 环境** ```bash /usr/share/kolla-ansible/init-runonce # 创建示例网络和实例[^1] ``` 3. **安装 OpenStack 客户端** ```bash pip3 install python-openstackclient source /etc/kolla/admin-openrc.sh ``` #### 五、验证服务状态 ```bash openstack compute service list # 检查 Nova 服务 openstack network agent list # 检查 Neutron 代理 openstack volume service list # 检查 Cinder 服务[^2] ``` #### 六、常见问题 - **网络问题**:若实例无法获取 IP,检查 `neutron_external_interface` 配置和安全组规则。 - **资源调度失败**:确保 Placement 服务正常运行[^4],检查 `/var/log/kolla/placement` 日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值