Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。详见:http://www.oschina.net/p/ceph
目前大部分部署ceph基本都是在Ubuntu,因为它的内核默认打开了Ceph_fs。选择CentOS7(默认文件系统是XFS,而不是EXT4)作为部署平台时则需要留意更多的信息,比如是用客户端加载ceph文件系统时。
看过不少网上的文章,大都不太适合0.80,或是可被省略的步骤。比如配置ceph.conf。所以特意做了几遍的安装,总结此文。另外吐嘈下Redhat,收购了Ceph 所在的公司 Inktank还发布了自己的版本($1000/cluster),居然不在最新的内核中将 Ceph_fs 打开,导致很多人直接倒向Ubuntu。
一、准备主机环境:
主机名 | IP | 角色 |
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略)
二、准备工作(注:用ceph-deploy可直接安装ceph,也可以用yum另行安装)
确认每台机器的主机名正确(CentOS7中,只要更改/etc/hostname即可,比旧版本方便)
每台机器上加入对应的 IP/主机名到/etc/hosts;
每台机器使用 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
三、开始安装
(以下非特别说明,都是在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
四、挂载问题:
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内部(包括不同服务器之间的复制)的速度,而不是单纯客户端到服务器商的速度。
看看是不是已经正常用了。
五、安装结语:
并不是与网上的大多数教程写的那样一定要编辑 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
其他内容(如:增加/删除节点,块设备等,后续再写)
来源:oschina
链接:https://my.oschina.net/u/92007/blog/317127