ceph-deploy部署Ceph集群

本例将部署jewel版本的Ceph,包括组件:mon,mds,osd

       ceph-1                         ceph-client
    +----------------+              +---------------+
    | mon,mds        |              |               |
    |                +------+-------+     ceph      |
    | osd*2          |      |       |               |
    +----------------+      |       +---------------+
                            |
                            |
        +----------------------------------------+
        |                   |                    |
+-------+------+     +------+-------+    +-------+-------+
|  mon,mds     |     |  mon,mds     |    |               |
|              |     |              |    |     osd*2     |
|  osd*2       |     |  osd*2       |    |               |
+--------------+     +--------------+    +---------------+
   ceph+2                ceph+3               ceph+4

yum install ntpdate -y
echo "* * * * * root ntpdate 10.1.1.253 > /dev/null 2>&1" >> /etc/crontab
systemctl restart crond

关闭iptables,安装xfs工具:

setenforce 0 && iptables -F && service iptables save
yum install xfsprogs -y

使用163的Ceph源:

curl -o /etc/yum.repos.d/ceph.repo https://wiki.xargs.cn:444/_export/code/storage:ceph:ceph-jewel.repo?codeblock=0

设置各节点hostname:

# 修改hostname
hostnamectl set-hostname ceph-01..ceph-04
# 分发hosts
cat >> /etc/hosts <<'EOF'
10.1.2.186 ceph-1
10.1.2.199 ceph-2
10.1.2.195 ceph-3
10.1.2.197 ceph-4
10.1.2.196 ceph-client
EOF

创建部署Ceph的用户:1)

useradd -d /home/admin -m admin
echo '123123' | passwd --stdin admin
echo "admin ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/admin
chmod 0440 /etc/sudoers.d/admin

3.1 安装ceph-deploy

yum update -y && yum install -y ceph-deploy

3.2 配置ssh免密

切换至 admin 用户继续操作,本质就是通过ssh-copy-id命令配置ceph-deploy对要部署的节点的ssh免密.2)

# ssh免密登录其他Ceph节点
ssh-keygen
ssh-copy-id ceph-1~4
# verify
ssh ceph-4 hostname
# 新的cluster 配置将会写入此目录
mkdir my-cluster
cd my-cluster

若ssh端口非默认的话,需将ssh信息写入~/.ssh/config,不然报错:

cat > ~/.ssh/config <<'EOF'
Host ceph-1
    Hostname ceph-1
    User admin
    Port 33
Host ceph-2
    Hostname ceph-2
    User admin
    Port 33
Host ceph-3
    Hostname ceph-3
    User admin
    Port 33
Host ceph-4
    Hostname ceph-4
    User admin
    Port 33
EOF
chmod 700 ~/.ssh/config

# 安装Ceph软件到指定节点
# ceph-deploy install --no-adjust-repos {ceph-node} [{ceph-node} ...]
ceph-deploy install --no-adjust-repos ceph-1 ceph-2 ceph-3 ceph-4

5.1 创建ceph.mon

# 安装mon节点
# ceph-deploy new {initial-monitor-node(s)}
ceph-deploy new ceph-1 ceph-2 ceph-3 ceph-4

ceph-deploy-new命令会在当前目录产生以下文件:

-rw-rw-r-- 1 admin admin  251 Sep 11 21:56 ceph.conf
-rw-rw-r-- 1 admin admin 6203 Sep 11 21:56 ceph-deploy-ceph.log
-rw------- 1 admin admin   73 Sep 11 21:56 ceph.mon.keyring

5.2 ceph.conf

参考下面的conf进行配置: ceph_jewel.conf

5.3 初始化ceph.mon

# 初始化ceph.mon
ceph-deploy mon create-initial

完成上述操作后,当前目录里应该会出现这些密钥环3)

点击以显示 ⇲

点击以隐藏 ⇱

-rw------- 1 admin admin     73 Sep 11 21:56 ceph.mon.keyring
-rw------- 1 admin admin     71 Sep 11 22:05 ceph.bootstrap-mds.keyring
-rw------- 1 admin admin     71 Sep 11 22:06 ceph.bootstrap-mgr.keyring
-rw------- 1 admin admin     71 Sep 11 22:06 ceph.bootstrap-osd.keyring
-rw------- 1 admin admin     71 Sep 11 22:06 ceph.bootstrap-rgw.keyring
-rw------- 1 admin admin     63 Sep 11 22:05 ceph.client.admin.keyring
-rw-rw-r-- 1 admin admin    311 Sep 11 21:57 ceph.conf
-rw-rw-r-- 1 admin admin 110987 Sep 11 22:06 ceph-deploy-ceph.log

  • create = prepare + active
  • ceph01:/dev/sdc:/dev/sdb 中sdc为OSD数据盘,sdb为SSD journal4)

6.1 建议操作流程

# 查看目标机器的磁盘列表
ceph-deploy disk list [ceph-1]
# 清理相关磁盘,包括数据盘和journal
ceph-deploy disk zap ceph-1:/dev/sd{b..f}
 
# 准备osd,此命令会把/dev/sdb分成两个区,一个是日志分区,一个是数据分区
# 大多数磁盘在prepare阶段就已经部署好OSD并且UP了.
# 该例中sdb为journal,sdc~sdf为数据盘,prepare过程中会读取osd_journal_size值,分割出对于大小的分区.
ceph-deploy osd prepare \
    ceph-1:sdc:/dev/sdb \
    ceph-1:sdd:/dev/sdb \
    ceph-1:sde:/dev/sdb \
    ceph-1:sdf:/dev/sdb
 
# 完成后用lsblk命令查看sdb是否分成两个区
lsblk -f
 
# 激活此osd,再观察是否成功
# 因为prepare已将data盘分为了单独的一个区,所以这里activate一定要加分区号,不然会报错不能识别文件系统.
ceph-deploy osd activate \
    ceph-1:sdc1:/dev/sdb1 \
    ceph-1:sdd1:/dev/sdb2 \
    ceph-1:sde1:/dev/sdb3 \
    ceph-1:sdf1:/dev/sdb4

6.2 快速操作(optional)

仅建议在确保磁盘已经被完全cleanup的情况下操作,此步骤等效于prepare + activate.

ceph-deploy --overwrite-conf osd create --zap-disk ceph-1:/dev/sd{b..i}:/dev/ssd_journal_device

然后完成其他节点OSD的部署

# Push configuration and client.admin key to remote hosts.
ceph-deploy --overwrite-conf admin ceph-1 ceph-2 ceph-3 ceph-4
# 对所有节点keyring添加+r权限:
sudo chmod +r /etc/ceph/ceph.client.admin.keyring

ceph health detail
ceph -s / -w (--name username)
ceph df
osd tree

等 peering 完成后,集群应该达到 active + clean 状态.

如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置:

# kill ceph进程
ps aux|grep ceph |awk '{print $2}'|xargs kill -9
# 删除所有节点的ceph程序
ceph-deploy purge {ceph-node} [{ceph-node}]
# 删除所有节点的ceph目录
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
# 再次手动删除ceph相关目录,当然好像没必要...
umount /var/lib/ceph/osd/*
rm -rf /var/lib/ceph
rm -rf /etc/ceph
rm -rf /var/run/ceph


1)
ceph-deploy 工具必须以普通用户登录Ceph节点,且此用户拥有无密码使用 sudo 的权限,它需要在安装软件及配置文件的过程中不必输入密码。
2)
对其自身也要免密…
3)
只有在安装 Hammer 或更高版时才会创建 bootstrap-rgw 密钥环。
4)
一个OSD默认占用5G的分区,可以将多个OSD公用一共SSD,但建议一个OSD配置一个SSD,SSD最好推荐SLC的颗粒,分区大小由参数“osd_journal_size”决定.
  • storage/ceph/ceph-deploy部署集群.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)