Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。详见:http://www.oschina.net/p/cephshell
目前大部分部署ceph基本都是在Ubuntu,由于它的内核默认打开了Ceph_fs。选择CentOS7(默认文件系统是XFS,而不是EXT4)做为部署平台时则须要留意更多的信息,好比是用客户端加载ceph文件系统时。服务器
看过很多网上的文章,大都不太适合0.80,或是可被省略的步骤。好比配置ceph.conf。因此特地作了几遍的安装,总结此文。另外吐嘈下Redhat,收购了Ceph 所在的公司 Inktank还发布了本身的版本($1000/cluster),竟然不在最新的内核中将 Ceph_fs 打开,致使不少人直接倒向Ubuntu。网络
1、准备主机环境:less
主机名 | IP | 角色ssh |
OS |
ceph0 | 10.9.16.96 | MON, MDS | CentOS7 |
ceph1 | 10.9.16.97 | MON,OSD | CentOS7 |
ceph2 | 10.9.16.98 | OSD,MDS | CentOS7 |
ceph3 | 10.9.16.99 | OSD,MDS | CentOS7 |
ceph4 | 10.9.16.100 | MON | CentOS7 |
client0 | 10.9.16.89 | client | CentOS7(内核3.16.2) |
client1 | 10.9.16.95 | client | Ubuntu14.04 |
部署建议说明:
分布式
MON节点建议使用3个,OSD数据节点最好与操做系统分开以提升性能,有至少两个千兆网卡(这里只显示集群内的IP,客户端访问IP略)性能
2、准备工做(注:用ceph-deploy可直接安装ceph,也能够用yum另行安装)
spa
确认每台机器的主机名正确(CentOS7中,只要更改/etc/hostname便可,比旧版本方便)操作系统
每台机器上加入对应的 IP/主机名到/etc/hosts;.net
每台机器使用 ssh-copy-id 完成这些服务器之间免ssh密码登陆;(发现ansible好用了)
关闭防火墙(systemctl stop firewalld.service)或打开 6789/6800~6900端口;
编辑/etc/ntp.conf,开启时间服务同步时间;(crontab/ntpdate不靠谱,不另做说明)
确认已经配置epel/remi的 repo软件包;在client0上配置elrepo软件包以便yum升级内核
在全部的OSD服务器上,初始化目录,好比ceph1创建文件夹 /var/local/osd1,ceph2上对应/var/local/osd2
3、开始安装
(如下非特别说明,都是在ceph0上操做)
生成MON信息:ceph-deploy new ceph{0,1,4}
安装ceph:ceph-deploy install ceph0 ceph1 ceph2 ceph3 ceph4(注:若是已经用yum在每台机器上安装了ceph,这步可省略)
生成keys:ceph-deploy --overwrite-conf mon create-initial
准备OSD服务器:ceph-deploy --overwrite-conf osd prepare ceph1:/var/local/osd1 ceph2:/var/local/osd2 ceph3:/var/local/osd3
激活OSD:ceph-deploy osd activate ceph1:/var/local/osd1 ceph2:/var/local/osd2 ceph3:/var/local/osd3
复制key到各个节点:ceph-deploy admin ceph0 ceph1 ceph2 ceph3 ceph4
检查是否ok:ceph health。
安装MDS节点:ceph-deploy mds create ceph0 ceph2 ceph3
检查状态:
[root@ceph0 ~]# ceph -s cluster 9ddc0226-574d-4e8e-8ff4-bbe9cd838e21 health HEALTH_OK monmap e1: 2 mons at {ceph0=10.9.16.96:6789/0,ceph1=10.9.16.97:6789/0,ceph4=10.9.16.100:6789/0}, election epoch 4, quorum 0,1 ceph0,ceph1 mdsmap e5: 1/1/1 up {0=ceph0=up:active}, 1 up:standby osdmap e13: 3 osds: 3 up, 3 in pgmap v6312: 192 pgs, 3 pools, 1075 MB data, 512 objects 21671 MB used, 32082 MB / 53754 MB avail 192 active+clean
4、挂载问题:
client0的CentOS7默认没有开启ceph_fs的内核,须要更改内核,这里直接用yum更新(能够手工编译):
yum --enablerepo=elrepo-kernel install kernel-ml grub2-set-default 0 mkdir /mnt/cephfs mount -t ceph 10.9.16.96:6789,10.9.16.97:6789:/ /mnt/cephfs -o name=admin,secret=AQDnDBhUWGS6GhAARV0CjHB*******Y1LQzQ== #这里的密钥,是 ceph.client.admin.keyring 中的内容。 #如下是 /etc/fstab 的自动加载内容: 10.9.16.96:6789,10.9.16.97:6789:/ /mnt/ceph ceph name=admin,secret=AQDnDBhUWGS6GhAARV0CjHB*******Y1LQzQ==,noatime 0 0
用Ubuntu14.04的命令是同样的,加载。
在复制文件时,用ceph -s能够实时查看到底下有一个文件读/写速度,如:client io 12515 kB/s wr, 3 op/s
不过这个读写速度是ceph内部(包括不一样服务器之间的复制)的速度,而不是单纯客户端到服务器商的速度。
看看是否是已经正经常使用了。
5、安装结语:
并非与网上的大多数教程写的那样必定要编辑 ceph.conf 文件。而应该是在特定需求环境下才去改。
要配置集群内网和访问外网的网络,以提升网络负载效率和可能的DDOS,可把下面的选项加到ceph.conf里的[global]段下。
[global] public network {public-network-ip-address/netmask} cluster network {enter cluster-network-ip-address/netmask}
ceph的osd journal size默认值是0,因此你得在ceph.conf里设置,日志尺寸应该至少2倍于 filestore min sync interval的值和预计吞吐量的乘积:osd journal size = {2 * (expected throughput * filestore min sync interval)}例如:osd journal size = 10000(是10G)
元变量将展开为实际的集群名和进程名,例如若是集群名是ceph(默认值),你能够用下面的命令检索osd.0的配置:ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | less
使用其余端口加载方法:mount.ceph monhost1:7000,monhost2:7000,monhost3:7000:/ /mnt/foo
其余内容(如:增长/删除节点,块设备等,后续再写)