数据是分布到各个节点上去,不在是存储在一个节点
目前主流的方案是Openstack+Ceph的方案
主要功能是对象存储、块存储、文件系统
Ceph----Cinder ●块存储 为云主机提供数据盘
Ceph----Swift ●对象存储 是一个网络盘用来存储数据
Ceph----Glance ●存储镜像
Ceph----Nova ●存储云机主机
Ceph----文件系统 是将Ceph的存储划分给其他的服务使用,类似NFS、samba
Ceph是一个分布式集群系统,至少需要一个monitor和2个OSD守护进程
运行Ceph文件系统客户端还需要MS(Metadata server)
OSD是存储数据、处理数据的复制、回复、回填在均衡、并且通过其他检查其他的OSD的守护进程的心跳,向monitor提供一些监控信息
监视整个集群状态信息,当Ceph的集群为2个副本,至少需要2个OSD才能达到健康状态,同时还守护各种图表(OSD图、PG组、Crush图等等)
Ceph Manager Daemon,简称Ceph-mgr,该组件的主要作用是分担和扩展monitor的部分功能,减轻monitor的负担,更好的管理Ceph存储系统
1、控制节点(计算+网络)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:300G+1024G(充当CEPH块存储)
网卡:VM1-192.168.100.10 NAT-20.0.0.10
操作系统:Centos 7.5(1804)-最小化安装
2、计算节点1(计算)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:300G+1024G(充当CEPH块存储)
网卡:VM1-192.168.100.11
操作系统:Centos 7.5(1804)-最小化安装
3、计算节点2(计算)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:300G+1024G(充当CEPH块存储)
网卡:VM1-192.168.100.12
操作系统:Centos 7.5(1804)-最小化安装
部署CEPH之前,必须把和存储有关系数据清理干净
1、OpenStack安装了实例,必须删除----在控制台dashboard删除
2、OPenStack上产的镜像,必须删除----在控制台dashboard删除
3、OpenStack的cinder块,必须删除----在控制台dashboard删除
三个节点iptables 防火墙关闭
systemctl stop iptables
systemctl disable iptables
节点必须做免交互
主机名、hosts、关闭防火墙、hostname
1、三个节点、关闭防火墙
systemctl stop iptables
systemctl disable iptables
systemctl status iptables
2、三个节点安装Python-setuptools工具
yum -y install python-setuptools
3、在控制节点,创建ceph配置文件目录
mkdir -p /etc/ceph
4、在控制节点安装ceph-deploy
yum -y install ceph-deploy
5、在三个节点安装ceph软件
yum -y install ceph
6、创建三个mon
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy new ct c1 c2
more /etc/ceph/ceph.conf
7、初始化mon 并收集秘钥(三个节点)
进入控制节点/etc/ceph的目录
cd /etc/ceph
[root@ct ceph]# ceph-deploy mon create-initial
[root@ct ceph]# ll
total 160
-rw-------. 1 root root 113 Mar 11 06:00 ceph.bootstrap-mds.keyring
-rw-------. 1 root root 113 Mar 11 06:00 ceph.bootstrap-mgr.keyring
-rw-------. 1 root root 113 Mar 11 06:00 ceph.bootstrap-osd.keyring
-rw-------. 1 root root 113 Mar 11 06:00 ceph.bootstrap-rgw.keyring
-rw-------. 1 root root 151 Mar 11 06:00 ceph.client.admin.keyring
-rw-r--r--. 1 root root 231 Mar 11 05:59 ceph.conf
-rw-r--r--. 1 root root 81561 Mar 11 06:00 ceph-deploy-ceph.log
-rw-------. 1 root root 73 Mar 11 05:34 ceph.mon.keyring
-rw-r--r--. 1 root root 92 Jun 3 2019 rbdmap
8、创建OSD
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy osd create --data /dev/sdb ct
ceph-deploy osd create --data /dev/sdb c1
ceph-deploy osd create --data /dev/sdb c2
9、使用ceph-deploy下发配置文件和admin秘钥下发到ct c1 c2
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy admin ct c1 c2
10、给ct、c1、c2 每个节点的keyring增加读的权限
[root@ct ceph# chmod +x /etc/ceph/ceph.client.admin.keyring
[root@c1 ceph# chmod +x /etc/ceph/ceph.client.admin.keyring
[root@c2 ceph# chmod +x /etc/ceph/ceph.client.admin.keyring
11、查看ceph集群状态
ceph -s
ceph osd tree
12、创建mgr管理服务ll
进入控制节点/etc/ceph的目录
cd /etc/ceph
ceph-deploy mgr create ct c1 c2
ceph -s
13、创建三个与openstack对接的pool(volumes、vms、images)64是PG
ceph osd pool create volumes 64
ceph osd pool create vms 64
ceph osd pool create images 64
14、查看CEPH状态
ceph mon stat
ceph osd status
ceph osd lspools ###查看创建的pools池
1、查看CEPH状态 ##状态不要出现错误error
ceph -s
ceph mon stat
ceph osd status
ceph osd lspools
2、启用dashboard模块
ceph mgr module enable dashboard
3、创建https证书
ceph dashboard create-self-signed-cert
4、查看mgr服务
ceph mgr services
5、在浏览器中打开ceph网页
https://192.168.140.10:8443
6、设置账号密码
ceph dashboard set-login-credentials admin 123 ###admin是账号 123是密码这个可以改
1、控制节点创建client.cinder并设置权限
ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=volumes,allow rwx pool=vms,allow rx pool=images'
2、控制节点创建client.glance并设置权限
ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=images'
3、传送秘钥到对接的节点,因为glance自身就装在控制节点所以不需要发送到其他的节点
ceph auth get-or-create client.glance |tee /etc/ceph/ceph.client.glance.keyring
chown glance.glance /etc/ceph/ceph.client.glance.keyring
4、将client.cinder节点 因为这个默认也是安装在controller上 ,所以不需要传递到其他节点,如果在其他节点就执行第一条语句##
ceph auth get-or-create client.cinder | tee /etc/ceph/ceph.client.cinder.keyring
chown cinder.cinder /etc/ceph/ceph.client.cinder.keyring
5、同时也需要将client.cinder 传递到计算节点
由于计算节点需要将用户的client.cinder用户的密钥文件存储在libvirt中,所以需要执行如下操作
ceph auth get-key client.cinder |ssh c1 tee client.cinder.key
ceph auth get-key client.cinder |ssh c2 tee client.cinder.key
6、在运行nova-compute的计算节点讲临时密钥文件添加到libvirt 中然后删除
###############################
配置libvirt secret
KVM虚拟机需要使用librbd才可以访问ceph集群
Librbd访问ceph又需要账户认证
因此在这里,需要给libvirt设置账户信息
##########在C1,C2节点上操作的###############
⑴生成UUID
uuidgen
9776c7a2-5a4d-4b65-b7ed-2cbf96bb8ebd
⑵用如下内容创建一个秘钥文件确保使用上一步骤中生成唯一的UUID
cd /root
cat >secret.xml <
9776c7a2-5a4d-4b65-b7ed-2cbf96bb8ebd
client.cinder secret
EOF
⑶定义秘钥,并将其保存。后续步骤中使用这个秘钥
virsh secret-define --file secret.xml
⑷设置秘钥并删除临时文件。删除文件的步骤是选的的,步骤是保持系统的纯净。
virsh secret-set-value --secret 9776c7a2-5a4d-4b65-b7ed-2cbf96bb8ebd --base64 $(cat client.cinder.key) && rm -rf client.cinder.key secret.xml
###ct###
ceph osd pool application enable vms mon
ceph osd pool application enable images mon
ceph osd pool application enable volumes mon
登录到glance 所在的节点 然后修改
1、备份配置文件
cp /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak
2、修改对接配置文件
vi /etc/glance/glance-api.conf
[glance_store]
stores = rbd ###●2054行、存储的类型格式
default_store = rbd ###●2108行、修改默认的存储格式类型
#filesystem_store_datadir = /var/lib/glance/images/ ###●2442行、默认储存本地注销掉
rbd_store_chunk_size = 8 ###●2605行、去掉注释
rbd_store_pool = images ###●2626行、去掉注释
rbd_store_user = glance ###●2645行、去掉注释、指定glance用户,不知道可以查
rbd_store_ceph_conf = /etc/ceph/ceph.conf ###●2664行、去掉注释 指定CEPH的路径
####查找glance用户,对接上面#########
[root@ct ceph]# source /root/keystonerc_admin
[root@ct ceph(keystone_admin)]# openstack user list |grep glance
3、重启OpenStack-glance-api服务
systemctl restart openstack-glance-api
1、备份cinder.conf配置文件
cp /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
2、修改配置文件
vi /etc/cinder/cinder.conf
[DEFAULT]
enabled_backends = ceph ###●409行,更改为ceph
到某行
#[lvm]
#volume_backend_name=lvm
#volume_driver=cinder.volume.drivers.lvm.LVMVolumeDriver
#iscsi_ip_address=192.168.100.10
#iscsi_helper=lioadm
#volume_group=cinder-volumes
#volumes_dir=/var/lib/cinder/volumes
[ceph]
default_volume_type=ceph
glance_api_version = 2
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = cinder
rbd_secret_uuid = 4fe4a0ed-9ff8-481b-ad21-57a436d3853d ####这个uuid 写在自己的计算节点上的
3、重启cinder服务
[root@ct ~(keystone_admin)]# systemctl restart openstack-cinder-volume
systemctl status openstack-cinder-volume
4、查看cinder日志文件
tail -f /var/log/cinder/volume.log
5、查看cinder卷的类型有几个?
source /root/keystonerc_admin
cinder type-list
6.命令行创建cinder 的ceph存储后端相应的type
source /root/keystone_admin
cinder type-create ceph
cinder type-list
cinder type-key ceph set volume_backend_name=ceph ####设置后端的存储类型 volume_backend_name=ceph一定要顶格写不能有空格
1、备份配置文件(C1、C2节点)
cp /etc/nova/nova.conf /etc/nova/nova.conf.bak
2、修改配置文件(C1、C2节点)
vi /etc/nova/nova.conf 所有计算节点的配置文件
[libvirt]
images_type = rbd ####●7072行、去掉注释、修改类型RBD
images_rbd_pool = vms ####●7096行、去掉注释、改为VMS在CEPH中声明的
images_rbd_ceph_conf = /etc/ceph/ceph.conf ####●7099行、去掉注释、添加CEPH配置文件路径
rbd_user = cinder ####●7256行、去掉注释、添加cinder
rbd_secret_uuid =d90a58e3-bd22-489f-8720-28323a2e90e8 ####●7261行、去掉注释、添加UUID值
disk_cachemodes=“network=writeback” ####●6932行、去掉注释、添加"network=writeback"硬盘缓存模式
inject_password=false ####6421行、不用更改
inject_key=false ####6446行、不用更改
inject_partition=-2 ####6484行、不用更改
live_migration_flag=“VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED” ####●找到live_migration附近添加整行 是否启用热迁移
hw_disk_discard=unmap ####●7114行、去掉注释、添加unmap
3、安装Libvirt(C1、C2节点)
yum -y install libvirt
4、编辑计算节点(C1、C2节点)添加
vi /etc/ceph/ceph.conf
[client]
rbd cache=true
rbd cache writethrough until flush=true
admin socket = /var/run/ceph/guests/ c l u s t e r − cluster- cluster−type. i d . id. id.pid. c c t i d . a s o k l o g f i l e = / v a r / l o g / q e m u / q e m u − g u e s t − cctid.asok log file = /var/log/qemu/qemu-guest- cctid.asoklogfile=/var/log/qemu/qemu−guest−pid.log
rbd concurrent management ops = 20
mkdir -p /var/run/ceph/guests/ /var/log/qemu/
chown 777 -R /var/run/ceph/guests/ /var/log/qemu/
5、将控制节点的/ect/ceph/下的密钥
cd /etc/ceph
scp ceph.client.cinder.keyring root@c1:/etc/ceph
scp ceph.client.cinder.keyring root@c2:/etc/ceph
6、计算节点重启服务
systemctl restart libvirtd
systemctl enable libvirtd
systemctl restart openstack-nova-compute
接口down状态
解绝:看L3接口有没有挂(neutron agent-list)
如果:查看不了
就用:source keystonerc_admin
然后neutron agent-list
没有L3,L3挂掉了
重启L3:systemctl restart neutron-l3-agent