Ceph集群配置

来源:互联网 发布:服装设计打版软件 编辑:程序博客网 时间:2024/04/28 11:58
一、基本配置:


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/{username} -m {username}
passwd {username}
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/{username}


5、添加/etc/hosts本地解析文件:
10.9.32.81 osd-1
10.9.32.82 osd-2
10.9.32.83 osd-3
10.9.32.84 osd-4
10.9.32.85 mds-1
10.9.32.86 mds-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 {iface} -p tcp -s {ip-address}/{netmask} --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-node} [{ceph-node}]
ceph-deploy forgetkeys
清除软件包可以使用如下命令,重新配置需要重装软件:
ceph-deploy purge {ceph-node} [{ceph-node}]
3、创建集群(eg表示举例):
ceph-deploy --cluster {cluster-name} new {initial-monitor-node(s)}
例如: 
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-node}[{ceph-node} ...]
例如:
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-node}
例如 : ceph-deploy mon create node1
第二步:ceph-deploy gatherkeys {ceph-node}
例如 :ceph-deploy gatherkeys node1
这一步会产生三个文件,分别为:{cluster-name}.client.admin.keyring、{cluster-name}.bootstrap-osd.keyring、{cluster-name}.bootstrap-mds.keyring
7、添加osd节点:
由于我们使用一块单独的xfs分区作为osd的后端文件存储空间,部署如下:
列出目标osd节点的磁盘分区情况,命令如下:
ceph-deploy disk list {node-name [node-name]...}

如果分区不是我们使用的xfs存储分区格式,则需要先对其进行格式化,在osd节点上执行如下命令:
mkfs.xfs -f /dev/sda5
格式化整块磁盘使用命令(慎用):
ceph-deploy disk zap {osd-server-name}:{disk-name}
例如:
ceph-deploy disk zap osd-1:sdb

创建并激活osd节点:
ceph-deploy osd create {node-name}:{disk}[:{path/to/journal}]
例如:
ceph-deploy osd create osd-1:/dev/sda5
或者使用以下步骤分别进行准备和激活:
准备osd节点:
ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]
例如:
ceph-deploy osd prepare osd-1:/dev/sda5[:/dev/ssd]
(如果你有SSD固态硬盘的话,可以用来作文日志存储,没有的话日志默认存储在osd卷存储分区中)
激活osd节点:
ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}]
例如:
ceph-deploy osd activate osd-1:/dev/sda5:/dev/ssd1
创建挂载点以及配置开机自动挂载:
方法一:
mkdir /var/lib/ceph/osd/ceph-{osd-number};
修改fstab文件,添加如下行:
{data-disk-partition}  /var/lib/ceph/osd/ceph-{osd-number}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 {admin-node} {ceph-node}
例如:
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 {mds-1=10.9.32.85:6789/0,mds-2=10.9.32.86:6789/0}, election epoch 32, quorum 0,1 mds-1,mds-2
mdsmap e16: 1/1/1 up {0=mds-1=up:active}, 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-node}
例如:
ceph-deploy mds create node1
现在ceph集群运行只有一个mds节点,你可能想要更多,但当前ceph集群里还没有对ceph多元数据节点的非商业支持。
12、如果你想添加额外的mon节点可以使用以下命令:
ceph-deploy mon create {ceph-node}
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 {monitor-ip-address}] [-k {path/to/ceph.client.admin.keyring}]
创建文件系统:
ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>
ceph fs new <fs_name> 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 {pool-name}/{image-name}
例如:
rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
2、查询块设备信息使用如下命令:
rbd info foo
3、在客户端,执行如下命令将块设备映射到本地:
rbd map foo --name client.admin [-m {mon-IP}] [-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、取消远程块设备的本地映射:
rbd unmap foo
3、销毁块设备:
rbd rm foo

备注:
开启或关闭服务:
/etc/init.d/ceph -a [start/stop/status] [mon/osd/mds.{num}]

建立ceph管理员权限的主机:
ceph-deploy admin {host-name [host-name]...};

升级集群配置文件:
ceph-deploy config push {host-name [host-name]...};
ceph-deploy config hostname{1,2,3,4,5},基于基本主机名和id自增长。


恢复配置文件:
ceph-deploy config pull {host-name [host-name]...};

mon:
添加mon节点:ceph-deploy mon create {host-name [host-name]...};
删除mon节点:ceph-deploy mon destroy {host-name [host-name]...};

mds:
添加mon节点:ceph-deploy mds create {host-name}[:{daemon-name}] [{host-name}[:{daemon-name}] ...]
删除mds节点:/etc/init.d/ceph stop mon
ceph mds rm <int[0-]> <name (hostname)>
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 {node-name}:{data-disk}[:{journal-disk}];
ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}];
(一步完成: ceph-deploy osd create {node-name}:{disk}[:{path/to/journal}])
删除osd节点:
方法一: ceph-deploy disk list {node-name [node-name]...};
ceph-deploy disk zap {osd-server-name}:{disk-name};(这将会删除相应osd节点的所有数据)
方法二: ceph osd out osd.{osd-num} ( 例如:osd.5 )
/etc/init.d/ceph stop osd.{osd-num}
ceph osd crush remove osd.{osd-num}
ceph auth del osd.{osd-num}
ceph osd rm {osd-num}
移除ceph.conf配置文件中的相关osd节点信息:[osd.1]host = {hostname}
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/
0 0
原创粉丝点击