Cómo crear un clúster de almacenamiento Ceph en Ubuntu 16.04
Ceph es una de las tecnologías de almacenamiento de código abierto más interesantes de los últimos años. Los desarrolladores de Ceph, escalables a exabytes y ampliables a varios centros de datos, han facilitado a los administradores de sistemas y arquitectos de infraestructura la implementación de su software. Este artículo ofrecerá una guía paso a paso sobre cómo crear un clúster básico de Ceph stroage. Esto ha sido probado en Ubuntu 16.04. Tenga en cuenta que, a menos que se indique lo contrario, todos los comandos se ejecutan como root. También tenga en cuenta que cuando este documento menciona «todos los nodos Ceph», esto también incluye el nodo Admin.
Configuración general
En nuestro ejemplo, crearemos un clúster Ceph básico de tres nodos, cada uno con dos OSD. Usaremos la convención de nombre de host «Almacenamiento-X«, donde» x «es un número del 1 al 3, que se utiliza para referirse a nodos específicos. Usaremos una computadora externa (podría ser su propia computadora o computadora portátil) como el nodo de administración ceph.
Configuración de la red
Cada nodo estará en la misma red privada, con una puerta de enlace a través de la cual se puede acceder a Internet.
El nodo de administración también debe estar en la misma red, pero no es necesario que esté disponible para la red todo el tiempo. En consecuencia, su computadora de trabajo puede ser el nodo Admin y puede usar una VPN para conectarse a la red de los nodos Ceph.
Ceph usa los puertos TCP 6789 para los nodos de Ceph Monitor y los puertos 6800-7100 para los OSD de Ceph en la zona pública. Por ejemplo en iptables:
sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT
Preparar nodos
Cada nodo de almacenamiento debe estar sincronizado, por lo que instalaremos ntp en ellos y nos aseguraremos de que podamos acceder a ellos a través de SSH a través de la Red.
sudo apt install ntp ssh
Asegúrese de que el nombre de host de cada nodo de Ceph se pueda resolver desde todos los nodos de Ceph. En cada nodo Ceph, edite el archivo / etc / hosts y agregue lo siguiente:
[Admin Node IP Address] admin-node [Storage-1 IP Address] Storage-1 [Storage-2 IP Address] Storage-2 [Storage-3 IP Address] Storage-3
Sustituya la dirección IP de cada nodo en consecuencia.
Para probar si la resolución funciona, haga lo siguiente:
ping admin-node ping Storage-1 ping Storage-2 ping Storage-3
Asegúrese de que el admin-nodo El nombre de host se resuelve en la dirección IP de la red externa del nodo de administración, no en la dirección IP de bucle invertido (127.0.0.1).
En cada nodo de Ceph (es decir, el nodo de administración y todos los nodos de almacenamiento), agregaremos el repositorio de paquetes de Ceph Ubuntu a apt, luego actualizaremos la caché local con el contenido del nuevo repositorio:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add - echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list apt-get update
Crear un cefadmina usuario en todos los nodos Ceph. Este usuario se utilizará para instalar y administrar Ceph en todo el clúster de nodos, así que asegúrese de maximizar la seguridad de las credenciales de este usuario.
ssh-keygen -t rsa
useradd cephadmin
Configurar SSH sin contraseña
Los scripts y herramientas de instalación de Ceph desde el nodo Admin deberán poder acceder a todos los miembros del clúster sin contraseña.
En el nodo de administración, cambie al cefadmina usuario y cree una clave SSH:
Copie la clave ssh que generó en los tres nodos de almacenamiento:
ssh-copy-id Storage-1 ssh-copy-id Storage-2 ssh-copy-id Storage-3
Como usuario de cephadmin en su nodo de administración, pruebe si el ssh sin contraseña en los nodos de almacenamiento ahora funciona correctamente:
ssh Storage-1 ssh Storage-2 ssh Storage-3
Configurar sudo sin contraseña
Ahora que el acceso sin contraseña a través de SSH está configurado, configure sudo sin contraseña para el usuario de cephadmin en todos los nodos de Ceph:
visudo
Debería ver lo siguiente:
# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
Agregue la siguiente línea en la parte inferior:
cephadmin ALL=(ALL) NOPASSWD: ALL
Esto ahora debería permitir sudo sin contraseña para el cefadmina usuario en todos los nodos Ceph.
Instalar ceph-deploy
Ceph-deploy es una herramienta creada por los desarrolladores de Ceph para facilitar las implementaciones rápidas de los clústeres de Ceph mediante la secuencia de comandos de los pasos individuales necesarios para implementar un nodo. Aprovecharemos esto instalando la herramienta en nuestro nodo Admin.
apt install ceph-deploy
En el nodo Admin, cambie al cefadmina usuario que creamos en la Parte 1 del tutorial, cambie al directorio de inicio y cree un subdirectorio que se usará para contener todos los archivos necesarios para la implementación y administración de nuestro clúster Ceph:
su cephadmin cd mkdir my-first-ceph-cluster cd my-first-ceph-cluster
En este punto, todos los comandos de implementación a ejecutar deben realizarse solo desde dentro / home / cephadmin / my-first-ceph-cluster. Los comandos de administración también deben realizarse desde el mismo directorio.
Configuración Ceph
Asigne todos los nodos de almacenamiento como nodos de supervisión:
ceph-deploy new Storage-1 Storage-2 Storage-3
Dentro de su directorio de trabajo, ahora debería ver que los archivos han sido generados por ceph-deploy, incluidos los archivos de anillo de claves y el archivo de configuración de Ceph.
Agregue la siguiente línea al ceph.conf expediente:
osd pool default size = 2
Dado que solo tenemos dos OSD por nodo de almacenamiento en nuestro clúster, esto permitirá a Ceph estar satisfecho con tener solo una copia adicional de cada información que almacenamos en él.
Agregue la siguiente línea a ceph.conf también:
public network = {ip-address}/{netmask}
Donde reemplazará la parte de la red con los valores reales. Por ejemplo, si sus nodos de almacenamiento están en la red 192.168.1.0/24, ese debería ser el valor. No se confunda cuando menciona «red pública»; solo se refiere a una red externa al clúster Ceph. Las redes de replicación internas no están cubiertas por este tutorial.
Implementar Ceph
El software y los archivos de configuración ahora se instalarán y copiarán en Ceph Nodes.
ceph-deploy install admin-node Storage-1 Storage-2 Storage-3
Esto instalará todos los paquetes Ceph base en los nodos.
Instale y configure el software Ceph Monitor en los nodos de almacenamiento:
ceph-deploy mon create-initial
OSD de Ceph
Si bien es posible utilizar directorios como OSD, no se recomienda en una configuración de producción. Suponiendo que los OSD de Ceph que se utilizarán en cada uno de los nodos de almacenamiento / dev / sda y / dev / sdb, le pedimos a Ceph que prepare los discos para su uso.
ADVERTENCIA: El siguiente comando destruirá los datos existentes en los OSD especificados, por lo que se debe tener cuidado de que no haya errores al ejecutar el comando.
ceph-deploy osd prepare Storage-1:/dev/sda ceph-deploy osd prepare Storage-1:/dev/sdb ceph-deploy osd prepare Storage-2:/dev/sda ceph-deploy osd prepare Storage-2:/dev/sdb ceph-deploy osd prepare Storage-3:/dev/sda ceph-deploy osd prepare Storage-3:/dev/sdb
Si los comandos anteriores se ejecutan sin errores, entonces los OSD están listos y ahora podemos activarlos como un recurso en ejecución en el clúster:
ceph-deploy osd activate Storage-1:/dev/sda ceph-deploy osd activate Storage-1:/dev/sdb ceph-deploy osd activate Storage-2:/dev/sda ceph-deploy osd activate Storage-2:/dev/sdb ceph-deploy osd activate Storage-3:/dev/sda ceph-deploy osd activate Storage-3:/dev/sdb
Finalización
Copie los llaveros de administración en cada nodo de Ceph para que la administración de Ceph en cada nodo sea posible:
ceph-deploy admin admin-node Storage-1 Storage-2 Storage-3
Verifique el estado de todos los OSD en todos los nodos de almacenamiento:
ceph osd tree
Verifique el estado general de su clúster Ceph:
ceph health
Si obtienes un
HEALTH_OK
significa que el clúster está funcionando correctamente.
Si desea ver más estadísticas del clúster, el siguiente comando debería ser suficiente:
ceph status
Conclusión
Ahora tenemos un clúster Ceph de tres nodos en funcionamiento. Con esta configuración, el clúster puede perder un nodo, no incurrir en pérdida de datos y continuar atendiendo solicitudes. Los servicios de supervisión de alta disponibilidad también están disponibles en cada nodo de almacenamiento. Esta es una configuración de nivel de producción muy básica. Si desea obtener más información, diríjase al oficial Documentación ceph para informacion adicional.