环境说明
server:3台虚拟机,挂载卷/dev/vdb 10G
系统:centos7.2
ceph版本:luminous
repo:
- 公网-http://download.ceph.com,http://mirrors.aliyun.com
- 内网-自建mirrors
架构说明
node1:admin-node,mon,mgr,osd
node2:osd
node3:osd
准备工作
1、安装centos、epel repo
使用阿里云mirros,https://opsx.alibaba.com/mirror
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupcurl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repomv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backupmv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backupcurl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、安装ceph repo
yum install centos-release-ceph-luminous -y
3、安装ceph-deploy
yum update -yyum installl ceph-deploy -y
4、安装、配置ntp
yum install ntp ntpdate ntp-doc -y
5、安装ssh(系统自带请忽略或升级)
确认所有节点的ssh server 运行
yum install openssh-server -y
6、用户设置
我们使用root用户,虽然官方不推荐这样
配置管理节点到其他server免密登录
#生成秘钥对ssh-keygen#将管理节点公钥注入到其他serverssh-copy-id SERVER-
7、确保networking 启动
8、配置hosts
将ip hostname 写入/etc/hosts
9、关闭iptables
10、关闭selinux
11、安装yum-plugin-priorities
yum install yum-plugin-priorities -y
部署集群
#在管理节点使用ceph-deploy部署ceph cluster#创建部署目录mkdir ~/my-clustercd ~/my-cluster#从头开始(非第一次部署ceph,清理环境)ceph-deploy purge {ceph-node}[{ceph-node}]ceph-deploy purgedata {ceph-node}[{ceph-node}]ceph-deploy forgetkeysrm ceph.*##创建集群#创建monitor节点#例如:ceph-deploy new {initial-monitor-node(s)}ceph-deploy new node1#安装ceph包到各个节点ceph-deploy install node1 node2 node3#初始化monitor节点,获取keysceph-deploy mon create-initial#上述命令执行成功后,你会在当前目录下得到以下keyring文件ceph.client.admin.keyringceph.bootstrap-mgr.keyringceph.bootstrap-osd.keyringceph.bootstrap-mds.keyringceph.bootstrap-rgw.keyringceph.bootstrap-rbd.keyring#将keyring文件分发到各个节点ceph-deploy admin node1 node2 node3#部署manager(l版本之上才需要)ceph-deploy mgr create node1#部署osd节点(这里使用虚拟机,挂载了/dev/vdb卷)ceph-deploy osd create node1:/dev/vdb node2:/dev/vdb node3:/dev/vdb#检查集群,在管理节点执行ceph healthceph -s
扩展集群
node1 扩展了metadata,(rgw)
node2 扩展了metadata,monitor
node3 扩展了metadata,monitor

#添加metadate serverceph-deploy mds create node1#添加monitorsceph-deploy mon add node2 node3#添加新的monitor节点之后,ceph会同步monitor,选举代表quorum#查看quorum状态ceph quorum_status --format json-pretty#添加managers#manager使用active/standby模式,多节点部署,可以在master down时,无缝顶替ceph-deploy mgr create node2 node3#添加rgw实例#为了使用ceph object gateway,需要部署rgw实例ceph-deploy rgw create node1#rgw默认监听端口是7480,可以通过编辑ceph.conf修改端口[client]rgw frontends = civetweb port=80
存储、检索对象数据
为了存储对象数据,ceph client需要具备:
1.设置一个对象名
2.指定一个pool
ceph client 检索最近的集群map和CRUSH算法去计算怎样映射对象到PG,然后计算如何动态映射PG到OSD,
只需要对象name和pool name即可找到对象的位置。
ceph osd map {poolname}{object-name}
练习:定位对象
#创建一个对象,测试文件echo {Test-data}> testfiles.txtceph osd pool create mytest 8#使用rados put 命令指定对象名,含有对象数据的测试文件,pool name#rados put {object-name} {file-path} --pool=mytestrados put test-object-1 testfile.txt --pool=mytest#验证ceph集群已经存储了此objectrados -p mytest ls#找到对象位置#ceph osd map {pool-name} {object-name}ceph osd map mytest test-oobject-1#ceph会输出对象位置osdmap e537 pool 'mytest'(1) object 'test-object-1'-> pg 1.d1743484(1.4)-> up [1,0] acting [1,0]#删除测试对象objectrados rm test-object-1--pool-mytest#删除mytest poolceph osd pool rm mytest
随着集群的发展,对象位置可能会动态变化。
Ceph的动态重新平衡的一个好处是,Ceph可以让您不必手动执行数据迁移或平衡。
#安装lvmyum install lvm2 -y#创建虚拟磁盘mkdir /ceph && dd if=/dev/zero of=/ceph/ceph-volumes.img bs=1M count=10240 oflag=directsgdisk -g --clear /ceph/ceph-volumes.imgvgcreate ceph-volumes $(losetup --show -f /ceph/ceph-volumes.img)lvcreate -L 9G -n ceph1 ceph-volumesmkfs.xfs -f /dev/ceph-volumes/ceph1#挂载mkdir -p /var/local/osd1- chown ceph:ceph /var/local/osd1 #修改属主属组,不然在添加osd时候会报权限错误
mount /dev/ceph-volumes/ceph1 /var/local/osd1