一、基本配置:
1、集群基本环境:
部署节点: 10.9.32.86(ceph-deploy)
osd节点 : 10.9.32.81,10.9.32.82,10.9.32.83,10.9.32.84
mon节点 :10.9.32.85,10.9.32.86
mds节点 :10.9.32.85,10.9.32.86
主操作系统统一使用debian7.7系统,但osd节点的/dev/sda5分区单独划分出来,作为一个volume storage使用,其文件系统为xfs。
2、添加源:
echo "deb http://mirrors.sohu.com/debian/ wheezy main non-free contrib" /etc/apt/sources.list
3、安装基本软件(需要提前配通外网):
apt-get install ntp ntpdate wget sudo openssh-server
4、创建集群用户并设置权限,一般为ceph,也可以使用root用户,该步骤可以省略,但不推荐:
useradd -d /home/ -m
passwd
echo " ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/
sudo chmod 0440 /etc/sudoers.d/
5、添加/etc/hosts本地解析文件:
10.9.32.81osd-1
10.9.32.82osd-2
10.9.32.83osd-3
10.9.32.84osd-4
10.9.32.85mds-1
10.9.32.86mds-2
##以上步骤需要在ceph集群的每个节点设置##
二、部署节点配置(admin-node)
1、获取密钥,添加源:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://au.ceph.com/debian-giant wheezy main | sudo tee /etc/apt/sources.list.d/ceph.list
2、升级系统:
sudo apt-get update && sudo apt-get install ceph-deploy
3、生成密钥,实现各节点的无密码登陆:
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys
chmod 600 authorized_keys
scp -r .ssh/ osd-1:/root
scp -r .ssh/ osd-2:/root
scp -r .ssh/ osd-3:/root
scp -r .ssh/ osd-4:/root
scp -r .ssh/ mds-1:/root
scp -r .ssh/ mds-2:/root
4、开启防火墙端口(如果防火墙存在的话):
iptables -A INPUT -i -p tcp -s / --dport 6789 -j ACCEPT
/sbin/service iptables save
mon节点开启6789端口,osd节点开启6800:7100端口
三、对象存储集群部署:
注意:一切部署操作都是在部署节点进行的。
1、创建目录,存放配置文档:
mkdir my-cluster
cd my-cluster
默认生成的配置文件放在当前目录,所以在执行进一步操作前,应该先跳转到你创建的目录。
2、如果你在任何时候配置出错且需要重新配置的,可以执行以下命令清除配置:
ceph-deploy purgedata []
ceph-deploy forgetkeys
清除软件包可以使用如下命令,重新配置需要重装软件:
ceph-deploy purge []
3、创建集群(eg表示举例):
ceph-deploy --cluster new
例如:
ceph-deploy new mds-1 mds-2
本地文件夹会生成三个文件,如下:ceph.conf 、ceph.log 、ceph.mon.keyring;
4、调整当前目录下的ceph.conf配置文件,添加如下行:
[global]
osd pool default size = 3(存储文件的总副本数,默认保留3个副本,实验环境可以修改为2个副本)
osd journal size = 1024
osd pool default pg num = 133 (推荐每个osd节点使用100个pg,计算方法:4x100/3(副本数))
osd pool default pgp num = 133
public network = 10.9.32.0/24 (如果有多块网卡的话,需要指定对外服务的公共网络,CIDR格式,例如:10.9.32.0/24,没有的话可以省略;
cluster network = 10.80.20.0/24 (单网卡情形下,cluster_network可以忽略不设)
[mon]
mon_clock_drift_allowed = .15 (mon管理节点时间同步允许误差)
mon_clock_drift_warn_backoff = 30
[client]
rbd cache = true
rbd cache writethrough until flush = true
5、安装ceph组件(未指定版本下,默认安装ceph的最新版本):
ceph-deploy install --release giant/hammer [ ...]
例如:
ceph-deploy install --release hammer mds-1 mds-2 osd-1 osd-2 osd-3 osd-4
6、初始化mon节点:
ceph-deploy mon create-initial (ceph-deploy v1.1.3)
老版的ceph-deploy需要执行俩步:
第一步: ceph-deploy mon create
例如 : ceph-deploy mon create node1
第二步:ceph-deploy gatherkeys
例如 :ceph-deploy gatherkeys node1
这一步会产生三个文件,分别为:.client.admin.keyring、.bootstrap-osd.keyring、.bootstrap-mds.keyring
7、添加osd节点:
由于我们使用一块单独的xfs分区作为osd的后端文件存储空间,部署如下:
列出目标osd节点的磁盘分区情况,命令如下:
ceph-deploy disk list
如果分区不是我们使用的xfs存储分区格式,则需要先对其进行格式化,在osd节点上执行如下命令:
mkfs.xfs -f /dev/sda5
格式化整块磁盘使用命令(慎用):
ceph-deploy disk zap :
例如:
ceph-deploy disk zap osd-1:sdb
创建并激活osd节点:
ceph-deploy osd create :[:]
例如:
ceph-deploy osd create osd-1:/dev/sda5
或者使用以下步骤分别进行准备和激活:
准备osd节点:
ceph-deploy osd prepare :[:]
例如:
ceph-deploy osd prepare osd-1:/dev/sda5[:/dev/ssd]
(如果你有SSD固态硬盘的话,可以用来作文日志存储,没有的话日志默认存储在osd卷存储分区中)
激活osd节点:
ceph-deploy osd activate :[:]
例如:
ceph-deploy osd activate osd-1:/dev/sda5:/dev/ssd1
创建挂载点以及配置开机自动挂载:
方法一:
mkdir /var/lib/ceph/osd/ceph-;
修改fstab文件,添加如下行:
/var/lib/ceph/osd/ceph-xfs defaults 0 2
例如(注意的是:defaults, 而不是default):
/dev/sda5 /var/lib/ceph/osd/ceph-5 xfs defaults 0 2
方法二:
编辑rc.local文件,添加如下行:
/bin/mount -t xfs /dev/sda5 /var/lib/ceph/osd/ceph-5
/etc/init.d/ceph -a start
这种方法更加有效些。
8、拷贝并分发配置文件至个节点:
ceph-deploy admin
例如:
ceph-deploy admin admin-node node1 node2 node3
9、修改权限:
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
10、检查集群状况:
ceph health
ceph -s
如下:
cluster 86d446a0-221b-44d4-95c1-7fe174d94946
health HEALTH_OK (只有在创建了pool后集群状态才会显示为"HEALTH_OK"状态)
monmap e2: 2 mons at , election epoch 32, quorum 0,1 mds-1,mds-2
mdsmap e16: 1/1/1 up , 1 up:standby
osdmap e52: 4 osds: 4 up, 4 in
pgmap v25841: 832 pgs, 4 pools, 50133 MB data, 13376 objects
208 GB used, 6495 GB / 6703 GB avail
832 active+clean
11、添加元数据节点(如果不使用的ceph文件系统,则该步骤可以省略):
ceph-deploy mds create
例如:
ceph-deploy mds create node1
现在ceph集群运行只有一个mds节点,你可能想要更多,但当前ceph集群里还没有对ceph多元数据节点的非商业支持。
12、如果你想添加额外的mon节点可以使用以下命令:
ceph-deploy mon create
ceph quorum_status --format json-pretty (检查同步状态)
例如:
ceph-deploy mon create node2 node3
三、ceph文件系统使用:
在客户端安装ceph软件并获取配置文件:
ceph-deploy install client-node
ceph-deploy admin client-node
查看集群状态:
ceph -s [-m ] [-k ]
创建文件系统:
ceph osd pool create cephfs_data
ceph osd pool create cephfs_metadata
ceph fs new cephfs_metadata cephfs_data
创建秘钥文件:
cat ceph.client.admin.keyring
结果:
[client.admin]
key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
拷贝秘钥AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==到一个新的文件(e.g admin.secret)
修改该文件权限,确保该文件只对指定的用户(eg:admin)开放,不对其他用户开放。
挂载主机:
mkdir /mnt/mycephfs
内核驱动(对系统内核版本有要求):
mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
用户空间(fuse):
apt-get install ceph-fuse
ceph-fuse -k ./ceph.client.admin.keyring -m 192.168.0.1:6789 /mnt/mycephfs
四、Ceph块存储使用:
创建与挂载:
1、在客户端,执行命令创建一个块设备(不指定pool-name的话,默认使用rbd池):
rbd map /
例如:
rbd create foo --size 4096 [-m ] [-k /path/to/ceph.client.admin.keyring]
2、查询块设备信息使用如下命令:
rbd info foo
3、在客户端,执行如下命令将块设备映射到本地:
rbd map foo --name client.admin [-m ] [-k /path/to/ceph.client.admin.keyring]
4、按需求格式化映射到本地的rbd块:
mkfs.ext4 /dev/rbd0
5、挂载分区到本地目录:
mkdir /home/block
mount /dev/rbd0 /home/block
卸载与销毁:
1、卸载Rbd分区:
umount /dev/rbd0
2、取消远程块设备的本地映射:
rbdunmap foo
3、销毁块设备:
rbdrm foo
备注:
开启或关闭服务:
/etc/init.d/ceph -a [start/stop/status] [mon/osd/mds.]
建立ceph管理员权限的主机:
ceph-deploy admin ;
升级集群配置文件:
ceph-deploy config push ;
ceph-deploy config hostname,基于基本主机名和id自增长。
恢复配置文件:
ceph-deploy config pull ;
mon:
添加mon节点:ceph-deploy mon create ;
删除mon节点:ceph-deploy mon destroy ;
mds:
添加mon节点:ceph-deploy mds create [:] [[:] ...]
删除mds节点:/etc/init.d/ceph stop mon
ceph mds rm
apt-get autoremove ceph-fuse ceph-mds libcephfs1 -y
apt-get purge ceph-fuse ceph-mds libcephfs1 -y
(使用cephfs最起码要保留一个mds节点)
osd:
添加osd节点:ceph-deploy osd prepare :[:];
ceph-deploy osd activate :[:];
(一步完成: ceph-deploy osd create :[:])
删除osd节点:
方法一: ceph-deploy disk list ;
ceph-deploy disk zap :;(这将会删除相应osd节点的所有数据)
方法二: ceph osd out osd. ( 例如:osd.5 )
/etc/init.d/ceph stop osd.
ceph osd crush remove osd.
ceph auth del osd.
ceph osd rm
移除ceph.conf配置文件中的相关osd节点信息:[osd.1]host =
pg/pgp:
Less than 5 OSDs set pg_num to 128
Between 5 and 10 OSDs set pg_num to 512
Between 10 and 50 OSDs set pg_num to 4096
If you have more than 50 OSDs, you need to understand the tradeoffs and how to calculate the pg_num value by yourself
(OSDs * 100)
Total PGs = ------------ [ this could help you get a baseline]
pool size
参考文档:
http://docs.ceph.com/docs/master/
http://docs.ceph.com/docs/hammer/rados/operations/placement-groups/
领取专属 10元无门槛券
私享最新 技术干货