Ceph es una plataforma de almacenamiento de código abierto que proporciona alto rendimiento, confiabilidad y escalabilidad. Es un sistema de almacenamiento distribuido gratuito que proporciona una interfaz para el almacenamiento a nivel de objetos, bloques y archivos y puede operar sin un solo punto de falla.
En este tutorial, lo guiaré para instalar y crear un clúster de Ceph en el servidor Ubuntu 16.04. Un clúster de Ceph consta de estos componentes:
- Ceph OSD (ceph-osd) - Maneja el almacenamiento de datos, la replicación de datos y la recuperación. Un clúster de Ceph necesita al menos dos servidores Ceph OSD. Usaremos tres servidores Ubuntu 16.04 en esta configuración.
- Monitor cefalométrico (ceph-mon) - Supervisa el estado del clúster y ejecuta el mapa OSD y el mapa CRUSH. Usaremos un servidor aquí.
- Servidor de metadatos de Ceph (ceph-mds) - esto es necesario si desea utilizar Ceph como sistema de archivos.
Requisitos previos
- 6 nodos de servidor con servidor Ubuntu 16.04 instalado
- Privilegios de raíz en todos los nodos
Usaré la siguiente configuración de IP/nombre de host:
nombre de host dirección IP
Ceph-Admin 10.0.15.10
Mon1 10.0.15.11
OSD1 10.0.15.21
OSD2 10.0.15.22
OSD3 10.0.15.23
cliente 10.0.15.15
Paso 1:configurar todos los nodos
En este paso, configuraremos los 6 nodos para prepararlos para la instalación del software Ceph Cluster. Por lo tanto, debe seguir y ejecutar los siguientes comandos en todos los nodos. Y asegúrese de que el servidor ssh esté instalado en todos los nodos.
Crear el usuario de Ceph
Cree un nuevo usuario llamado 'cephuser ' en todos los nodos.
useradd -m -s /bin/bash cephuser
passwd cephuser
Después de crear el nuevo usuario, debemos configurar cephuser para privilegios sudo sin contraseña. Esto significa que 'cephuser' puede ejecutarse y obtener privilegios de sudo sin tener que ingresar una contraseña primero.
Ejecute los siguientes comandos para lograrlo.
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
Instalar y configurar NTP
Instale NTP para sincronizar la fecha y la hora en todos los nodos. Ejecute el comando ntpdate para configurar la fecha y la hora a través de NTP. Usaremos los servidores NTP del grupo de EE. UU. Luego inicie y habilite el servidor NTP para que se ejecute en el momento del arranque.
sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp
Instalar Open-vm-tools
Si ejecuta todos los nodos dentro de VMware, debe instalar esta utilidad de virtualización.
sudo apt-get install -y open-vm-tools
Instala Python y parte
En este tutorial, necesitamos paquetes de python para construir el clúster ceph. Instale python y python-pip.
sudo apt-get install -y python python-pip parted
Configurar el archivo de hosts
Edite el archivo de hosts en todos los nodos con el editor vim.
vim /etc/hosts
Pegue la configuración a continuación:
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 ceph-osd1
10.0.15.22 ceph-osd2
10.0.15.23 ceph-osd3
10.0.15.15 ceph-client
Guarde el archivo de hosts y salga del editor vim.
Ahora puede intentar hacer ping entre los nombres de host del servidor para probar la conectividad de la red.
ping -c 5 mon1
Paso 2:configurar el servidor SSH
En este paso, configuraremos el nodo ceph-admin . El nodo de administración se utiliza para configurar el nodo de monitor y los nodos de osd. Inicie sesión en el nodo ceph-admin y acceda al 'cephuser '.
ssh [email protected]
su - cephuser
El nodo de administración se utiliza para instalar y configurar todos los nodos del clúster, por lo que el usuario del nodo ceph-admin debe tener privilegios para conectarse a todos los nodos sin contraseña. Necesitamos configurar el acceso SSH sin contraseña para 'cephuser' en el nodo 'ceph-admin'.
Genere las claves ssh para 'cephuser '.
ssh-keygen
Deje la frase de contraseña en blanco/vacía.
A continuación, cree un archivo de configuración para la configuración de ssh.
vim ~/.ssh/config
Pegue la configuración a continuación:
Host ceph-admin
Hostname ceph-admin
User cephuser
Host mon1
Hostname mon1
User cephuser
Host ceph-osd1
Hostname ceph-osd1
User cephuser
Host ceph-osd2
Hostname ceph-osd2
User cephuser
Host ceph-osd3
Hostname ceph-osd3
User cephuser
Host ceph-client
Hostname ceph-client
User cephuser
Guarde el archivo y salga de vim.
Cambie el permiso del archivo de configuración a 644.
chmod 644 ~/.ssh/config
Ahora agregue la clave a todos los nodos con el comando ssh-copy-id.
ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id ceph-osd3
ssh-copy-id mon1
Escriba su contraseña de usuario cephuser cuando se le solicite.
Ahora intente acceder al servidor osd1 desde el nodo ceph-admin para comprobar si funciona el inicio de sesión sin contraseña.
ssh ceph-osd1
Paso 3:configurar el firewall de Ubuntu
Por razones de seguridad, debemos activar el firewall en los servidores. Preferiblemente usamos Ufw (Uncomplicated Firewall), el firewall predeterminado de Ubuntu, para proteger el sistema. En este paso, habilitaremos ufw en todos los nodos y luego abriremos los puertos necesarios para ceph-admin, ceph-mon y ceph-osd.
Inicie sesión en el nodo ceph-admin e instale los paquetes ufw.
ssh [email protected]
sudo apt-get install -y ufw
Abra el puerto 80, 2003 y 4505-4506, luego vuelva a cargar firewalld.
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp
Inicie y habilite ufw para que se inicie en el momento del arranque.
sudo ufw enable
Desde el nodo ceph-admin, inicie sesión en el nodo del monitor 'mon1' e instale ufw.
ssh mon1
sudo apt-get install -y ufw
Abra los puertos para el nodo del monitor ceph e inicie ufw.
sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable
Finalmente, abra estos puertos en cada nodo osd:ceph-osd1, ceph-osd2 y ceph-osd3 - puerto 6800-7300.
Inicie sesión en cada uno de los nodos ceph-osd desde ceph-admin e instale ufw.
ssh ceph-osd1
sudo apt-get install -y ufw
Abra los puertos en los nodos osd y vuelva a cargar firewalld.
sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable
La configuración del cortafuegos ufw ha finalizado.
Paso 4:configurar los nodos Ceph OSD
En este tutorial, tenemos 3 nodos OSD, cada uno de estos nodos tiene dos particiones de disco duro.
- /dev/sda para partición raíz
- /dev/sdb es una partición vacía:20 GB
Usaremos /dev/sdb para el disco cefalométrico. Desde el nodo ceph-admin, inicie sesión en todos los nodos OSD y formatee la partición /dev/sdb con XFS sistema de archivos.
ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3
Verifique el esquema de partición con el comando fdisk.
sudo fdisk -l /dev/sdb
Formatee la partición /dev/sdb con un sistema de archivos XFS y con una tabla de particiones GPT usando el comando parted.
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
A continuación, formatee la partición en formato XFS con el comando mkfs.
sudo mkfs.xfs -f /dev/sdb
Ahora comprueba la partición y verás una partición XFS /dev/sdb.
sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb
Paso 5:compilar el clúster de Ceph
En este paso, instalaremos Ceph en todos los nodos desde ceph-admin. Para comenzar, inicie sesión en el nodo ceph-admin.
ssh [email protected]
su - cephuser
Instalar ceph-deploy en el nodo ceph-admin
En el primer paso ya instalamos python y python-pip en el sistema. Ahora necesitamos instalar la herramienta de implementación de Ceph 'ceph-deploy ' del repositorio pypi python.
Instale ceph-deploy en el nodo ceph-admin con el comando pip.
sudo pip install ceph-deploy
Nota:asegúrese de que todos los nodos estén actualizados.
Una vez instalada la herramienta ceph-deploy, cree un nuevo directorio para la configuración del clúster de Ceph.
Crear un nuevo clúster
Cree un nuevo directorio de clúster.
mkdir cluster
cd cluster/
A continuación, cree un nuevo clúster con 'ceph-deploy ' definiendo el nodo de monitor 'mon1 '.
ceph-deploy new mon1
El comando generará el archivo de configuración del clúster de Ceph 'ceph.conf' en el directorio del clúster.
Edite el archivo ceph.conf con vim.
vim ceph.conf
Debajo del bloque [global], pegue la configuración a continuación.
# Your network address
public network = 10.0.15.0/24
osd pool default size = 2
Guarde el archivo y salga del editor.
Instalar Ceph en todos los nodos
Ahora instale Ceph en todos los nodos desde el nodo ceph-admin con un solo comando.
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1
El comando instalará automáticamente Ceph en todos los nodos:mon1, osd1-3 y ceph-admin. La instalación llevará algún tiempo.
Ahora implemente el nodo del monitor en el nodo mon1.
ceph-deploy mon create-initial
El comando creará una clave de monitor, verifique la clave con este comando ceph.
ceph-deploy gatherkeys mon1
Agregar OSDS al clúster
Después de instalar Ceph en todos los nodos, ahora podemos agregar los demonios OSD al clúster. OSD Daemons creará la partición de datos y diario en el disco /dev/sdb.
Compruebe el disco /dev/sdb disponible en todos los nodos osd.
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
Verá /dev/sdb con el formato XFS que creamos antes.
A continuación, elimine las tablas de partición en todos los nodos con la opción zap.
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
El comando eliminará todos los datos en /dev/sdb en los nodos Ceph OSD.
Ahora prepare todos los nodos OSD y asegúrese de que no haya errores en los resultados.
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
Cuando vea que ceph-osd1-3 está listo para su uso en OSD en el resultado, entonces el comando fue exitoso.
Active los OSD con el siguiente comando:
ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
Ahora puede volver a comprobar el disco sdb en los nodos OSDS.
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
El resultado es que /dev/sdb ahora tiene dos particiones:
- /dev/sdb1 - Datos cefalométricos
- /dev/sdb2 - Diario cefalométrico
O lo comprueba directamente en el nodo OSD.
ssh ceph-osd1
sudo fdisk -l /dev/sdb
A continuación, implemente la clave de administración en todos los nodos asociados.
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3
Cambie el permiso del archivo clave ejecutando el siguiente comando en todos los nodos.
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
Se ha creado Ceph Cluster en Ubuntu 16.04.
Paso 6:prueba de Ceph
En el paso 4, instalamos y creamos un nuevo clúster de Ceph y agregamos nodos OSDS al clúster. Ahora deberíamos probar el clúster para asegurarnos de que funciona según lo previsto.
Desde el nodo ceph-admin, inicie sesión en el servidor de supervisión de Ceph 'mon1 '.
ssh mon1
Ejecute el siguiente comando para comprobar el estado del clúster.
sudo ceph health
Ahora compruebe el estado del clúster.
sudo ceph -s
Puede ver los resultados a continuación:
Asegúrese de que el estado de Ceph esté bien. y hay un nodo de monitor 'mon1 ' con dirección IP '10.0.15.11 '. Hay 3 OSD servidores y todos están activos y funcionando, y debería haber un espacio disponible en disco de 45 GB - 3 particiones OSD de datos Ceph de 15 GB.
Creamos un nuevo clúster de Ceph en Ubuntu 16.04 con éxito.