前期准备:
1.ceph用户配置—每个节点上执行
ceph-deploy配置集群时以ceph用户的权限进行
新建用户:
useradd ceph
passwd ceph
密码:87##IGsef
增加ceph的sudo权限
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/ceph
2.ssh免密码登陆—每个节点
yum install openssh-server -y
su - ceph
ssh-keygen 生成密钥
将密钥复制到要登陆的服务器
ssh-copy-id "-p $port" ceph@ceph01
ssh-copy-id "-p $port" ceph@ceph02
ssh-copy-id "-p $port" ceph@ceph03
ssh-copy-id "-p $port" ceph@ceph04
3、 格式化挂载磁盘
fdisk /dev/sdb
p
n
p
1
w
mkfs.xfs /dev/sdb
创建挂载点
mkdir /opt/ceph-sdb
mount /dev/sdb1 /opt/ceph-sdb
把目录的所有者改成ceph,否则配置集群过程中后出错
chown -R ceph.ceph /opt/ceph-sdb
4、 NTP同步时间
yum install ntpdate -y
ntpdate timeserver
加入到crontab中,执行间隔不可过长
ceph安装:
1.yum源
设置好yum源,前提得看好ceph版本所支持的系统版本。默认情况下centos6已经不被最新版本支持。这里使用最新版本ceph-jewel,
[ceph]
name=Ceph packages for $basearch
baseurl=https://download.ceph.com/rpm-jewel/el7/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-jewel/el7/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://download.ceph.com/rpm-jewel/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
上面内容保存到ceph.repo中
2.安装ceph软件:
不要使用ceph-deploy安装节点,容易出错。
yum install ceph-deploy -y
yum -y install epel-release
yum -y install ceph ceph-radosgw
配置集群:
功能: mon一个集群建议有3个点
osd 存储单元,最少两个
mds cephfs功能所必须的组件,官方建议每个集群有一个,但最新版本对cephfs方面有所增加,两个以上的mds可以实现自动切换,同时只有一个active状态,其他处于standby,active发生故障后,standby自动将状态切换成acitve。
1.新建一个集群
ceph-deploy new ceph01 ceph02 ceph03 ceph04
2.在节点上开启监控服务
ceph-deploy mon create ceph01 ceph02 ceph03 ceph04
3.收集所有节点的key
ceph-deploy gatherkeys ceph01 ceph02 eph03 ceph04
4.增加osd节点
初始化:
ceph-deploy osd prepare ceph01:/opt/ceph-sdb ceph02:/opt/ceph-sdb ceph03:/opt/ceph-sdb ceph04:/opt/ceph-sdb
激活:
ceph-deploy osd activate ceph01:/opt/ceph-sdb ceph02:/opt/ceph-sdb ceph03:/opt/ceph-sdb ceph04:/opt/ceph-sdb
5.增加mds节点,cephfs必须的节点,创建两个,active--standby模式
ceph-deploy mds create ceph01 ceph02
创建元数据,必须执行
ceph osd pool create data 192 192
sudo ceph osd tree
sudo ceph osd pool create data 192 192
sudo ceph osd pool create metadata 192 192
sudo ceph fs new cephfs metadata data
客户端使用
把ceph集群的ceph.conf和ceph.client.admin.keyring复制到客户端的/etc/ceph目录下
1.cephfs模式 挂载
mkdir /mnt/testceph/
mount -t ceph ceph01:6789:/ /mnt/testceph/
2.使用rdb块挂载
centos7.2 内核支持rbd,但是官方不建议使用。这里为了简单,不对内核作任何操作。
创建一个镜像
echo "rbd_default_features = 3" >> /etc/ceph/ceph.conf #否则在3.10的内核下会报错,因为新版的一些特性3.10内核不支持
rbd create rbdtest --size 40960
rbd map rbdtest --name client.admin
mkfs.xfs /dev/rbd0
挂载
mkdir /mnt/rbdtest
mount /dev/rbd0 /mnt/rbdtest/
有一个问题,不同的客户端在挂载同一个块的时候文件不能实时同步。本身不支持这个功能,umount && mount后会显示mount前块上所有的文件,一旦远端发生变化,仍然无法实时同步。实现这个功能只能是使用cephfs模式。
常用管理命令
1.集群状态
ceph -s 查看ceph状态
ceph -w 持续观察集群变动类似于tail -f 的功能
ceph osd stat osd状态
ceph osd tree osd树
ceph mon stat mon状态
ceph mds stat mds状态
2.osd故障操作
摘掉osd的命令如下,版本不同下面命令可能会有细微差异
osd_id=`ceph osd tree | grep down | grep osd | awk '{print $3}' | awk -F . '{print$2}'`
ceph osd rm ${osd_id}
ceph osd crush rm osd.${osd_id}
ceph auth del osd.${osd_id}
mkfs.xfs -f -i size=512 /dev/sd${i}1
mount -a
chown -R ceph:ceph ${hostname}:/opt/ceph-sdb
su - ceph
ceph-deploy --overwrite-conf osd prepare ${hostname}:/opt/ceph-sdb
ceph-deploy --overwrite-conf osd activate ${hostname}:/opt/ceph-sdb
3.rbd块的操作
rbd create img_name -s img_size ####创建
rbd map img_name ##映射
rbd ls 查看ceph默认资源池rbd里面的镜像
rbd info xxx.img 查看xxx.img的具体的具体信息
rbd rm xxx.img 删除xxx.img
rbd cp aaa.img bbb.img 拷贝镜像aaa.img为bbb.img
rbd rename aaa.img bbb.img 重命名aaa.img为bbb.img
rbd import aaa.img 将本地的aaa.img导入ceph集群中
rbd export aaa.img 将ceph集群中aaa.img导出到本地