手动部署Ceph集群
我们创建了3台虚拟机,虚拟机配置如下
- 3块大小为2T的磁盘,sdb,sdc,sdd,用于启动osd进程
- 一块大小为600G的磁盘,作为osd的journal分区~~
集群配置如下
主机 | IP | 功能 |
---|---|---|
ceph-1 | 192.168.56.101 | mon1、osd0、osd1、osd2 |
ceph-2 | 192.168.56.102 | mon2、osd3、osd4、osd5 |
ceph-3 | 192.168.56.103 | mon3、osd6、osd7、osd8 |
配置NTP服务
将NTP server放在ceph-1节点上,ceph-2/3节点是NTP client,这样可以从根本上解决时间同步问题。
修改配置文件
从本机登录到ceph-1
修改/etc/ntp.conf
,注释掉默认的四个server,添加三行配置如下:
vim /etc/ntp.conf
###comment following lines:
#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
###add following lines:
server 127.127.1.0 minpoll 4
fudge 127.127.1.0 stratum 0
restrict 192.168.56.0 mask 255.255.0.0 nomodify notrap
修改/etc/ntp/step-tickers
文件如下
# List of NTP servers used by the ntpdate service.
# 0.centos.pool.ntp.org
127.127.1.0
在重启ntp服务之前需要将防火墙关闭,否则客户端不能访问ntp服务
关闭防火墙
关闭selinux
&firewalld
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
启动ntp服务
重启ntp服务,并查看server端是否运行正常,正常的标准就是ntpq -p
指令的最下面一行是*
[root@ceph-1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 0 l 15 16 1 0.000 0.000 0.000
NTP server端已经配置完毕,下面开始配置client端。
配置客户端ntp同步
同样的方式登录到ceph-2/ceph-3机器上:
修改/etc/ntp.conf
,注释掉四行server,添加一行server指向ceph-1:
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 192.168.56.101
重启ntp服务并观察client是否正确连接到server端,同样正确连接的标准是ntpq -p
的最下面一行以*号开头
异常状态:
[root@ceph-3 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ceph-1 .LOCL. 1 u 5 64 3 0.551 -716.88 0.318
正常状态:
[root@ceph-3 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ceph-1 .LOCL. 1 u 33 64 17 0.701 0.115 0.081
手动搭建ceph集群
手动部署mon集群
主mon节点部署 (192.168.56.101,ceph-1)
登录到ceph-1机器,
创建ceph用户与目录
新建一个脚本文件prepare_env.sh
,然后写入以下内容:
/usr/sbin/groupadd ceph -g 167 -o -r
/usr/sbin/useradd ceph -u 167 -o -r -g ceph -s /sbin/nologin -c "Ceph daemons"
mkdir -p /etc/ceph/
chown -R ceph:ceph /etc/ceph/
mkdir -p /var/run/ceph
chown -R ceph:ceph /var/run/ceph
mkdir -p /var/log/ceph
chown -R ceph:ceph /var/log/ceph
mkdir -p /var/lib/ceph/mon
chown -R ceph:ceph /var/lib/ceph
创建ceph.conf文件
新建一个conf文件ceph.conf
,然后写入以下内容:
[global]
fsid = c165f9d0-88df-48a7-8cc5-11da82f99c93
mon initial members = ceph-1
mon host = 192.168.56.101,192.168.56.102,192.168.56.103
rbd default features = 1
auth_cluster_required = none
auth_service_required = none
auth_client_required = none
public network = 192.168.56.0/24
cluster network = 192.168.56.0/24
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 1
osd pool default pg num = 300
osd pool default pgp num = 300
osd crush chooseleaf type = 1
[mon]
mon allow pool delete = true
其中 fsid
是为集群分配的一个 uuid, 可使用uuidgen
命令生成。初始化 mon 节点其实只需要这一个配置就够了。
mon host
配置 ceph 命令行工具访问操作 ceph 集群时查找 mon 节点入口。
ceph 集群可包含多个 mon 节点实现高可用容灾, 避免单点故障。
rbd default features = 1
配置 rbd 客户端创建磁盘时禁用一些需要高版本内核才能支持的特性。
- 拷贝这两个文件到ceph-2,ceph-3机器上
scp prepare_env.sh 192.168.56.102:/home
scp prepare_env.sh 192.168.56.103:/home
scp /etc/ceph/ceph.conf 192.168.56.102:/etc/ceph/
scp /etc/ceph/ceph.conf 192.168.56.103:/etc/ceph/
-
启动mon节点
首先执行脚本,创建ceph用户及相关目录。
sh prepare_env.sh
1、为此集群创建密钥环、并生成Monitor密钥
[root@ceph-1 ~]# ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
2、生成管理员密钥环,生成
client.admin
用户并加入密钥环[root@ceph-1 ~]# ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
3、把
client.admin
密钥加入ceph.mon.keyring
(3台机器一样)[root@ceph-1 ~]# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring