GNU/Linux >> Tutoriales Linux >  >> Linux

Encontrar contenidos de aplicaciones OCP de bloques y archivos en ODF:la infraestructura

Red Hat OpenShift Data Foundation, anteriormente Red Hat OpenShift Container Storage, es un almacenamiento definido por software para contenedores. Diseñado como la plataforma de servicios de datos y almacenamiento para Red Hat OpenShift, Red Hat OpenShift Data Foundation (ODF) ayuda a los equipos a desarrollar e implementar aplicaciones de manera rápida y eficiente en las nubes. Es una solución poderosa que permite el almacenamiento de bloques, archivos y objetos.

Para aquellos que están acostumbrados a una solución de almacenamiento tradicional, quizás una pregunta que surge es cómo un usuario puede mapear dónde se almacenan los objetos de una aplicación dentro del clúster ODF, ya que el concepto de almacenamiento distribuido y escalable que trae ODF presenta diferencias considerables con otros. soluciones En este artículo, explora cómo se puede hacer este mapeo para escenarios de resolución de problemas.

Tengo mucho terreno que cubrir con este tema, por lo que el contenido se divide en tres artículos. El primer artículo (este) prepara el escenario al definir el entorno y los componentes necesarios. La segunda parte cubre la información de almacenamiento de bloques y la tercera parte se ocupa de la asignación de almacenamiento de archivos.

La infraestructura

Para mantener la practicidad de este artículo, no entraré en detalles sobre la arquitectura del clúster OpenShift Container Platform (OCP) u otra información irrelevante para la actividad. Solo sepa que estoy usando un clúster OCP en AWS con una implementación interna de clúster ODF en tres trabajadores separados en diferentes zonas de disponibilidad con un conjunto de dispositivos de 500 GB cada uno (1,5 TB en total). Estas son las versiones que están usando tanto OCP como ODF:

[alexon@bastion ~]$ oc version
Client Version: 4.7.4
Server Version: 4.7.11
Kubernetes Version: v1.20.0+75370d3

[alexon@bastion ~]$ oc -n openshift-storage get csv

NAME DISPLAY VERSION REPLACES PHASE
elasticsearch-operator.5.0.3-6 OpenShift Elasticsearch Operator 5.0.3-6  
elasticsearch-operator.4.6.0-202103010126.p0 Succeeded
ocs-operator.v4.7.0 OpenShift Container Storage 4.7.0 ocs-operator.v4.6.4 Succeeded

[alexon@bastion ~]$ oc get nodes -l cluster.ocs.openshift.io/openshift-storage=

NAME STATUS ROLES   
AGE VERSION
ip-10-0-143-192.ec2.internal Ready   
worker 6d23h v1.20.0+75370d3
ip-10-0-154-20.ec2.internal Ready   
worker 6d23h v1.20.0+75370d3
ip-10-0-171-63.ec2.internal Ready   
worker 6d23h v1.20.0+75370d3

Ahora, para poder hacer el análisis necesario en su almacenamiento de backend de archivos y bloques ODF, que en este caso es Ceph, necesita una herramienta específica. Esta herramienta es la caja de herramientas Rook, un contenedor con herramientas comunes que se utilizan para depurar y probar torres. Está disponible en el repositorio oficial de GitHub de Rook, y puedes leer más al respecto aquí.

Uso de la caja de herramientas

La primera tarea es usar la especificación de la caja de herramientas para ejecutar el módulo de la caja de herramientas en un modo interactivo que está disponible en el enlace proporcionado arriba, o descargarlo directamente desde este enlace.

Guárdelo como un archivo YAML, luego inicie rook-ceph-tools vaina:

[alexon@bastion ~]$ oc apply -f toolbox.yml -n openshift-storage

Como puede ver a continuación, mi pila ODF funciona sin problemas en mi almacenamiento openshift proyecto. Tengo las clases de almacenamiento adecuadas configuradas, con ocs-storagecluster-ceph-rbd siendo el SC por defecto. Además, ya tengo las rook-ceph-tools pod desplegado y ejecutándose:

[alexon@bastion ~]$ oc project openshift-storage
Now using project "openshift-storage" on server "https://api.example.com:6443":
[alexon@bastion ~]$ oc get pods

NAME                                                             
READY STATUS RESTARTS  
AGE
csi-cephfsplugin-c86r8                                           
3/3 Running 0         
3h13m
csi-cephfsplugin-lk8cq                                           
3/3 Running 0         
3h14m
csi-cephfsplugin-pqhrh  
                                         3/3 Running  
0 3h13m
csi-cephfsplugin-provisioner-6878df594-8547z 6/6 Running  
0 3h14m
csi-cephfsplugin-provisioner-6878df594-bl7hn 6/6 Running  
0 3h14m
csi-rbdplugin-ff4hz                                              
3/3 Running 0         
3h13m
csi-rbdplugin-m2cf7 3/3 Running  
0 3h13m
csi-rbdplugin-provisioner-85f54d8949-h47td 6/6 Running  
0 3h14m
csi-rbdplugin-provisioner-85f54d8949-mstpp 6/6 Running  
0 3h14m
csi-rbdplugin-t8tpg                                              
3/3 Running 0         
3h14m
noobaa-core-0 1/1 Running  
0 3h11m
noobaa-db-pg-0                                                   
1/1 Running 0         
3h14m
noobaa-endpoint-75644c884-rv7zn 1/1 Running  
0 3h10m
noobaa-operator-5b4ccb78d6-lz66m 1/1 Running  
0 3h14m
ocs-metrics-exporter-db8d78475-ch2mk 1/1 Running  
0 3h14m
ocs-operator-776b95f74b-mzmwq 1/1    
Running 0 3h14m
rook-ceph-crashcollector-ip-10-0-143-192-59fc4bff5b-22sv4 1/1    
Running 0 3h12m
rook-ceph-crashcollector-ip-10-0-154-20-65d656dbb4-4q6xk 1/1 Running  
0 3h13m
rook-ceph-crashcollector-ip-10-0-171-63-74f8554574-f99br 1/1 Running  
0 3h13m
rook-ceph-mds-ocs-storagecluster-cephfilesystem-a-b89f56667z5fj 2/2    
Running 0 3h12m
rook-ceph-mds-ocs-storagecluster-cephfilesystem-b-558f8bbct2lrv 2/2    
Running 0 3h12m
rook-ceph-mgr-a-6d54bfd95d-7xdwp 2/2 Running  
0 3h11m
rook-ceph-mon-a-67fc544d5f-f7ghz 2/2 Running  
0 3h13m
rook-ceph-mon-b-6c6b9565d7-cbgqz 2/2 Running  
0 3h11m
rook-ceph-mon-c-6c44cb9765-9h828 2/2 Running  
0 3h13m
rook-ceph-operator-58c6f9696b-b2qnm 1/1 Running  
0 3h14m
rook-ceph-osd-0-66cfd8cd5f-dgvpp 2/2 Running  
0 3h10m
rook-ceph-osd-1-5c75dbffdd-qg8gs 2/2 Running  
0 3h9m
rook-ceph-osd-2-7c555c7578-jq8sz 2/2 Running  
0 3h8m
rook-ceph-tools-78cdfd976c-b6wk7 1/1 Running  
0 179m

[alexon@bastion ~]$ oc get sc

NAME                                   
PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
gp2                                    
kubernetes.io/aws-ebs                  
Delete         
WaitForFirstConsumer true 6d22h
gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 6d22h
ocs-storagecluster-ceph-rbd (default) openshift-storage.rbd.csi.ceph.com Delete Immediate true 6d2h
ocs-storagecluster-cephfs              
openshift-storage.cephfs.csi.ceph.com  
Delete Immediate true 6d2h
openshift-storage.noobaa.io            
openshift-storage.noobaa.io/obc        
Delete Immediate false 6d2h

Ingrese a su caja de herramientas para recopilar más información sobre su clúster de almacenamiento:

[alexon@bastion ~]$ toolbox=$(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name)
[alexon@bastion ~]$ oc rsh -n openshift-storage $toolbox

Ejecute los comandos conocidos para administrar un clúster de Ceph para verificar información sobre su clúster ODF:

sh-4.4$ ceph -s

  cluster:
    id: ef49037e-1257-462c-b8da-053f6a9ce9b2
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum a,b,c (age 3h)
    mgr: a(active, since 3h)
    mds: ocs-storagecluster-cephfilesystem:1 {0=ocs-storagecluster-cephfilesystem-a=up:active} 1 up:standby-replay
    osd: 3 osds: 3 up (since 3h), 3 in (since 6d)
 
  task status:
    scrub status:
       
mds.ocs-storagecluster-cephfilesystem-a: idle
       
mds.ocs-storagecluster-cephfilesystem-b: idle
 
  data:
    pools: 3 pools, 96 pgs
    objects: 22.28k objects, 85 GiB
    usage: 254 GiB used, 1.3 TiB / 1.5 TiB avail
    pgs: 96 active+clean
 
  io:
    client: 853 B/s rd, 2.1 MiB/s wr, 1 op/s rd, 171 op/s wr
 
sh-4.4$ ceph df

RAW STORAGE:
    CLASS SIZE       
AVAIL USED RAW USED %RAW USED 
    ssd 1.5 TiB 1.3 TiB    
251 GiB 254 GiB 16.54 
    TOTAL 1.5 TiB    
1.3 TiB 251 GiB 254 GiB 16.54 
 
POOLS:
    POOL                                          
ID STORED OBJECTS USED       
%USED MAX AVAIL 
   
ocs-storagecluster-cephblockpool 1 84 GiB 22.25k    
251 GiB 19.27 351 GiB 
   
ocs-storagecluster-cephfilesystem-metadata 2    
1.4 MiB 25 4.2 MiB 0      
351 GiB 
   
ocs-storagecluster-cephfilesystem-data0 3 0 B 0 0 B 0      
351 GiB 

sh-4.4$ ceph osd status

+----+------------------------------+-------+-------+--------+---------+--------+---------+-----------+
| id |            
host | used | avail | wr ops | wr data | rd ops | rd data | state |
+----+------------------------------+-------+-------+--------+---------+--------+---------+-----------+
| 0 | ip-10-0-171-63.ec2.internal | 84.6G | 427G | 87 | 947k 
| 0 |    
0 | exists,up |
| 1 | ip-10-0-143-192.ec2.internal | 84.6G | 
427G | 61 |  
510k | 0  
| 0 | exists,up |
| 2 | ip-10-0-154-20.ec2.internal | 84.6G | 427G | 96  
| 1072k |   
2 | 106  
| exists,up |
+----+------------------------------+-------+-------+--------+---------+--------+---------+-----------+

sh-4.4$ ceph osd tree

ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF 
 -1 1.50000 root default                                                                
 -5 1.50000 region us-east-1                                                        
 -4 0.50000 zone us-east-1a                                                     
 -3 0.50000 host ocs-deviceset-gp2-csi-1-data-085b8h                         
  1 ssd 0.50000 osd.1 up 1.00000 1.00000 
-10 0.50000 zone us-east-1b                                                     
 -9 0.50000 host ocs-deviceset-gp2-csi-2-data-0n9lkb                         
  2 ssd 0.50000 osd.2 up 1.00000 1.00000 
-14      
0.50000 zone us-east-1c                                                     
-13      
0.50000 host ocs-deviceset-gp2-csi-0-data-0gvt22                         
  0 ssd 0.50000 osd.0 up 1.00000 1.00000 

sh-4.4$ rados df

POOL_NAME USED OBJECTS 
CLONES COPIES MISSING_ON_PRIMARY UNFOUND 
DEGRADED RD_OPS RD   
WR_OPS WR USED COMPR 
UNDER COMPR
ocs-storagecluster-cephblockpool 251 GiB 22266      
0 66798 0 0 0 
475905 34 GiB 37496563 
634 GiB 0 B 0 B
ocs-storagecluster-cephfilesystem-data0 0 B 0      
0 0 0 0 0     
30 14 KiB 42  
24 KiB 0 B 0 B
ocs-storagecluster-cephfilesystem-metadata 4.2 MiB      
25 0 75 0       
0 0 142734 
78 MiB 706 1.7 MiB 0 B 0 B

total_objects   
22291
total_used 254 GiB
total_avail 1.3 TiB
total_space 1.5 TiB

sh-4.4$ ceph fs status

ocs-storagecluster-cephfilesystem - 0 clients
=================================
+------+----------------+-------------------------------------+---------------+-------+-------+
| Rank |    
State | MDS | Activity  
| dns | inos |
+------+----------------+-------------------------------------+---------------+-------+-------+
| 0 |    
active | ocs-storagecluster-cephfilesystem-a | Reqs:   
0 /s | 59 |  
32 |
| 0-s | standby-replay | ocs-storagecluster-cephfilesystem-b | Evts: 0 /s |  
68 | 24 |
+------+----------------+-------------------------------------+---------------+-------+-------+
+--------------------------------------------+----------+-------+-------+
|                   
Pool |  
type | used | avail |
+--------------------------------------------+----------+-------+-------+
| ocs-storagecluster-cephfilesystem-metadata | metadata | 4260k | 350G |
| 
ocs-storagecluster-cephfilesystem-data0  
| data | 0 | 350G |
+--------------------------------------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
+-------------+
MDS version: ceph version 14.2.11-147.el8cp (1f54d52f20d93c1b91f1ec6af4c67a4b81402800) nautilus (stable)

sh-4.4$ ceph fs volume ls

[
    {
       
"name": "ocs-storagecluster-cephfilesystem"
    }
]

Como puede ver arriba, el ocs-storagecluster-cephblockpool y el ocs-storagecluster-cephfilesystem-data0 los grupos se crean de forma predeterminada. El primero lo usa RBD para el almacenamiento de bloques y el segundo lo usa CephFS para el almacenamiento de archivos. Tenga esto en cuenta, ya que estos son los grupos que utilizará en sus investigaciones.

[ ¿Empezando con los contenedores? Consulta este curso gratuito. Implementación de aplicaciones en contenedores:descripción técnica general. ]

Resumir

Aquí, en la primera parte, definí el problema de mapear objetos de aplicación dentro de un clúster ODF. Cubrí el contenedor de la caja de herramientas Rook y las herramientas comunes de depuración y prueba que contiene. También establecí la infraestructura que usará en los próximos dos artículos de la serie. Desde aquí, vaya al artículo dos para conocer la cobertura del almacenamiento de bloques de mapeo dentro del clúster ODF. Después de eso, lea la tercera parte para la asignación de almacenamiento de archivos y un resumen del proyecto.


Linux
  1. ¿El método más eficiente para vaciar el contenido de un archivo?

  2. ¿La diferencia entre enlaces simbólicos y duros?

  3. ¿Redireccionamiento de Io y el comando principal?

  4. lsinitramfs:enumera el contenido del sistema de archivos initrd.

  5. Copie el contenido del archivo al portapapeles en la terminal de Linux

Cómo usar Sudo y el archivo Sudoers

Cómo guardar un archivo en Vim/Vi y salir del editor

Cómo ver el contenido de un archivo o archivo comprimido en Linux

Búsqueda de contenidos de aplicaciones OCP de bloques y archivos en ODF:Creación de un proyecto de almacenamiento de archivos

Ver el contenido de un archivo en la línea de comandos de Linux

Ver el contenido del disco duro en binario