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

目录

一、实验

1.环境

2.安装并配置控制节点

[3. 安装并配置存储节点](#3. 安装并配置存储节点)

4.使用LVM存储


一、实验

1.环境

(1) 主机

表1 主机

|------------|-------|-----------------|-----|
| 主机 | 架构 | IP | 备注 |
| controller | 控制节点 | 192.168.204.210 | 已部署 |
| compute01 | 计算节点1 | 192.168.204.211 | 已部署 |
| compute02 | 计算节点2 | 192.168.204.212 | 已部署 |
| storage01 | 存储节点1 | 192.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

bash 复制代码
[root@storage01 ~]# yum install -y chrony

​

bash 复制代码
[root@storage01 ~]# vim /etc/chrony.conf
[root@storage01 ~]# systemctl restart chronyd.service && systemctl enable chronyd.service

​​

③测试

bash 复制代码
[root@controller ~]# date

[root@compute01 ~]# date

[root@compute02 ~]# date

[root@storage01 ~]# date

​

​

​

​

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

bash 复制代码
# neutron agent-list

2.安装并配置控制节点

(1)创建数据库

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

bash 复制代码
$ mysql -u root -p

② 创建 cinder 数据库

bash 复制代码
CREATE DATABASE cinder;

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

bash 复制代码
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 用户

bash 复制代码
$ openstack user create --domain default --password-prompt cinder

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

bash 复制代码
$ openstack role add --project service --user cinder admin

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

bash 复制代码
$ openstack service create --name cinder \
  --description "OpenStack Block Storage" volume

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

​

(5)查看

bash 复制代码
# openstack service list |grep cinder

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

bash 复制代码
$ 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)查看

bash 复制代码
​
# openstack endpoint list |grep cinder

​

​

(8) 安装软件包

bash 复制代码
# yum install openstack-cinder

​​

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

① 在 "DEFAULT" 和 "oslo_messaging_rabbit"部分,配置 "RabbitMQ" 消息队列访问

bash 复制代码
[DEFAULT]
...
rpc_backend = rabbit

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

②在 "DEFAULT" 和 "keystone_authtoken" 部分,配置认证服务访问

bash 复制代码
[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 地址

bash 复制代码
[DEFAULT]
...
my_ip = 192.168.204.210

④ 在 oslo_concurrency 部分,配置锁路径

bash 复制代码
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

⑤ 备份复制

​

​

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

bash 复制代码
# su -s /bin/sh -c "cinder-manage db sync" cinder

​​​​

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

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

bash 复制代码
[cinder]
os_region_name = RegionOne

​

​

(12)重启服务

①重启计算API 服务

bash 复制代码
# systemctl restart openstack-nova-api.service

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

bash 复制代码
# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

​

(13)登录系统

​

(14)已新增卷的模块
​

(15)查看卷​

(16)查看服务列表

bash 复制代码
# openstack service list

​

3. 安装并配置存储节点

(1)安装 LVM 包

bash 复制代码
# yum install lvm2

​​

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

bash 复制代码
# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service

​

(3)查看分区情况

bash 复制代码
# fdisk -l

(4)查看挂载情况

bash 复制代码
# df -Th

(5)创建LVM 物理卷

① 创建LVM 物理卷 /dev/sdc

bash 复制代码
# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created

② 创建LVM 物理卷 /dev/sdd

bash 复制代码
# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

③查看

bash 复制代码
# pvs

(7)创建 LVM 卷组

① 创建 LVM 卷组 cinder-ssd

bash 复制代码
# vgcreate cinder-ssd /dev/sdb
Volume group "cinder-ssd" successfully created

② 创建 LVM 卷组 cinder-data

bash 复制代码
# vgcreate cinder-ssd /dev/sdc
Volume group "cinder-data" successfully created

③ 查看

bash 复制代码
# vgs

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

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

bash 复制代码
devices {
...
filter = [ "a/sdb/", "a/sdc/","r/.*/"]

(9) 安装软件包

bash 复制代码
# yum install openstack-cinder targetcli python-keystone

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

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

bash 复制代码
[database]
...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

②在 "DEFAULT" 和 "oslo_messaging_rabbit"部分,配置 "RabbitMQ" 消息队列访问

bash 复制代码
[DEFAULT]
...
rpc_backend = rabbit

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

③ 在 "DEFAULT" 和 "keystone_authtoken" 部分,配置认证服务访问

bash 复制代码
[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 选项

bash 复制代码
[DEFAULT]
...
my_ip = 192.168.204.212

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

bash 复制代码
[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服务

bash 复制代码
[ssd]
...
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-data
iscsi_helper = lioadm
volume_backend_name = sata

⑦在 DEFAULT 部分,启用 LVM 后端

bash 复制代码
[DEFAULT]
...
enabled_backends = ssd,sata

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

bash 复制代码
[DEFAULT]
...
glance_api_servers = http://controller:9292

在 oslo_concurrency 部分,配置锁路径

bash 复制代码
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

⑨备份复制

(11)完成安装

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

bash 复制代码
# systemctl enable openstack-cinder-volume.service target.service
# systemctl start openstack-cinder-volume.service target.service

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

bash 复制代码
# openstack service list

4.使用LVM存储

(1)登录系统

(2)查看卷

(3)创建卷

(4)完成

(5)控制节点查看

bash 复制代码
# cinder list

(6)存储节点查看

bash 复制代码
# lvs

(7) 扩展卷

(8)修改为2G

(9)扩展中

(10)完成

(11)控制节点查看

bash 复制代码
# cinder list

(12)存储节点查看

bash 复制代码
# lvs

(13)删除卷

(14)查看

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

(16) 关联后端存储

(17)查看卷

(18)创建ssd类型卷

(19)创建中

(20)完成

(21)创建sata类型卷

(22) 创建中

(23)完成

(24)控制节点查看

bash 复制代码
# cinder list

(25)存储节点查看

bash 复制代码
# lvs
相关推荐
AI你一生一世2 分钟前
当“版权主张”不再需要人类:从 Luanti 被下架看自动化维权的工程化风险
运维·人工智能·自动化·开源软件·内容分发·自动化维权·版权主张
淡海水13 分钟前
07-06-源码-.NET Core GC的极致优化技术
unity·架构·c#·.netcore·gc·1024程序员节
企业解惑小助手16 分钟前
上网行为审计日志保存6个月怎么落地:从合规要求到存储架构
网络·架构·php
DengDongQi34 分钟前
Compose 单 Activity 架构实现指南
android·架构·composer
强哥聊算力1 小时前
《算力江湖·DeepSeek》第四集:DeepSeek如何改变中国算力的采购逻辑?
大数据·运维·人工智能·ai·gpu算力
李兆龙的博客1 小时前
从一到无穷大 #105:OpenAI Habitat II——多租户演进、全球读取优化与 CDC 平台
云计算·存储
承渊政道1 小时前
新增一台服务器时还要重新装Nginx?Ansible只改hosts目标列表,同一份Playbook继续执行
运维·nginx·ansible·内网穿透·cpolar
德迅云安全-上官1 小时前
服务器遭攻击如何快速响应?从技术原理到接入防御架构的实战指南
运维·服务器·架构
我命由我123452 小时前
6-2.Python 异常处理 - 异常捕获(捕获指定异常、常见异常类型、异常信息)
java·运维·开发语言·python·http·https·java-ee
super_Omni2 小时前
PDF/DOCX 解析为纯文本结构化字段关键词打分排序截断推给 HR
架构·开源软件