一、基础环境
本文所搭建环境为Centos 7 内核4.17版本,安装Ceph版本为luminous。
一共配置三台机器,每台机器的IP地址和主机名称分别为:
192.168.1.131 ceph-admin
192.168.1.132 ceph-1
192.168.1.133 ceph-2
本文中所要进行的操作,如无特别说明,均在ceph-admin节点上进行。
二、时间同步配置
Ceph分布式存储要求各存储节点间的时间差不超过0.05s,因此需要配置时间同步服务,具体配置过程参考https://blog.csdn.net/baidu_26495369/article/details/80813396。
三、SSH免密码登录
Ceph安装过程中需要多次访问各存储节点,因此配置SSH免密码登录会让配置过程更为方便。
本文中,Ceph安装主要在ceph-admin主机上完成。
在Ceph-admin上输入:
ssh-keygen
输入命令后,会提示输入存放密码的地址,输入地址或直接回车后会创建密钥。
创建密钥完成后,需要将密钥拷贝到各个节点上,命令如下:
ssh-copy-id ceph-admin
ssh-copy-id ceph-1
ssh-copy-id ceph-2
密钥拷贝完成后,即可实现免密码登录各节点,例如,可以直接通过ssh ceph-1从ceph-admin主机上直接登录Ceph-1节点。
四、添加源。
1.添加Epel源,命令如下所示:
yum install epel-release -y
2.添加Ceph源,命令如下所示:
vi /etc/yum.repos.d/ceph.repo
创建配置文件并打开后,输入如下内容:
[ceph]
name=Ceph packages for $basearch
baseurl=https://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
至此,保存退出,源添加完成。
五、Ceph安装。
1.安装ceph-deploy工具(Ceph-deploy更适合测试使用,实际生产环境应该使用ceph-ansible,安装过程详见Ceph官网)。
yum install ceph-deploy -y
2.安装Ceph集群
首先创建Ceph集群安装目录(此处创建目录名称为my_cluster,ceph-deploy命令均在该目录下执行),命令如下:
mkdir -p /root/my_cluster
创建完成后,创建Ceph集群文件,命令如下:
ceph-deploy new ceph-admin ceph-1 ceph-2
创建Ceph集群文件完成后,修改ceph.conf文件,添加以下内容:
network =192.168.1.131/24
mon clock drift allowed =2
mon clock drift warn backoff =30
osd crush update on start = false
[mon]
mon_allow_pool_delete = true
修改完成后,开始安装Ceph集群,命令如下:
ceph-deploy install --release luminous ceph-admin
ceph-deploy install --release luminous ceph-1
ceph-deploy install --release luminous ceph-2
安装完成后,创建Ceph集群相关配置文件,命令如下:
ceph-deploy mon create-initial
执行完成后,须将该目录下的所有Ceph文件拷贝至所有节点(包括本节点)的/etc/ceph/目录下(覆盖ceph.conf文件)。
Ceph文件拷贝完成后,开始OSD的安装(即使得机器上的硬盘能够被Ceph集群使用),命令如下。
ceph-deploy osd create --bluestore ceph-admin --data /dev/sdb
此命令中,ceph-admin表示该osd操作会在ceph-admin节点上进行,安装的硬盘也是ceph-admin节点上的硬盘,--bluestore表示该磁盘被格式化为bluestore格式(bluestore是当前主流格式之一)。
至此,Ceph集群基础环境安装完成。
附:
当磁盘数量过多时,可通过脚本安装:
首先,在每一个节点先创建一个获取当前设备文件名的脚本/root/sh-files/fdisk.sh:
#!/bin/bash
disk=`fdisk -l | grep ^Disk | grep [^o]sd | grep -v sda | sed 's/://g' | awk '{print $2}' | sort`
for part in $disk
do
echo "$part"
done
其中disk信息是对fdisk -l的信息进行筛选,得到将要进行安装的硬盘的盘符,grep -v命令是剔除紧随其后的盘符(这里/dev/sda是系统盘)。
然后,在安装ceph的/root/my_cluster目录下创建osd-create.sh:
#!/bin/bash
disksd=`fdisk -l | grep ^Disk | grep [^o]sd | grep -v sda | sed 's/://g' | awk '{print $2}' | sort`
for part in $disksd
do
ceph-deploy osd create --bluestore ceph-admin --data $part
done
hostname=`cat -n /etc/hosts | sed -n '3,5p' | awk '{print $3}'`
for hostpart in $hostname
do
ssh $hostpart "sh /root/sh-files/fdisk.sh > sd.$hostpart.json "
scp root@$hostpart:/root/sd.$hostpart.json /root/my_cluster/ > none.json
disk=`cat sd.$hostpart.json`
for part in $disk
do
ceph-deploy osd create --bluestore $hostpart --data $part
done
done
其中hostname是为了从/etc/hosts文件中读取host名称,本文中/etc/hosts第3-5行的第三列为host名称。
这两个脚本能够安装/dev/sd*类型的硬盘,如果要安装其他设备,需要对disk的筛选条件进行修改。