Serie de almacenamiento distribuido Ceph (2): método ceph-deploy para implementar un clúster ceph de tres nodos

Para continuar con lo anterior: Serie de almacenamiento distribuido de Ceph (1): principio de funcionamiento y análisis de la arquitectura de Ceph. Antes,
ceph se implementaba usando Deepsea y ceph-deploy no se ha usado durante mucho tiempo. Esta vez, repasemos y resumamos por cierto. !

Prefacio:

    Ceph notifica oficialmente que el método de implementación ceph-deploy ya no se mantiene. No se ha probado en versiones posteriores a Nautilus (v14.x) y no admite la ejecución en versiones de la serie centos8. Sin embargo, aún podemos usarlo. Está en versiones centos7 y 6.
Para más detalles, puede ver la descripción oficial
Declaración oficial: https://docs.ceph.com/en/latest/install/

ceph-deploy es una herramienta para implementar clústeres rápidamente.
Importante: ceph-deploy ya no se mantiene activamente. No se ha probado en versiones de Ceph más recientes que Nautilus. No es compatible con RHEL8, CentOS 8 ni sistemas operativos más nuevos.

1. Preparación para el despliegue

La versión Ceph utilizada esta vez:

  • Ceph: Nautilus (14.2.9)
  • Implementación de Ceph: 2.0.1

Información del nodo para esta prueba:

dirección IP nombre de la CPU Disco adicional (OSD) rol del cluster
192.168.56.125 ceph-nodo1 Un disco de 10G (/dev/sdb) mon, mgr, osd0 (nodo maestro)
192.168.56.126 ceph-nodo2 Un disco de 10G (/dev/sdb) osd1
192.168.56.127 ceph-nodo3 Un disco de 10G (/dev/sdb) osd2

Si el entorno lo permite, puede utilizar un nodo ceph-admin para colocar específicamente estos componentes como mon, mgr, mds, etc., y colocar el osd en otros nodos para facilitar la administración.

Versión del sistema del servidor

[root@ceph-node1 ~]# cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
1. Apague el firewall y selinux
sed -i  "s/SELINUX=enforcing/SELINUX=permissive/g" /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
2. Configure el archivo de hosts
保证集群内主机名与ip解析正常(每个节点都需要配置)
[root@ceph-node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.125  ceph-node1
192.168.56.126  ceph-node2
192.168.56.127  ceph-node3
[root@ceph-node1 ~]# ping ceph-node2
PING ceph-node2 (192.168.56.126) 56(84) bytes of data.
64 bytes from ceph-node2 (192.168.56.126): icmp_seq=1 ttl=64 time=0.616 ms
…………
3. Cree un usuario de implementación y configure los permisos de sudo (ejecutado en todos los nodos)

a. Teniendo en cuenta los problemas de seguridad del uso del usuario root, aquí se crea un usuario normal ceph-admin para implementación, operación y mantenimiento. b. Además, ceph-deploy instalará
paquetes de software en los nodos, por lo que el usuario creado no necesita tener contraseña. permisos sudo

[root@ceph-node1 ~]# useradd ceph-admin
[root@ceph-node1 ~]# echo "123456" | passwd --stdin ceph-admin
Changing password for user ceph-admin.
passwd: all authentication tokens updated successfully.

[root@ceph-node1 ~]# echo "ceph-admin ALL = NOPASSWD:ALL" | tee /etc/sudoers.d/ceph-admin
ceph-admin ALL = NOPASSWD:ALL
[root@ceph-node1 ~]# chmod 0440 /etc/sudoers.d/ceph-admin
[root@ceph-node1 ~]# ll /etc/sudoers.d/ceph-admin
-r--r-----. 1 root root 30 Oct 19 16:06 /etc/sudoers.d/ceph-admin

测试
[root@ceph-node1 ~]# su - ceph-admin
Last login: Mon Oct 19 16:11:51 CST 2020 on pts/0
[ceph-admin@ceph-node1 ~]$ sudo su -
Last login: Mon Oct 19 16:12:04 CST 2020 on pts/0
[root@ceph-node1 ~]# exit
logout
[ceph-admin@ceph-node1 ~]$ exit
logout
4. Configure el acceso ssh sin contraseña (ejecutado en el nodo maestro nodo1)
[root@ceph-node1 ~]# su - ceph-admin
[ceph-admin@ceph-node1 ~]$ ssh-keygen          (每一步都按回车,口令密码留空)
[ceph-admin@ceph-node1 ~]$ ssh-copy-id ceph-admin@ceph-node1
[ceph-admin@ceph-node1 ~]$ ssh-copy-id ceph-admin@ceph-node2
[ceph-admin@ceph-node1 ~]$ ssh-copy-id ceph-admin@ceph-node3

5. Configurar la sincronización horaria ntp

El propósito de configurar la sincronización de hora: solo cuando la hora es consistente se puede garantizar el funcionamiento normal del clúster. El
método de sincronización de hora de configuración: el nodo1 se conecta al servidor NTP en la red para sincronizar la hora, y los nodos 2 y 3 se conectan al nodo 1 para sincronizar la hora (es decir, el nodo1 es a la vez un servidor NTP y también para el cliente)
注:ntpd启动后需要等待几分钟去同步

yum -y intall ntp(安装ntp,全部节点都需要执行)

node1节点操作:
vim /etc/ntp.conf
注释掉默认的配置项:
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
添加配置项:
server  ntp1.aliyun.com     #阿里云ntp服务器
server 127.127.1.0     #本地ntp服务器,配置此项是为了在外网ntp连接异常的情况下还能保证ntp正常,维护集群稳定

node2/node3节点操作:
vim /etc/ntp.conf
同样注释掉默认的server配置项:
添加配置项:
server 192.168.56.125     #node1-ntp服务器

全部节点都执行:
systemctl restart ntpd
systemctl enable ntpd

查看ntp连接情况和状态
[root@ceph-node1 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*120.25.115.20   10.137.53.7      2 u   41  128  377   30.382   -1.019   1.001
 LOCAL(0)        .LOCL.           5 l  806   64    0    0.000    0.000   0.000
 
 [root@ceph-node2 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ceph-node1      120.25.115.20    3 u   20   64  377    2.143   33.254  10.350

[root@ceph-node1 ~]# ntpstat
synchronised to NTP server (120.25.115.20) at stratum 3
   time correct to within 27 ms
   polling server every 128 s

2. Comience a implementar el clúster Ceph

1. Agregue la fuente base de Alibaba Cloud y la fuente epel (ejecutada en todos los nodos)
备份系统原本的源
[root@ceph-node1 ~]# mkdir /mnt/repo_bak
[root@ceph-node1 ~]# mv /etc/yum.repos.d/* /mnt/repo_bak
添加新源
[root@ceph-node1 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@ceph-node1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2. Agregue la fuente yum de ceph (ejecutada en todos los nodos)

注意事项:
La fuente yum aquí determina la versión de ceph. El elemento baseurl en la fuente rpm-nautilusrepresenta nautilusel paquete rpm de la versión ceph ( nautilus是ceph的14.x版本). Si necesita instalar otras versiones, debe reemplazarlas con otros números de versión. La versión 12.x es luminoso, la versión 13.x es rpm-mimic. Para obtener más detalles, puede consultar la fuente oficial de ceph: https://download.ceph.com/

vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph
baseurl=http://download.ceph.com/rpm-nautilus/el7/x86_64
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

更新yum缓存及系统软件
yum makecache
yum -y update

Puede verificar la versión de ceph para determinar si yum está configurado correctamente.

[root@ceph-node1 yum.repos.d]# yum list ceph --showduplicates |sort -r
 * updates: mirrors.cn99.com
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
 * extras: mirrors.163.com
ceph.x86_64                         2:14.2.9-0.el7                          Ceph
ceph.x86_64                         2:14.2.8-0.el7                          Ceph
ceph.x86_64                         2:14.2.7-0.el7                          Ceph
ceph.x86_64                         2:14.2.6-0.el7                          Ceph
ceph.x86_64                         2:14.2.5-0.el7                          Ceph
ceph.x86_64                         2:14.2.4-0.el7                          Ceph
ceph.x86_64                         2:14.2.3-0.el7                          Ceph
ceph.x86_64                         2:14.2.2-0.el7                          Ceph
ceph.x86_64                         2:14.2.11-0.el7                         Ceph
ceph.x86_64                         2:14.2.1-0.el7                          Ceph
ceph.x86_64                         2:14.2.10-0.el7                         Ceph
ceph.x86_64                         2:14.2.0-0.el7                          Ceph
ceph.x86_64                         2:14.1.1-0.el7                          Ceph
ceph.x86_64                         2:14.1.0-0.el7                          Ceph
 * base: mirrors.163.com
Available Packages

[root@ceph-node1 yum.repos.d]# yum list ceph-deploy --showduplicates |sort -r
 * updates: mirrors.cn99.com
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
 * extras: mirrors.163.com
ceph-deploy.noarch                     2.0.1-0                       Ceph-noarch
ceph-deploy.noarch                     2.0.0-0                       Ceph-noarch
ceph-deploy.noarch                     1.5.39-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.38-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.37-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.36-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.35-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.34-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.33-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.32-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.31-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.30-0                      Ceph-noarch
ceph-deploy.noarch                     1.5.29-0                      Ceph-noarch
 * base: mirrors.163.com
Available Packages
3. Instale ceph-deploy (ejecutado en el nodo maestro nodo1)
[root@ceph-node1 ~]# su - ceph-admin
[ceph-admin@ceph-node1 ~]$ sudo yum -y install python-setuptools   #安装ceph依赖包
[ceph-admin@ceph-node1 ~]$ sudo yum install ceph-deploy  (默认会选择安装2.0最新版本)

查看ceph-deploy安装版本
[root@ceph-node1 ~]# ceph-deploy --version
2.0.1
4. Inicialice el clúster (ejecutado en el nodo maestro nodo1)

Cree un directorio de instalación del clúster (el programa de implementación ceph-deploy generará el archivo en el directorio actual)

[ceph-admin@ceph-node1 ~]$ mkdir cluster
[ceph-admin@ceph-node1 ~]$ cd cluster/

Cree un clúster (este último sirve para especificar qué nodos se utilizan como monitores mon, así que seleccione el nodo que implementa mon en el plan: nodo1)

[ceph-admin@ceph-node1 cluster]$ ceph-deploy new ceph-node1
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph-admin/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /bin/ceph-deploy new ceph-node1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  func                          : <function new at 0x7f14c44c9de8>
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f14c3c424d0>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  ssh_copykey                   : True
[ceph_deploy.cli][INFO  ]  mon                           : ['ceph-node1']
[ceph_deploy.cli][INFO  ]  public_network                : None
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  cluster_network               : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  fsid                          : None
[ceph_deploy.new][DEBUG ] Creating new cluster named ceph
[ceph_deploy.new][INFO  ] making sure passwordless SSH succeeds
[ceph-node1][DEBUG ] connection detected need for sudo
[ceph-node1][DEBUG ] connected to host: ceph-node1
[ceph-node1][DEBUG ] detect platform information from remote host
[ceph-node1][DEBUG ] detect machine type
[ceph-node1][DEBUG ] find the location of an executable
[ceph-node1][INFO  ] Running command: sudo /usr/sbin/ip link show
[ceph-node1][INFO  ] Running command: sudo /usr/sbin/ip addr show
[ceph-node1][DEBUG ] IP addresses found: [u'192.168.56.125']
[ceph_deploy.new][DEBUG ] Resolving host ceph-node1
[ceph_deploy.new][DEBUG ] Monitor ceph-node1 at 192.168.56.125
[ceph_deploy.new][DEBUG ] Monitor initial members are ['ceph-node1']
[ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.56.125']
[ceph_deploy.new][DEBUG ] Creating a random mon key...
[ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring...
[ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...

[ceph-admin@ceph-node1 cluster]$ ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring

Agregue las dos líneas siguientes a ceph.conf en el directorio actual

public_network = 192.168.56.0/24
cluster_network = 192.168.56.0/24

Instale el paquete Ceph en otros nodos
( --no-adjust-repossignificado del parámetro: use la fuente configurada localmente, no cambie la fuente. Para evitar problemas)

[ceph-admin@ceph-node1 cluster]$ ceph-deploy install --no-adjust-repos ceph-node1 ceph-node2 ceph-node3

Si RuntimeError: Failed to execute command: ceph --versionse produce el error " ", se debe a problemas de red del servidor. La velocidad de descarga del paquete de instalación de ceph es demasiado lenta y el tiempo de espera expirará después de 5 minutos. Puede repetir la ejecución o ejecutar yum -y install ceph en todos los nodos solos.

Inicializar nodo mon

En la versión 2.0.1 de ceph-deploy, la clave se recopilará cuando se inicialice y no es necesario ejecutar el
comando ceph-deploy togetherkeys {monitor-host}

[ceph-admin@ceph-node1 cluster]$ ceph-deploy mon create-initial
5. Agregar OSD

Si es un disco con datos dentro, primero debe borrar los datos: (Para obtener más detalles, consulte ceph-depoy disk zap --help)

列出所有节点上所有可用的磁盘
[ceph-admin@ceph-node1 cluster]$ ceph-deploy disk list ceph-node1 ceph-node2 ceph-node3
清除数据
sudo ceph-deploy disk zap {
    
    osd-server-name} {
    
    disk-name}
    eg:sudo ceph-deploy disk zap ceph-node2 /dev/sdb

Si es un disco limpio, puede ignorar la operación anterior de borrar datos y agregar OSD directamente
(aquí estoy agregando el disco /dev/sdb recién agregado)

[ceph-admin@ceph-node1 cluster]$ ceph-deploy osd create --data /dev/sdb ceph-node1
[ceph-admin@ceph-node1 cluster]$ ceph-deploy osd create --data /dev/sdb ceph-node2
[ceph-admin@ceph-node1 cluster]$ ceph-deploy osd create --data /dev/sdb ceph-node3

Puede ver que cpeh crea el nuevo OSD en formato LVM y lo agrega al clúster ceph.

[ceph-admin@ceph-node1 cluster]$ sudo pvs
  PV         VG                                        Fmt  Attr PSize   PFree
  /dev/sdb   ceph-ab1b8533-018e-4924-8520-fdbefbb7d184 lvm2 a--  <10.00g    0
6. Permitir que el host ejecute comandos Ceph con privilegios de administrador

Utilice el comando ceph-deploy para copiar el archivo de configuración y la clave de administración a cada nodo ceph. Otros hosts de nodos también pueden administrar el clúster ceph.

[ceph-admin@ceph-node1 cluster]$ ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
7. Implementar MGR para obtener información del clúster
[ceph-admin@ceph-node1 cluster]$ ceph-deploy mgr create ceph-node1

Ver el estado del clúster

[ceph-admin@ceph-node1 cluster]$ sudo ceph health detail
HEALTH_OK
[ceph-admin@ceph-node1 cluster]$ sudo ceph -s
  cluster:
    id:     e9290965-40d4-4c65-93ed-e534ae389b9c
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph-node1 (age 62m)
    mgr: ceph-node1(active, since 5m)
    osd: 3 osds: 3 up (since 12m), 3 in (since 12m)

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:

Si verificas el estado del cluster “HEALTH_WARN mon is allowing insecure global_id reclaim”, es porque el modo inseguro está habilitado, simplemente deshabilítalo:

 [ceph-admin@ceph-node1 cluster]$ sudo ceph config set mon auth_allow_insecure_global_id_reclaim false

Debido a que los usuarios comunes no tienen permiso de lectura en el archivo clave en /etc/ceph/, los usuarios comunes no tienen derecho a ejecutar comandos ceph directamente.
Si se necesita ceph-admin, los usuarios comunes también pueden llamar directamente al clúster y aumentar el permiso de lectura en el archivo de configuración de ceph
(si lo desea) Los usuarios normales de cada nodo pueden ejecutar comandos relacionados con ceph, por lo que todos los nodos pueden modificar los permisos)

[ceph-admin@ceph-node1 ~]$ ll /etc/ceph/
total 12
-rw-------. 1 root root 151 Oct 21 17:33 ceph.client.admin.keyring
-rw-r--r--. 1 root root 268 Oct 21 17:35 ceph.conf
-rw-r--r--. 1 root root  92 Oct 20 04:48 rbdmap
-rw-------. 1 root root   0 Oct 21 17:30 tmpcmU035
[ceph-admin@ceph-node1 ~]$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
[ceph-admin@ceph-node1 ~]$ ll /etc/ceph/
total 12
-rw-r--r--. 1 root root 151 Oct 21 17:33 ceph.client.admin.keyring
-rw-r--r--. 1 root root 268 Oct 21 17:35 ceph.conf
-rw-r--r--. 1 root root  92 Oct 20 04:48 rbdmap
-rw-------. 1 root root   0 Oct 21 17:30 tmpcmU035
[ceph-admin@ceph-node1 ~]$ ceph -s
  cluster:
    id:     130b5ac0-938a-4fd2-ba6f-3d37e1a4e908
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum ceph-node1 (age 20h)
    mgr: ceph-node1(active, since 20h)
    osd: 3 osds: 3 up (since 20h), 3 in (since 20h)

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:

3. Configurar el módulo Mgr-Dashboard

Abra el módulo del tablero

[ceph-admin@ceph-node1 ~]$ sudo ceph mgr module enable dashboard

Si el error se informa de la siguiente manera:

Error ENOENT: all mgr daemons do not support module 'dashboard', pass --force to force enablement

Esto se debe a que ceph-mgr-dashboard no está instalado, simplemente instálelo en el nodo mgr.

[ceph-admin@ceph-node1 ~]$ sudo yum -y install ceph-mgr-dashboard

De forma predeterminada, todas las conexiones HTTP al panel están protegidas mediante SSL/TLS.
Para que su panel esté en funcionamiento rápidamente, puede generar e instalar un certificado autofirmado usando el siguiente comando

[ceph-admin@ceph-node1 ~]$ sudo ceph dashboard create-self-signed-cert
Self-signed certificate created

Cree un usuario con rol de administrador:

[ceph-admin@ceph-node1 ~]$ sudo ceph dashboard set-login-credentials admin admin
******************************************************************
***          WARNING: this command is deprecated.              ***
*** Please use the ac-user-* related commands to manage users. ***
******************************************************************
Username and password updated

Parece que el "administrador" que usé antes ya no puedo escribirlo directamente así. Necesito escribir la contraseña en un archivo y leerlo; de lo contrario, se informará un error.
“dashboard set-login-credentials <username> : Set the login credentials. Password read from -i <file>”

Luego agregue el parámetro -i para crear el mismo

[ceph-admin@ceph-node1 cluster]$ echo admin > userpass
[ceph-admin@ceph-node1 cluster]$ sudo ceph dashboard set-login-credentials admin -i userpass
******************************************************************
***          WARNING: this command is deprecated.              ***
*** Please use the ac-user-* related commands to manage users. ***
******************************************************************
Username and password updated

Ver el servicio ceph-mgr:

[ceph-admin@ceph-node1 ~]$ sudo ceph mgr services
{
    
    
    "dashboard": "https://ceph-node1:8443/"
}

Prueba de acceso al navegador:
http://192.168.56.125:8443

Supongo que te gusta

Origin blog.csdn.net/weixin_43860781/article/details/109205811
Recomendado
Clasificación