环镜
操作系统centos6.5
网络规划
Cluster_net:192.168.20.0/24
Public_net:192.168.2.0/24
| 角色 | Public_net | Cluster_net |
|---|---|---|
| Ceph-mon | 192.168.2.4 | 192.168.20.2 |
| Ceph-mon2 | 192.168.2.5 | 192.168.20.5 |
| Ceph-mon3 | 192.168.2.6 | 192.168.20.6 |
| Ceph-osd1 | 192.168.2.7 | 192.168.20.7 |
| Ceph-osd2 | 192.168.2.8 | 192.168.20.8 |
| Ceph-osd3 | 192.168.2.9 | 192.168.20.9 |
绑定hosts
1 | 192.168.2.4 ceph-mon.novalocal mon |
osd数规划
每台osd节点挂载3块SSD硬盘
配置yum源
根据操作系统版本任意调整(所有节点)
vim /etc/yum.repos.d/ceph.repo
1 | [ceph] |
yum clean
yum makecache
在第一台mon节点安装pssh批量执行操作
yum install pssh
创建hosts(会被批量执行的主机)
vim /root/hosts.txt
1 | 192.168.2.5 |
先进行测试
安装软件(所有节点)
pssh -P -h hosts.txt yum install ceph –y
同步hosts
pscp.pssh -h /root/hosts.txt /etc/hosts /etc/
都success进行下一步
配置ceph-mon
创建集群fsid
uuidgen
fdc3d06b-7e05-44a8-b982-e8e04e4156db
创建/etc/ceph/ceph.conf将fsid写入配置文件
[global]
fsid = fdc3d06b-7e05-44a8-b982-e8e04e4156db
将ceph-mon写入配置文件(有多个mon,用逗号隔开)
mon_initial_members = mon,mon2,mon3
将mon节点ip写入ceph配置文件
mon_host = 192.168.2.4,192.168.2.5,192.168.2.6
为集群创建mon密钥ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
生成管理员密钥ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
将client.admin密钥加入到ceph.mon.keyringceph-authtool/tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
生成mon mapmonmaptool --create --add mon 192.168.2.4 --fsid fdc3d06b-7e05-44a8-b982-e8e04e4156db /tmp/monmap
在每个mon节点数据目录
分别在mon、mon2、mon3上执行
格式为(默认cluster-name为ceph)mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
如mon为mkdir /var/lib/ceph/mon/ceph-mon
mon初始化(-i后接hostname)ceph-mon --mkfs -i mon --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
ceph.conf增加如下配置
1 | public network = 192.168.2.0/24 |
创建两个空文件touch /var/lib/ceph/mon/ceph-mon/donetouch /var/lib/ceph/mon/ceph-mon/sysvinit
启动第一个ceph-mon/etc/init.d/ceph status mon.mon
部署第二个mon
将keyring复制到mon2
scp /tmp/ceph.mon.keyring mon2:/tmp/
在mon2节点上建立一个/var/lib/ceph/mon/ceph-mon2目录
mkdir –p /var/lib/ceph/mon/ceph-mon2/
在mon2节点上初始化mon节点ceph-mon --mkfs -i mon2 --keyring /tmp/ceph.mon.keyring
为了防止重新被安装,初始化一个空的done文件touch /var/lib/ceph/mon/ceph-mon2/donetouch /var/lib/ceph/mon/ceph-mon2/sysvinit
/etc/init.d/ceph start mon.mon2
检查进程
第三个mon同上
完后检查

发现有时种偏移问题,默认ceph是0.05s,为了方便同步直接把时钟偏移设置成0.5s
修改ceph配置文件增加两条配置
1 | [global] |
同步配置
pscp.pssh -h hosts.txt /etc/ceph/ceph.conf /etc/ceph/
重启进程
pssh -h /root/hosts.txt /etc/init.d/ceph restart
配置osd节点
将keyring同步到osd节点
pscp.pssh -h /root/hosts.txt /etc/ceph/ceph.client.admin.keyring /etc/ceph/
为osd分配uuid(我每台osd节点有3个osd所以创建3个uuid)
uuidgen
19ebc47d-9b29-4cf3-9720-b62896ce6f33
uuidgen
1721ce0b-7f65-43ef-9dfc-c49e6210d375
uuidgen
f5e0f54b-2ee3-41df-bf25-ad37371ab6ce
创建3个osd
1 | ceph osd create 19ebc47d-9b29-4cf3-9720-b62896ce6f33 |
创建数据存储目录
1 | mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number} |
挂载
1 | mount -o defaults,_netdev /dev/vdb /var/lib/ceph/osd/ceph-0 |
修改fstable
初始化osd目录
1 | ceph-osd -i 0 --mkfs --mkkey --osd-uuid 19ebc47d-9b29-4cf3-9720-b62896ce6f33 |
注册此osd密钥
1 | ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring |
加入crush map
ceph osd crush add-bucket ceph-osd1 host
ceph osd crush move ceph-osd1 root=default
设置权重
1 | ceph osd crush add osd.0 1.0 host=ceph-osd1 |
要已守护进程开机启动,须创建一个空文件
1 | touch /var/lib/ceph/osd/ceph-0/sysvinit |
启动osd进程
1 | /etc/init.d/ceph start osd.0 |

查看osd 树
按上述方法配置osd2、osd3
3台节点添加完毕
这里有个warn,是pool的pg问题,我们重新计算,修改。
查看我们现在拥有的pool
ceph osd lspools
0 rbd,
查看默认的rbd pool的pg
1 | ceph osd pool get rbd pg_num |
再查看
修改ceph.conf默认数据存两份,默认pg为128
同步配置
重启ceph
配置ceph-radosgw
直接将第一个mon节点当radosgw,ceph在0.80及以上版本可以直接使用civeweb来构建对象网关,可以不需要使用apache或nginx+fastcgi了,所以我这里用civetweb。
安装软件
yum install ceph-radosgw
没有www-data用户创建
useradd –r –s /sbin/nologin www-data
创建gateway keyring并授权
ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/keyring.radosgw.gateway
编辑ceph.conf文件
增加下面内容
1 | [client.radosgw.gateway] |
重启进程
/etc/init.d/ceph-radosgw restart
查看是否启动成功
新建用户
radosgw-admin user create –uid=”testuser” –display-name=”First User”
得到如下结果