安装前准备工作
1、准备5台linux主机,内核版本3.10
2、确保每台主机上软件包最新
yum -y update
3、设置deploy主机的/etc/hosts文件,确保deploy主机可以通过主机名来访问其他主机
192.168.21.71 node1
192.168.21.72 node2
192.168.21.73 node3
192.168.21.74 node4
192.168.21.75 node5
4、每台主机上添加一个用户,注意尽量不要使用ceph,因为osd守护进程需要占用此用户
useradd cephnode
echo '123' | passwd --stdin cephnode
5、设置deploy主机可以无密码访问其他主机,设置完毕以后尝试无密码登录一下.
su - cephnode
ssh-key-gen
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
ssh-copy-id node4
ssh-copy-id node5
ssh node1
6、(推荐做法)修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 --username {username} 。这样做同时也简化了 ssh 和 scp 的用法。把 {username} 替换成你创建的用户名。
Host node1
Hostname node1
User cephnode
Host node2
Hostname node2
User cephnode
Host node3
Hostname node3
User cephnode
Host node4
Hostname node4
User cephnode
Host node5
Hostname node5
User cephnode
7、确保各 Ceph 节点上新创建的用户都有 sudo 权限
echo "cephnode ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephnode
sudo chmod 0440 /etc/sudoers.d/cephnode
8、因为deploy节点需要无密码登录到各节点执行命令、而且不是通过tty方式执行,所以得设置每台主机上的 visudo 配置文件
visudo
找到 Defaults requiretty 修改为Defaults:cephnode !requiretty 或者如果没找到对应项就直接添加 Defaults:cephnode !requiretty
9、设置selinux iptables 为关闭
setenforce 0
systemctl stop firewalld.service
10、在node1配置ceph-deploy的yum源J版本(其中gpgcheck和gpgkey可以关闭)
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
11、在各节点设置ceph的yum源J版本
[ceph]
name=Ceph packages
baseurl=http://download.ceph.com/rpm-jewel/el7/x86_64/
enabled=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
gpgcheck=1
12、在node1上安装ceph-deploy
yum -y install ceph-deploy
13、在各节点安装ntp以及openssh-server,并且设置ntp服务器为s2c.time.edu.cn,来同步时间,避免发生时钟漂移
yum -y install ntp openssh-server
crontab -e
*/1 * * * * /usr/sbin/ntpdate s2c.time.edu.cn > /dev/null 2>&1
2、集群搭建
1、在deploy节点上执行
su - cephnode
mkdir my-cluster 用来存放配置文件等
cd my-cluster
2、创建集群,如果创建成功,则在当前目录下有三个文件被创建出来
ceph-deploy new node2
3、修改配置文件 ceph.conf
+++ osd pool default size = 2
4、安装 Ceph(也可以独自每个节点安装、如果出现了某些软件包版本不够的问题,请确认epel-release是否安装,如果安装,还有这个问题,请选择较低的ceph版本源)
ceph-deploy install node1 node2 node3 node4 node5
5、配置初始 monitor(s)、并收集所有密钥.(将node2 设置为monitor,如果设置成功,则当前目录下会产生会多文件)
ceph-deploy mon create-initial
6、从管理节点执行 ceph-deploy 来准备 OSD,注意,如果是单独的磁盘,直接使用一下目录
ceph-deploy osd prepare node3:/dev/sdb1 node4:/dev/sdb1
7、激活osd
ceph-deploy osd activate node3:/dev/sdb1 node4:/dev/sdb1
8、用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了
ceph-deploy admin node5 node2 node3 node4 node1
9、确保对 ceph.client.admin.keyring 有正确的操作权限
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
10、查看健康状态
ceph health
3、以块设备挂载集群
1、新建一个ceph pool,(两个数字为 {pg-num} [{pgp-num})
ceph osd pool create rbdpool 100 100
2、在pool中新建一个镜像
rbd create rbdpoolimages --size 80960 -p rbdpool 或者 rbd create rbdpool/rbdpoolimages --size 102400
在内核为3.10的不能实现绝大部分features,使用此命令 在后边加上 --image-format 2 --image-feature layering
3、查看相关pool以及image信息
rbd ls rbdpool 查看池中信息
rbd --image rbdpoolimages -p rbdpool info 查询一个池内的镜像信息
4、把镜像映射到pool块设备中,在安装了ceph以及执行过ceph-deploy admin node 命令的客户端上以root身份执行执行
rbd map rbdpoolimages -p rbdpool
5、格式化映射的设备块
mkfs.ext4 /dev/rbd0
6、取消映射块设备、查看镜像映射map
rbd unmap /dev/rbd1 取消映射块设备
rbd showmapped 查看镜像映射map
7、扩容image
rbd resize -p rbdpool --size 2T rbdpoolimages
4、重头再来
1、如果在某些地方碰到麻烦,想从头再来,可以用下列命令清除配置
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
2、下列命令可以连 Ceph 安装包一起清除
ceph-deploy purge {ceph-node} [{ceph-node}]
5、扩展集群
1、一个基本的集群启动并开始运行后,下一步就是扩展集群。在 node2 上添加一个 OSD 守护进程和一个元数据服务器。然后分别在 node3 和 node4 上添加 Ceph Monitor ,以形成 Monitors 的法定人数。(目前状态是有三个节点都在运行这osd 和 monitor,其中有一个运行着元数据mds)
ceph-deploy osd prepare node2:/dev/sdb1
ceph-deploy osd activate node2:/dev/sdb1
2、新增 Monitor 用来达到高可用。
ceph-deploy mon add node2
ceph-deploy mon add node3
3、新增 Monitor 后,Ceph 会自动开始同步并形成法定人数。你可以用下面的命令检查法定人数状态
ceph quorum_status --format json-pretty
4、在线扩容已挂载的 image
rbd resize --size 20G testimg -p rbdpool
resize2fs /dev/rbd0
blockdev --getsize64 /dev/rbd0 查看block设备的大小
5、增加mds来使用cephFS
ceph-deploy mds create node1
6、虽然已创建了元数据服务器(存储集群快速入门),但如果你没有创建存储池和文件系统,它是不会变为活动状态的、所以接下来创建pool。并且查看mds状态。
ceph osd pool create cephfs_data 1000
ceph osd pool create cephfs_metadata 1000
ceph fs new media cephfs_metadata cephfs_data
ceph mds stat
7、在client端挂载cephFS
yum install ceph-fuse -y 安装挂载需要的软件包
mount.ceph 172.16.20.3:6789:/ /cephfs/ -o name=admin,secret=AQCqK2NYJ2p/LRAAU+uoKx7Q/YfaT5AVqRsAwA== 使用密钥挂载
或者将secret写入一个文件中,然后指定文件
echo AQCqK2NYJ2p/LRAAU+uoKx7Q/YfaT5AVqRsAwA== > /etc/ceph/admin.key
mount.ceph node1,node2:/ /cephfs -o name=admin,secretfile=/etc/ceph/admin.key 可以同时指定多个monitor,防止一个monitor宕机
mount -t ceph node1,node2:/ /cephfs -o name=admin,secretfile=/etc/ceph/admin.key
6、常用配置
1、查看pool的默认副本数
ceph osd dump | grep 'replicated size'
2、查看osd、pg相关设置
ceph osd dump
ceph pg dump
3、RBD操作
rados lspools 查看穿件的pool
rados mkpool pool 创建一个存储池
rbd create pool/image1 --size 1024M image-format 2 创建image
rbd ls pool 查看创建出的image
rbd info pool/image1 查看image1的详细信息
rbd rm pool/image1 删除image1
4、osd 操作
ceph osd out 2 将第二个osd节点从节点中去掉
ceph osd in 2 将第二个osd节点从加入节点中
rados -p cephfs_data ls 列出某个pool中的所有object
ceph osd map cephfs_data 10000000003.00000000 查看某个object(10000000003.00000000)的详细信息
7、参考博客资料
1、添加osd
http://blog.csdn.net/heivy/article/details/50622786
2、其他相关资料
http://www.centoscn.com/CentosServer/test/2015/0521/5489.html
http://www.2cto.com/os/201411/354299.html
http://blog.csdn.net/youyume20/article/details/50574908
http://docs.openfans.org/ceph
http://sangh.blog.51cto.com/6892345/1884398 "ceph各种操作 "
http://docs.ceph.org.cn/
http://michaelkang.blog.51cto.com/1553154/1786309 map时候报错解决 rbd create rbd/test1 --size 10G --image-format 2 --image-feature layering
http://michaelkang.blog.51cto.com/1553154/1675822/ 挂载rbd到client步骤
网友评论