Linux下在线部署指定版本的Ceph集群

Ceph版本:v14.2.22
Linux版本:ubuntu-server 18.04
官方教程:deploying a Ceph Storage Cluster with ceph-deploy



第一部分 集群组织架构

Linux下在线部署指定版本的Ceph集群
注:上图中的管理节点并不属于ceph集群,只是一个普通的主机,没有安装ceph,下文所说的集群节点指的是安装了ceph软件的节点。


第二部分 前期准备

2.1 修改主机名

在ceph集群中,每一个主机是一个节点,为了方便管理集群,建议同时修改主机名

2.1.1 修改/etc/hostname文件

登录每一个集群节点,修改/etc/hostname文件,用以下内容覆盖文件中原内容

node1

2.1.2 修改/etc/hosts文件

登录每一个 集群节点,修改/etc/hosts文件

192.168.3.11 node1 #模拟真实ip地址

注:

  1. 实际环境,每个主机都有一个真正的ip,因此为每虚拟机增加一个虚拟网卡,ip地址范围192.168.3.11-192.168.3.12
  2. 其他节点主机的修改以此类推

2.2 新建用户并获取sudo权限

ceph-deploy安装ceph软件到不同主机的过程中需要以拥有sudo权限的用户登录到不同主机上,因此官方推荐为集群中每一个主机新建一个用户,用户名可以相同。但用户名不能为ceph

2.2.1 创建一个新用户

登录每一个 集群节点,执行以下命令,格式如下
sudo useradd -d /home/用户名 -m 用户名
sudo passwd 用户名

sudo useradd -d /home/admins -m admins
sudo passwd admins

2.2.2 新用户获取sudo权限

登录每一个 集群节点,执行以下命令 ,格式如下
echo “用户名 ALL = (root) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/用户名
sudo chmod 0440 /etc/sudoers.d/用户名

echo "admins ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/admins
sudo chmod 0440 /etc/sudoers.d/admins

注:

  1. 如果当前用户是root,可以忽略2.2.1和2.2.2
  2. 如果非要新建一个新的普通用户,则必须执行2.2.1和2.2.2
  3. 如果当前已经是普通用户,不建议按照官方说的再新建一个新用户,只需要为当前用户获取sudo权限即可

2.3 设置免密登录

ceph-deploy工具安装ceph软件到不同主机的过程中需要以拥有sudo权限的用户登录到不同主机上,如果用户是普通用户,必然需要输入密码。但是ceph-deploy工具在实现过程中完全采取自动化方式去部署软件,不支持交互式操作。所以需要设置免密

2.3.1 生成ssh key

登录 管理节点,执行以下命令,一路回车,不要输入任何东西

ssh-keygen

2.3.2 将ssh key拷贝到所有主机上

登录 管理节点,执行以下命令 ,格式如下:
ssh-copy-id 用户名@主机名 或者 ssh-copy-id 用户名@ip地址

ssh-copy-id admins@node1
ssh-copy-id admins@node2
ssh-copy-id admins@node3

注:此处免密方式是使用ssh key管理方式

2.3.3 设置免用户名登录

ceph-deploy部署ceph软件到集群中各个节点的过程,实际上是通过ssh远程登录的方式,而ssh远程登录需要指定用户名和密码。当然ceph-deploy可以通过 --username 参数指定用户名。此处建议在 ~/.ssh/config 文件中指定用户名,可以避免ceph-deploy部署时要求指定用户。
登录 管理节点,使用vim新建~/.ssh/config,并添加以下内容

Host node1 #主机名                                                                                                                                                                                                        
   Hostname node1 #主机名
   User ubuntu #用户名
Host node2
   Hostname node2
   User ubuntu
Host node3
   Hostname node3
   User ubuntu


2.4 设置时间同步

ceph集群,OSD进程心跳机制,MON进程维护集群map,要求每个主机之间时间同步,否则会影响集群。登录每一个 集群节点,执行以下命令,安装ntp

sudo apt install ntp



第三部分 环境配置

使用ceph-deploy工具部署ceph集群,需要下载安装ceph-deploy工具。ubuntu自带ceph-deploy安装包,但该版本不一定支持ceph-14.2.22版本,需要从ceph官方下载最新的版本。为了加快下载速度,建议使用ceph国内镜像源,此处使用的是阿里云镜像源。

3.1 添加 release key

登录 管理节点,执行以下命令

wget -q -O- 'https://mirrors.aliyun.com/ceph/keys/release.asc' | sudo apt-key add -

3.2 添加 Ceph 软件包源

登录 管理节点,执行以下命令

echo deb https://mirrors.aliyun.com/ceph/debian-nautilus/ bionic main | sudo tee /etc/apt/sources.list.d/ceph.list

注:

  1. nautilus为 ceph 14.2.22发行版本,参考官网关于版本的说明,合理修改为自己想要的版本
  2. bionic为ubuntu 18.04发行版本,执行lsb_release -sc查看自己的Ubuntu版本

3.3 更新下载源

登录 管理节点,执行以下命令

sudo apt-get update

3.4 安装ceph-deploy部署工具

登录 管理节点,执行以下命令

sduo apt-get install ceph-deploy



第四部分 集群部署

如果之前已经安装了ceph,无论是哪个版本的,请按照 第五部分 集群卸载 步骤执行卸载动作

4.1 创建一个集群

登录 管理节点,执行以下命令,在node1节点上部署一个新的集群,格式如下
ceph-deploy new 主机名

ceph-deploy new node1

4.2 修改ceph-deploy配置文件

默认情况下,ceph-deploy安装脚本中指定的是ceph13版本的地址,需要重新指定为ceph14版本的地址
登录 管理节点,向~/.cephdeploy.conf文件中追加以下内容

[ceph]
baseurl=https://mirrors.aliyun.com/ceph/debian-nautilus
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
default=true

注:

  1. sources.list中ceph软件源地址对ceph-deploy脚本无效,对手动安装ceph有效,因为ceph-deploy安装ceph时会覆盖sources.list中ceph软件源地址
  2. ~/.cephdeploy.conf文件中所有行都必向左顶格,不能有空格,否则会报错

4.3 安装ceph软件

登录 管理节点,执行以下命令,为集群中每一个节点都安装ceph软件,格式如下:
ceph-deploy install 主机名1 主机名2 …

ceph-deploy install node1 node2 node3

4.4 创建和初始化mon进程

登录 管理节点,执行以下命令,在node1节点上初始化mon进程

ceph-deploy mon create-initial

4.5 创建mgr进程

登录 管理节点,执行以下命令,在node1节点上创建mgr进程,格式如下:
ceph-deploy mgr create 主机名

ceph-deploy mgr create node1

4.6 创建osd进程

登录 管理节点,执行以下命令,分别为node1节点、node2节点、node3节点创建osd进程,格式如下:
bluestore模式:
ceph-deploy osd create --data 磁盘设备名 主机名
filestore模式:
ceph-deploy osd create --data 磁盘设备名1 --journal 磁盘设备名2 --filestore 主机名
默认情况下,ceph-deploy采用的是bluestore模式。如果仅仅为了学习或测试,建议采用filestore模式,因为filestore模式下,可以看到数据存在哪个目录下;而bluestore则无法看到
bluestore模式:

ceph-deploy osd create --data /dev/sdb node1
ceph-deploy osd create --data /dev/sdb node2
ceph-deploy osd create --data /dev/sdb node3

filestore模式:

ceph-deploy osd create --data /dev/sdb --journal /dev/sdc --filestore node1
ceph-deploy osd create --data /dev/sdb --journal /dev/sdc --filestore node2
ceph-deploy osd create --data /dev/sdb --journal /dev/sdc --filestore node3

4.7 将ceph.conf和ceph.client.admin.keyring添加到/etc/ceph目录下

ceph通过ceph命令来管理集群,如果想要使用ceph命令,需要将相关的key文件和ceph.conf文件放到指定路径下
登录 管理节点,执行以下命令,将key文件和ceph.conf文件分发到每一个集群节点上,格式如下
ceph-deploy admin 主机名1 主机名2 …

ceph-deploy admin node1 node2 node3

注: 不需要分发到所有集群节点上,如果想要在其他主机上也能使用ceph命令,重复此步骤,将节点名更改为对应节点
如果之前有安装过ceph,并且ceph相关的文件没有删除干净,使用下面命令

4.8 修改ceph.client.admin.keyring权限

登录每一个 集群节点,执行以下命令

sudo chmod +r /etc/ceph/ceph.client.admin.keyring

4.9查看集群状态

登录集群中 任何一个节点,执行以下命令

ceph -s



第五部分 集群卸载

删除集群很简单,但也容易删除不干净,主要包括:卸载ceph软件、删除逻辑卷

5.1 卸载ceph

5.1.1 删除ceph软件

登录 管理节点,执行以下命令,格式如下:
ceph-deploy purge 主机名1 主机名2 …

ceph-deploy purge node1 node2 node3

5.1.2 删除数据

登录 管理节点,执行以下命令,格式如下:
ceph-deploy purgedata 主机名1 主机名2 …

ceph-deploy purgedata node1 node2 node3

5.1.3 删除密钥

登录 管理节点,执行以下命令

ceph-deploy forgetkeys


5.2 删除逻辑卷

ceph-deploy在创建osd时,会将每个osd对应的硬盘以逻辑卷的形式挂在到系统中。如果不删除osd对应的逻辑卷,下次再部署相同id的osd时,会发现osd对应的逻辑卷已经存在,直接导致osd创建失败。

5.2.1 查看osd 逻辑卷

登录每一个 集群节点,执行以下命令

sudo vgdisplay 

结果如下:

  --- Volume group ---
  VG Name               ceph-38503e2e-ff3c-4513-ae4c-27197145c4ac
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <10.00 GiB
  PE Size               4.00 MiB
  Total PE              2559
  Alloc PE / Size       2559 / <10.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               x0XARi-ztWg-0LI8-y3GS-FbBM-zMQZ-Z6Yhjq
   
  --- Volume group ---
  VG Name               ceph-86ebc595-b0ed-4020-a5a3-469fb43f56db
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <10.00 GiB
  PE Size               4.00 MiB
  Total PE              2559
  Alloc PE / Size       2559 / <10.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               jLj3vl-EgKz-vqxf-18P4-06pW-2JzD-zk4krZ
  ...... 

5.2.2 删除osd逻辑卷

登录每一个 集群节点,执行以下命令,格式如下:
sudo vgremove VG Name

sudo vgremove ceph-38503e2e-ff3c-4513-ae4c-27197145c4ac
上一篇:Linux下Ceph源码编译和GDB调试


下一篇:蚂蚁森林能量自动化收集