Ceph集群配置

一、基本配置:

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/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180614G0DX3900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券