Introducción
Linux continúa ingresando al espacio de computación escalable, especialmente al espacio de almacenamiento escalable. Ceph se ha unido recientemente a la impresionante lista de candidatos a sistemas de archivos en Linux. Es un sistema de archivos distribuido que se puede agregar manteniendo la compatibilidad POSIX. Con funciones de replicación y tolerancia a fallas, la
arquitectura del ecosistema Ceph se puede dividir en cuatro partes:
1. Clientes: Cliente (usuario de datos)
2. cmds: Clúster de servidores de metadatos, servidor de metadatos (almacenamiento en caché y sincronización de metadatos distribuidos)
3. Cosd: Objeto clúster de almacenamiento, clúster de almacenamiento de objetos (datos y metadatos como almacenamiento de objetos, realizar otras funciones clave)
4. cmon: monitores de clúster, monitor de clúster (ejecutar la función de monitoreo)
Preparación preliminar
Prepare dos máquinas virtuales Centos8, configure la dirección IP y el nombre de host, sincronice la hora del sistema, apague el firewall y selinux, modifique la dirección IP y la asignación de nombres de host y agregue un disco duro a cada máquina virtual
ip | nombre de host |
---|---|
192.168.29.148 | controlador |
192.168.29.149 | computadora |
Para configurar openstack, consulte: https://blog.51cto.com/14832653/2542863
Nota: si ha creado un clúster de openstack, primero debe eliminar la instancia, el espejo y el volumen e
instalar la fuente ceph
[root@controller ~]# yum install centos-release-ceph-octopus.noarch -y
[root@computer ~]# yum install centos-release-ceph-octopus.noarch -y
Instalar componentes ceph
[root@controller ~]# yum install cephadm -y
[root@computer ~]# yum install ceph -y
instalar libvirt en el nodo de la computadora
[root@computer ~]# yum install libvirt -y
Implementar clúster ceph
Crea un clúster
[root@controller ~]# mkdir -p /etc/ceph
[root@controller ~]# cd /etc/ceph/
[root@controller ceph]# cephadm boostrap --mon-ip 192.168.29.148
[root@controller ceph]# ceph status
[root@controller ceph]# cephadm install ceph-common
[root@controller ceph]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@computer
Cambio de configuracion
[root@controller ceph]# ceph config set mon public_network 192.168.29.0/24
Agregar anfitrión
[root@controller ceph]# ceph orch host add computer
[root@controller ceph]# ceph orch host ls
Inicializar la supervisión del clúster
[root@controller ceph]# ceph orch host label add controller mon
[root@controller ceph]# ceph orch host label add computer mon
[root@controller ceph]# ceph orch apply mon label:mon
[root@controller ceph]# ceph orch daemon add mon computer:192.168.29.149
Crear OSD
[root@controller ceph]# ceph orch daemon add osd controller:/dev/nvme0n2
[root@controller ceph]# ceph orch daemon add osd computer:/dev/nvme0n3
Ver el estado del clúster
[root@controller ceph]# ceph -s
Ver la capacidad del clúster
[root@controller ceph]# ceph df
Crear grupo
[root@controller ceph]# ceph osd pool create volumes 64
[root@controller ceph]# ceph osd pool create vms 64
#设置自启动
[root@controller ceph]# ceph osd pool application enable vms mon
[root@controller ceph]# ceph osd pool application enable volumes mon
Ver el estado de mon, osd, pool
[root@controller ceph]# ceph mon stat
[root@controller ceph]# ceph osd status
[root@controller ceph]# ceph osd lspools
Compruebe la situación de la piscina
[root@controller ~]# rbd ls vms
[root@controller ~]# rbd ls volumes
Clúster ceph y acoplamiento openstack
Crea cenizas y establece permisos
[root@controller ceph]# 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'
Establecer clave
[root@controller ceph]# ceph auth get-or-create client.cinder | tee /etc/ceph/ceph.client.cinder.keyring
#传送密钥到computer
[root@controller ~]# ceph auth get-key client.cinder > client.cinder.key
[root@controller ~]# scp client.cinder.key computer:/root/
#修改权限
[root@controller ceph]# chown cinder.cinder /etc/ceph/ceph.client.cinder.keyring
Establecer clave
#computer生成uuid
[root@computer ~]#uuidgen
1fad1f90-63fb-4c15-bfc3-366c6559c1fe
#创建密钥文件
[root@computer ~]# vi secret.xml
<secret ephemeral='no' private='no'>
<uuid>1fad1f90-63fb-4c15-bfc3-366c6559c1fe </uuid>
<usage type='ceph'>
<name>client.cinder secret</name>
</usage>
</secret>
#定义密钥
virsh secret-define --file secret.xml
#设置密钥
virsh secret-set-value --secret 1fad1f90-63fb-4c15-bfc3-366c6559c1fe --base64 $(cat client.cinder.key) && rm -rf client.cinder.key secret.xml
Configurar el módulo de ceniza de acoplamiento
Modificar el archivo de configuración
[root@controller ~]# vi /etc/cinder/cinder.conf
[default]
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.29.148
enabled_backends = ceph
[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
#对应computer创建的uuid
rbd_secret_uuid = 1fad1f90-63fb-4c15-bfc3-366c6559c1fe
Sincronizar la base de datos
#若已经有数据库,对数据库进行删除并重新创建和同步
[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder
Reiniciar servicio
[root@controller ~]# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service openstack-cinder-volume.service
Establecer el tipo y el tipo de almacenamiento de cefalorraquídeo
[root@controller ~]# source admin-openrc
[root@controller ~]# cinder type-create ceph
[root@controller ~]# cinder type-key ceph set volume_backend_name=ceph
Acoplamiento del módulo nova-compute
Archivo de configuración de modificación de nodo de computadora
[root@computer ~]# vi /etc.nova/nova.conf
[libvirt]
virt_type = qemu
inject_password = true
inject_partition = -1
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = 1fad1f90-63fb-4c15-bfc3-366c6559c1fe
disk_cachemodes = "network=writeback"
live_migration_flag = "VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
hw_disk_discard = unmap
[root@computer ~]# vi /etc/ceph/ceph.conf
[client]
rbd cache=true
rbd cache writethrough until flush=true
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
log file = /var/log/qemu/qemu-guest-$pid.log
rbd concurrent management ops = 20
Crear directorio de registros
[root@computer ~]# mkdir -p /var/run/ceph/guests/ /var/log/qemu/
[root@computer ~]# chown 777 -R /var/run/ceph/guests/ /var/log/qemu/
El controlador emite llaves
[root@controller ~]# cd /etc/ceph
[root@controller ~]# scp ceph.client.cinder.keyring root@computer:/etc/ceph
Reiniciar servicio
[root@computer ~]# systemctl stop libvirtd openstack-nova-compute
[root@computer ~]# systemctl start libvirtd openstack-nova-compute