当前位置: 首页 > article >正文

OpenStack系列第三篇:CentOS7 上部署 OpenStack(Train版)集群教程 Ⅳ Dashboard Cinder 服务部署

文章目录

  • 1. Dashboard:仪表盘服务
    • 部署步骤(Controller 节点)
    • 检测
  • 2. Cinder:块存储服务
    • 部署步骤(Controller 节点)
    • 部署步骤(Compute 节点)
    • 监测(Controller 节点)
  • 结语


完成前面部署后,本篇将重点介绍如何部署 OpenStack 的两个核心服务:

1. Dashboard:仪表盘服务
2. Cinder:块存储服务

每个服务的部署将包含以下内容:作用、实现原理、部署流程以及关键配置的解释。

1. Dashboard:仪表盘服务

Dashboard 是什么?
Dashboard 是 OpenStack 提供的一个基于 Web 界面的管理工具,官方名称为 Horizon。它允许管理员和普通用户通过浏览器轻松管理 OpenStack 的各种资源,包括虚拟机、存储、网络等。它类似于一个“控制台”,让人们可以不需要使用复杂的命令行,直接完成云环境的操作。

实现原理:
Dashboard 是一个 Django Web 应用程序,它通过调用 OpenStack 提供的 RESTful API,与后端服务(如 Nova、Cinder、Neutron 等)交互,完成资源管理和状态监控的任务。

具体流程:

  1. 用户通过浏览器访问 Dashboard。
  2. Dashboard 与 Keystone(身份认证服务)交互,验证用户身份并获取 Token。
  3. 根据用户权限,通过 API 调用相应的服务组件(如 Nova 管理虚拟机、Cinder 管理存储)。
  4. 最后,结果会返回并以图形界面呈现给用户。

简单例子:
假设你是公司 IT 部门的管理员,现在有一个新员工需要一台开发用的虚拟机,但他只告诉你需要安装 Ubuntu 系统和可以上网。

操作步骤:

  1. 你打开 Dashboard,进入 “实例” 页面,就像打开淘宝一样准备“下单”。
  2. 在 “启动实例” 的表单里填写虚拟机名称(类似商品名字),选择 Ubuntu 系统镜像(商品类型),并勾选公司内网(快递方式)。
  3. 点击 “启动”,系统后台自动帮你把虚拟机“制造”和“发货”到员工的账户上。
  4. 几分钟后,虚拟机出现在列表中(订单完成),你只需要通知新员工登录自己的虚拟机即可使用。

比喻: Dashboard 就像一个云管理的“淘宝商城”,你点击鼠标,后台就能帮你完成复杂的订制和交付,而不需要了解太多技术细节。

部署步骤(Controller 节点)

  1. 安装 Nova 包:
yum install -y install openstack-dashboard
  1. 修改配置文件:
vim /etc/openstack-dashboard/local_settings

以下是关键配置:

ALLOWED_HOSTS = ['*']

OPENSTACK_HOST = "controller"

TIME_ZONE = "Asia/Shanghai"

# 下面是追加
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
  'default':{
    'BACKEND':'django.core.cache.backends.memcached.MemcachedCache',
    'LOCATION':'controller:11211',
  }
}
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_API_VERSION = {
  "identity":3,
  "image":2,
  "volume":3,
}

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
OPENSTACK_NEUTRON_NETWORK = {
  'enable_auto_allocated_network':False,
  'enable_distributed_router':False,
  'enable_fip_topology_check':False,
  'enable_ha_router':False,
  'enable_ipv6':False,
  'enable_quotas':False,
  'enable_rbac_policy':False,
  'enable_router':False,

  'default_dns_nameservers':[],
  'supported_provider_types':['*'],
  'segmentation_id_range':{},
  'extra_provider_types':{},
  'supported_vnic_types':['*'],
  'physical_networks':[],
}
WEBROOT = '/dashboard/'

重建 Web 配置文件并配置

cd /usr/share/openstack-dashboard/
python manage.py make_web_conf --apache > /etc/httpd/conf.d/openstack-dashboard.conf

vim /etc/httpd/conf.d/openstack-dashboard.conf

以下是关键配置:

# 替换两句
#WSGIScriptAlias / /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py
WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi

#Alias /static /usr/share/openstack-dashboard/static
Alias /dashboard/static /usr/share/openstack-dashboard/static

官方和书本教材都会让你用 / 作为访问目录,因为 Keystone 也使用 / 会造成冲突(也部署在这台机上),在 Dashboard 面板点击 身份认证 部分时会报 500 错误

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

Daemon process called 'keystone-public' cannot be accessed by this WSGI application: /usr/bin/keystone-wsgi-public

所以要更换访问目录 /dashboard
详细参考链接 CSDN处理方法 和 Openstack bugs 讨论

  1. 建立策略文件软链接
ll /etc/openstack-dashboard/

ln -s /etc/openstack-dashboard /usr/share/openstack-dashboard/openstack_dashboard/conf

ll /usr/share/openstack-dashboard/openstack_dashboard/
  1. 启动服务
    重启 httpd ,使其生效
systemctl enable httpd && systemctl restart httpd

检测

  1. 在浏览器访问 http://192.168.61.10/dashboard/
    账号:admin
    密码:lian
  2. 乱点看有没有访问报错(检测各服务)
  3. 点击 计算 -> 镜像 看看有没有之前上传过的镜像 OpenStack系列第三篇:CentOS7 上部署 OpenStack(Train版)集群教程 Ⅱ Keystone Glance Placement 服务部署 Glance 镜像服务 部分

2. Cinder:块存储服务

注意: 这里将在 Compute 节点 上部署存储节点,即 Openstack 虚拟机 用的是 Compute 节点上的存储空间。

Cinder 是什么?
Cinder 是 OpenStack 的块存储服务,用于为虚拟机提供持久化存储设备。可以把它看作云平台中的“硬盘服务”,通过创建、挂载和管理虚拟块设备,为虚拟机运行提供存储支持。

实现流程:

  1. 用户通过 Dashboard 或 CLI 请求创建卷(Volume)。
  2. Cinder 向存储后端(如 Ceph、LVM 或 NetApp)发出指令,分配存储资源并创建卷。
  3. 用户将卷挂载到虚拟机,Nova 会通过 iSCSI 或 FC(光纤通道)协议连接卷。
  4. 用户在虚拟机内部可直接将卷格式化为文件系统并存储数据。

简单例子:
你公司采购了一批新的高速硬盘,用于扩展开发人员的存储空间。假如某个员工发现自己虚拟机的硬盘空间快满了,他来找你求助,想要再加 100GB 空间。

操作步骤:

  1. 你登录 Dashboard,进入 “卷” 页面(相当于硬盘商城)。
  2. 点击 “创建卷”,给硬盘起一个名字,比如 “开发硬盘 1”,设置大小为 100GB。
  3. 创建好硬盘后,你进入该员工的虚拟机页面,选择“挂载卷”。
  4. 系统会把这个新硬盘像“快递”一样送到该虚拟机,并挂载到系统里。
  5. 员工收到通知,打开虚拟机时就会看到一个新硬盘(D 盘),可以用来存放更多的代码和数据。

比喻: Cinder 就像一个“云硬盘商城”,你随时可以为你的电脑买额外的硬盘,并且硬盘会直接“送货上门”,帮你安装到电脑上,几乎不需要任何技术操作。

部署步骤(Controller 节点)

  1. 安装 Cinder 包:
yum -y install openstack-cinder
  1. 检查安装是否成功:
cat /etc/passwd | grep cinder && cat /etc/group | grep cinder
  1. 创建数据库:
mysql -uroot -plian
   > create database cinder;
   > grant all privileges on cinder.* to 'cinder'@'localhost' identified by 'lian';
   > grant all privileges on cinder.* to 'cinder'@'%' identified by 'lian';
   > quit
  1. 配置 Cinder 服务
    备份配置文件并编辑 /etc/cinder/cinder.conf
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
vim /etc/cinder/cinder.conf

修改如下关键配置:

[DEFAULT]
auth_strategy = keystone
transport_url = rabbit://rabbitmq:lian@controller:5672

[database]
connection = mysql+pymysql://cinder:lian@192.168.61.10/cinder

[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = cinder
password = lian

[nova]
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp

备份配置文件并编辑 /etc/cinder/cinder.conf
这里我在 OpenStack系列第三篇:CentOS7 上部署 OpenStack(Train版)集群教程 Ⅲ Nova Neutron 服务部署 部署 nova 的时候配过了,不用再配

  1. 初始化 Neutron 数据库:
su cinder -s /bin/sh -c "cinder-manage db sync"
  1. 创建服务用户和 API 端点
openstack user create --domain default --password lian cinder
openstack role add --project project --user cinder admin
openstack service create --name cinderv3 volumev3

openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s
  1. 启动服务
systemctl restart openstack-nova-api
systemctl restart openstack-cinder-api openstack-cinder-scheduler
systemctl enable openstack-cinder-api openstack-cinder-scheduler
  1. 检测
netstat -nutpl | grep 8776

openstack volume service list

部署步骤(Compute 节点)

  1. 添加硬盘
    配置 compute 虚拟机,给其添加个 50G 的硬盘,流程如下:
    邮件 -> 设置 -> 添加(硬盘)-> 下一步(默认).....-> 50G -> 命名 -> 完成 -> 重启虚拟机
    检查生效:
lsblk
  1. 配置卷组
pvcreate /dev/sdb # 我这里是sdb,请按实际的来
vgcreate cinder-volumes /dev/sdb

vim /etc/lvm/lvm.conf
# 在 devices { 下追加
filter = ["a/sdb/","r/.*/"]

启动

systemctl enable lvm2-lvmetad && systemctl start lvm2-lvmetad
  1. 安装 Cinder 包:
yum -y install openstack-cinder targetcli python-keystone
  1. 配置 Cinder 服务
    备份配置文件并编辑 /etc/cinder/cinder.conf
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
vim /etc/cinder/cinder.conf

修改如下关键配置:

[DEFAULT]
auth_strategy = keystone
transport_url = rabbit://rabbitmq:lian@controller:5672
glance_api_servers = http://controller:9292
enabled_backends = lvm

[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm

[database]
connection = mysql+pymysql://cinder:lian@controller/cinder

[fc-zone-manager]
[healthcheck]
[key_manager]
[keystone_authtoken]
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = project
username = cinder
password = lian

[nova]
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
  1. 启动服务
systemctl enable openstack-cinder-volume target && systemctl start openstack-cinder-volume target

监测(Controller 节点)

  1. 查看存储服务列表
openstack volume service list
# 看到两个up才是正常
  1. 创建卷
openstack volume create --size 8 volume1

在 Dashboard 创建也可以,成功就行。


结语

这里就完成了 Dashboard Cinder 的服务部署,也就是完成了 Openstack 的所有安装,后面继续记录 OpenStack 简单使用compute(Nova)节点的增减以及尝试将 VMware Vsphere 虚拟机迁移至 OpenStack上,并详细分享过程中遇到的各种坑点——包括那些连官方文档和教材中未提及的细节问题!希望通过这个教程,大家能深入理解和熟悉 OpenStack。


http://www.kler.cn/a/460705.html

相关文章:

  • 微信小程序获取后端数据
  • NSGA-II(非支配排序遗传算法II)详解与实现
  • 只谈C++11新特性 - 内联命名空间
  • 前端异常处理合集
  • 自由学习记录(31)
  • 选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型
  • 低代码/无代码开发平台下的电商API接口创新应用
  • Microsoft 365 Copilot模型多元化,降低对OpenAI依赖并降低成本
  • gitlab 还原合并请求
  • JVM调优(内存、GC、JVM参数)
  • 《庐山派从熟悉到...》Sensor 模块(摄像头)基础设置
  • html+css+js网页设计 美食 美食杰8个页面
  • AviatorScript
  • 数据结构-排序思想
  • 1月第一讲:WxPython跨平台开发框架之前后端结合实现附件信息的上传及管理
  • 【MyBatis】MyBatis项目的创建、配置和启动
  • 异步请求在TypeScript网络爬虫中的应用
  • docker Oracle设置rman自动备份步骤
  • Linux jupyter notebook Matplotlib 无法显示汉字
  • 企业储能电站 储能配电柜监测管理系统
  • 基于微信小程序的校园点餐平台的设计与实现(源码+SQL+LW+部署讲解)
  • 深度解析PXE技术与实践应用
  • 【复刻】数字化转型是否赋能企业新质生产力发展?(2015-2023年)
  • 发文章用哪个平台比较好?哪些问题会影响到媒体出稿的速度?
  • 确保大语言模型(LLM)安全:保护数据隐私与防止滥用
  • NVR录像机汇聚管理EasyNVR可设置预置位与实际预置位不符应该如何处理?