云计算:OpenStack 分布式架构添加LVM存储(单控制节点与多计算节点)

news2024/11/25 23:51:21

目录

一、实验

1.环境

2.安装并配置控制节点

3. 安装并配置存储节点

4.使用LVM存储


一、实验

1.环境

(1) 主机

表1 主机

主机架构IP备注
controller控制节点192.168.204.210已部署
compute01计算节点1192.168.204.211 已部署
compute02计算节点2192.168.204.212已部署
storage01存储节点1192.168.204.221

(2)官网

OpenStack Docs: OpenStack Installation Guide for Red Hat Enterprise Linux and CentOS

(3)网络

 ①存储节点1  ping 控制节点

②存储节点1 ping 计算节点1 与 计算节点2

(4) 时间同步

① 存储节点1

[root@storage01 ~]# yum install -y chrony

[root@storage01 ~]# vim /etc/chrony.conf
[root@storage01 ~]# systemctl restart chronyd.service && systemctl enable chronyd.service

 ③测试

[root@controller ~]# date

[root@compute01 ~]# date

[root@compute02 ~]# date

[root@storage01 ~]# date

(5) 控制节点查看(目前已部署controller、compute01与compute02)

# neutron agent-list

2.安装并配置控制节点

(1)创建数据库

①用数据库连接客户端 (生产环境需要密码)

$ mysql -u root -p

② 创建 cinder 数据库

CREATE DATABASE cinder;

③ 允许 cinder 数据库合适的访问权限(用合适的密码替换 CINDER_DBPASS)

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
  IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
  IDENTIFIED BY 'CINDER_DBPASS';

(2)创建一个 cinder 用户

$ openstack user create --domain default --password-prompt cinder

​(3)添加 admin 角色到 cinder 用户上

$ openstack role add --project service --user cinder admin

​(4)创建 cinder 和 cinderv2 服务实体

$ openstack service create --name cinder \
  --description "OpenStack Block Storage" volume

$ openstack service create --name cinderv2 \
  --description "OpenStack Block Storage" volumev2

(5)查看

# openstack service list |grep cinder

​(6)创建块设备存储服务的 API 入口点

$ openstack endpoint create --region RegionOne \
  volume public http://controller:8776/v1/%\(tenant_id\)s

$ openstack endpoint create --region RegionOne \
  volume internal http://controller:8776/v1/%\(tenant_id\)s

$ openstack endpoint create --region RegionOne \
  volume admin http://controller:8776/v1/%\(tenant_id\)s

$ openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(tenant_id\)s

$ openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(tenant_id\)s

$ openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

(7)查看

​
# openstack endpoint list |grep cinder

​

(8) 安装软件包

# yum install openstack-cinder

(9) 编辑 /etc/cinder/cinder.conf

① 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问

[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

②在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问

[DEFAULT]
...
auth_strategy = keystone

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS

③ 在 [DEFAULT 部分,配置my_ip来使用控制节点的管理接口的IP 地址

[DEFAULT]
...
my_ip = 192.168.204.210

④ 在 [oslo_concurrency] 部分,配置锁路径

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

⑤ 备份复制

(10) 初始化块设备服务的数据库(忽略输出中任何不推荐使用的信息)

# su -s /bin/sh -c "cinder-manage db sync" cinder

(11)配置计算节点以使用块设备存储

编辑文件 /etc/nova/nova.conf 

[cinder]
os_region_name = RegionOne

(12)重启服务

①重启计算API 服务

# systemctl restart openstack-nova-api.service

②启动块设备存储服务,并将其配置为开机自启

# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

(13)登录系统

(14)已新增卷的模块

(15)查看卷

(16)查看服务列表

# openstack service list

3. 安装并配置存储节点

(1)安装 LVM 包

# yum install lvm2

(2)启动LVM的metadata服务并且设置该服务随系统启动

# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service

(3)查看分区情况

# fdisk -l

(4)查看挂载情况

# df -Th

(5)创建LVM 物理卷

① 创建LVM 物理卷 /dev/sdc 

# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created

② 创建LVM 物理卷 /dev/sdd 

# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

③查看

# pvs

(7)创建 LVM 卷组

①  创建 LVM 卷组 cinder-ssd

# vgcreate cinder-ssd /dev/sdb
Volume group "cinder-ssd" successfully created

② 创建 LVM 卷组 cinder-data

# vgcreate cinder-ssd /dev/sdc
Volume group "cinder-data" successfully created

③ 查看

# vgs

(8)重新配置LVM,让它只扫描包含指定卷组的设备,编辑/etc/lvm/lvm.conf文件

①在devices部分,添加一个过滤器,只接受/dev/sdb 与/dev/sdc 设备,拒绝其他所有设备

devices {
...
filter = [ "a/sdb/", "a/sdc/","r/.*/"]

(9) 安装软件包

# yum install openstack-cinder targetcli python-keystone

(10) 编辑 /etc/cinder/cinder.conf

①在 [database] 部分,配置数据库访问

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

②在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问

[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

③ 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问

[DEFAULT]
...
auth_strategy = keystone

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS

④ 在 [DEFAULT] 部分,配置 my_ip 选项

[DEFAULT]
...
my_ip = 192.168.204.212

 ⑤ 在[ssd]部分,配置LVM后端以LVM驱动结束,卷组cinder-ssd ,iSCSI 协议和正确的 iSCSI服务

[ssd]
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-ssd
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = ssd

 ⑥ 在[sata]部分,配置LVM后端以LVM驱动结束,卷组cinder-data ,iSCSI 协议和正确的 iSCSI服务

[ssd]
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-data
iscsi_helper = lioadm
volume_backend_name = sata

 ⑦在 [DEFAULT] 部分,启用 LVM 后端

[DEFAULT]
...
enabled_backends = ssd,sata

⑧在 [DEFAULT] 区域,配置镜像服务 API 的位置

[DEFAULT]
...
glance_api_servers = http://controller:9292

在 [oslo_concurrency] 部分,配置锁路径

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

⑨备份复制

(11)完成安装

①启动块存储卷服务及其依赖的服务,并将其配置为随系统启动

# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service

(12)控制节点查看服务列表

# openstack service list

4.使用LVM存储

(1)登录系统

(2)查看卷

(3)创建卷

(4)完成

(5)控制节点查看

# cinder list

(6)存储节点查看

# lvs

(7) 扩展卷

(8)修改为2G 

(9)扩展中

(10)完成

(11)控制节点查看

# cinder list

(12)存储节点查看

# lvs

(13)删除卷

(14)查看

(15)新增存储类型ssd与sata

(16) 关联后端存储

(17)查看卷

(18)创建ssd类型卷

(19)创建中

(20)完成

(21)创建sata类型卷

(22) 创建中

(23)完成

(24)控制节点查看

# cinder list

(25)存储节点查看

# lvs

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker:部署若依前后端分离版

Docker:部署若依前后端分离版 1. 停止天翼云上的原来跑的若依项目2. 停止腾讯云上的若依项目3. 使用Docker部署3.1 天翼云数据库&Redis3.1.1 部署数据库3.1.2 部署Redis数据库3.1.1 部署Nginx(这里被天翼云坑了换的腾讯云运行nginx) 3.2 腾讯云部署后端&前端…

ubuntu 20.04 自由切换 python 的版本

问题描述 当前 ubuntu 20.04 默认安装了多个 python 的版本,执行 python 时,默认版本是 Python 2.7.18 zhangszzhangsz:~$ python Python 2.7.18 (default, Jul 1 2022, 12:27:04) [GCC 9.4.0] on linux2 Type "help", "copyright&quo…

【unity知识点】Unity 协程Coroutine

文章目录 前言使用协程的步骤:使用场景示例:yield return new WaitForSeconds和yield return new WaitForFixedUpdate的区别开始和停止携程完结 前言 Unity 协程是一种特殊的函数,可以在游戏中实现延迟执行、按顺序执行和异步操作等功能。它…

多人协同开发git flow,创建初始化项目版本

文章目录 多人协同开发git flow,创建初始化项目版本1.gitee创建组织模拟多人协同开发2.git tag 打标签3.git push origin --tags 多人协同开发git flow,创建初始化项目版本 1.gitee创建组织模拟多人协同开发 组织中新建仓库 推送代码到我们组织的仓库 2…

uni-app设置地图显示

使用前需到**高德开放平台(https://lbs.amap.com/)**创建应用并申请Key 登录 高德开放平台,进入“控制台”,如果没有注册账号请先根据页面提示注册账号 打开 “应用管理” -> “我的应用”页面,点击“创建新应用”&…

Golang leetcode707 设计链表 (链表大成)

文章目录 设计链表 Leetcode707不使用头节点使用头节点 推荐** 设计链表 Leetcode707 题目要求我们通过实现几个方法来完成对链表的各个操作 由于在go语言中都为值传递,(注意这里与值类型、引用类型的而区别),所以即使我们直接在…

8个Python高效数据分析的技巧,不看肯定后悔~

本文介绍的数据分析方法,不仅能够提升运行效率,还能够使代码更加“优美”。 不管是参加Kaggle比赛,还是开发一个深度学习应用,第一步总是数据分析,这篇文章介绍了8个使用Python进行数据分析的方法,不仅能够…

实现CodeWave 低代码开发平台快速应用开发的完整指南

目录 前言1 CodeWave开发流程2 应用创建2.1 新建应用2.2 从应用模板创建应用 3 数据模型设计3.1 实体设计3.2 结构设计3.3 枚举设计 4 逻辑设计4.1 查询数据源设置4.2 组件和属性配置4.3 属性设置与服务端全局变量 5 页面设计5.1 选择页面模板5.2 前端全局变量设计5.3 事件逻辑…

音视频技术开发周刊 | 326

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 全球最强「开源版Gemini」诞生!全能多模态模型Emu2登热榜,多项任务刷新SOTA 最强的全能多模态模型来了!就在近日,智源研究院…

红队打靶练习:SAR: 1

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 小结 目录探测 1、gobuster 2、dirsearch WEB CMS 1、cms漏洞探索 2、RCE漏洞利用 提权 get user.txt 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface:…

系统学习Python——装饰器:函数装饰器-[对方法进行装饰:使用嵌套函数装饰方法]

分类目录:《系统学习Python》总目录 如果想要函数装饰器在简单函数和类级别的方法上都能工作,最直接的解决办法在于使用前面文章介绍的状态保持方案之一:把自己的函数装饰器编写为嵌套的def,这样你就不会陷入单一的self实例参数既…

【办公技巧】pdf打印没反应怎么办

正常的PDF文件是可以打印的,如果PDF文件打开之后发现文件不能打印,我们需要先查看一下自己的打印机是否能够正常运行,如果打印机是正常的,我们再查看一下,文件中的打印功能按钮是否是灰色的状态。 如果PDF中的大多数功…

找火鸡^^

欢迎来到程序小院 找火鸡 玩法:记忆翻牌游戏,不同关卡会有不同数目的火鸡,卡牌自由滚动,记住火鸡的位置, 规定的时间内找到火鸡所在的位置,快去找火鸡吧^^。开始游戏https://www.ormcc.com/play/gameStart…

江西速欣商务咨询有限公司:债务规划重组的专业法务咨询服务

在财务管理中,债务问题往往成为个人和企业面临的一项重要挑战。江西速欣商务咨询有限公司作为债务问题的专业解决者,致力于为客户提供高效而专业的债务规划重组法务咨询服务,帮助他们摆脱负担,重整财务秩序。 深谙债务规划的专业智…

Python 基础语法01

变量声明 #运算 num 1 num 1 print("num 1",num)num - 1 print("num - 1", num)num * 4 print("num * 4",num)num 3 num % 2 print("num%2",num)num ** 2 print("num ** 2", num)num 9 num // 2 print("num // …

JavaScript 中常用事件

前言: 介绍了什么是事件以及原理,还有常用的事件及使用 **如果演示结果不好理解,可以复制代码到自己的电脑中运行,这样你们可以更好理解也可以研究出好玩的,研究出的话顺便发给我也玩玩🤭 文章目录 什么是事件原理鼠标…

针对工行的LockBit勒索软件攻击表明了全球金融系统对网络攻击的脆弱性

内容概要: 11月8日,工行一家美国子公司被勒索软件入侵导致美国国债交易业务瘫痪,暴露了全球金融系统易受网络攻击的脆弱性。LockBit勒索软件集团声称对工行的攻击负责。工行是世界上资产规模最大的银行,管理着5.7万亿美元。这一网…

轻松提升软件性能:快速学习和使用Memcached

目录 1、前言 2、Memcached的简介 3、Memcached的安装与配置 4、Memcached的数据结构 5、Memcached的常用命令 6、Memcached的高级特性 7、Memcached在系统中如何使用 8、结语 1、前言 Memcached是一个广泛用于提升软件性能的开源内存缓存系统。它可以有效地减少对数据…

代码随想Day55 | 392.判断子序列、115.不同的子序列

392.判断子序列 第一种思路是双指针&#xff0c;详细代码如下&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {//双指针if(s.empty()&&t.empty()) return true;int i0,j0;while(i<t.size()){if(s[j]t[i]) j;if(js.size()) return t…

MySQL触发器的创建、查看、删除、存储过程与触发器的区别等

MySQL触发器 1、什么是触发器2、创建触发器3、查看所有的触发器4、删除触发器5、常见的触发器案例6、存储过程与触发器的区别 1、什么是触发器 简单点来说触发器就是一个特殊的存储过程&#xff0c;不过存储过程需要手动调用&#xff0c;而触发器自动调用。 一张图来简单说明…