返回
基础
分类

2、给每个节点安装系统,客户端可以通过mount

日期: 2020-01-02 07:52 浏览次数 : 70

Ceph 单/多节点 安装小结 Power by CentOS 6.x

概述

Docs :

Ceph是一个分布式文件系统,在维持POSIX兼容性的同时加入了复制和容错功能。Ceph最大的特点是分布式的元数据服务器,通过CRUSH(Controlled Replication Under Scalable Hashing)这种拟算法来分配文件的location。Ceph的核心是RADOS(ReliableAutonomic Distributed Object Store),一个对象集群存储,本身提供对象的高可用、错误检测和修复功能。

Ceph生态系统架构可以划分为四部分:

client:客户端(数据用户)。client向外export出一个POSIX文件系统接口,供应用程序调用,并连接mon/mds/osd,进行元数据及数据交互;最原始的client使用FUSE来实现的,现在写到内核里面了,需要编译一个ceph.ko内核模块才能使用。
mon:集群监视器,其对应的daemon程序为cmon(Ceph Monitor)。mon监视和管理整个集群,对客户端export出一个网络文件系统,客户端可以通过mount -t ceph monitor_ip:/ mount_point命令来挂载Ceph文件系统。根据官方的说法,3个mon可以保证集群的可靠性。
mds:元数据服务器,其对应的daemon程序为cmds(Ceph Metadata Server)。Ceph里可以有多个MDS组成分布式元数据服务器集群,就会涉及到Ceph中动态目录分割来进行负载均衡。
osd:对象存储集群,其对应的daemon程序为cosd(Ceph Object StorageDevice)。osd将本地文件系统封装一层,对外提供对象存储的接口,将数据和元数据作为对象存储。这里本地的文件系统可以是ext2/3,但Ceph认为这些文件系统并不能适应osd特殊的访问模式,它们之前自己实现了ebofs,而现在Ceph转用btrfs。

Ceph支持成百上千甚至更多的节点,以上四个部分最好分布在不同的节点上。当然,对于基本的测试,可以把mon和mds装在一个节点上,也可以把四个部分全都部署在同一个节点上。

环境
hostname    ip            role          filesystem  release
master01    192.168.9.10  mon,mds,osd    xfs          CentOS release 6.7[2.6.32-573.8.1.el6.x86_64]
agent01    192.168.9.20  osd,[mon,mds]  xfs          CentOS release 6.7[2.6.32-573.8.1.el6.x86_64]
ocean-lab  192.168.9.70  client        xfs          CentOS release 6.7[4.3.0-1.el6.elrepo.x86_64]

版本
^_^[16:26:11][[email protected] ~]#ceph -v
ceph version 0.80.5 (38b73c67d375a2552d8ed67843c8a65c2c0feba6)

Repo
Epel
yum install ceph ceph-common python-ceph
yum install ceph-fuse        # for client

host 解析
192.168.9.10    master01.ocean.org  master01
192.168.9.20    agent01.ocean.org    agent01
192.168.9.70    ocean-lab.ocean.org  ocean-lab

Ceph 配置
^_^[16:26:15][[email protected] ~]#cat /etc/ceph/ceph.conf
[global]
public network = 192.168.9.0/24
pid file = /var/run/ceph/$name.pid
auth cluster required = none
auth service required = none
auth client required = none
keyring = /etc/ceph/keyring.$name
osd pool default size = 1
osd pool default min size = 1
osd pool default crush rule = 0
osd crush chooseleaf type = 1

[mon]
mon data = /var/lib/ceph/mon/$name
mon clock drift allowed = .15
keyring = /etc/ceph/keyring.$name

[mon.0]
host = master01
mon addr = 192.168.9.10:6789

[mds]
keyring = /etc/ceph/keyring.$name

[mds.0]
host = master01

[osd]
osd data = /ceph/osd$id
osd recovery max active = 5
osd mkfs type = xfs
osd journal = /ceph/osd$id/journal
osd journal size = 1000
keyring = /etc/ceph/keyring.$name

[osd.0]
host = master01
devs = /dev/sdc1
   
[osd.1]
host = master01
devs = /dev/sdc2

启动ceph(在mon上执行)
初始化:
mkcephfs -a -c /etc/ceph/ceph.conf
/etc/init.d/ceph -a start

执行健康检查
ceph health            #也可以使用ceph -s命令查看状态
如果返回的是HEALTH_OK,则代表成功!

挂载ceph
mount
升级系统内核
kernel 2.6.34以前的版本是没有Module rbd的,把系统内核版本升级到最新
rpm --import
rpm -Uvh
必赢手机登录网址 ,yum --enablerepo=elrepo-kernel install kernel-ml  -y

安装完内核后修改/etc/grub.conf配置文件使
修改配置文件中的 Default=1 to Default=0

验证内核支持
#modprobe -l|grep ceph
kernel/fs/ceph/ceph.ko
kernel/net/ceph/libceph.ko
#modprobe  ceph
 
机器重启后生效 init 6

mount -t ceph 192.168.9.10:6789:/ /mnt/ceph
[17:07:39][[email protected] ~]$ df -TH
Filesystem          Type  Size  Used Avail Use% Mounted on
/dev/mapper/vg_oceani-lv_root
                    ext4    30G  7.7G  21G  28% /
tmpfs                tmpfs  111M    0  111M  0% /dev/shm
/dev/sda1            ext4  500M  94M  375M  21% /boot
192.168.9.10:/data2  nfs    30G  25G  4.0G  87% /mnt/log
192.168.9.10:6789:/  ceph  172G  5.4G  167G  4% /mnt/ceph

ceph-fuse [未测]
mon推荐有至少3个,假如挂掉一个、服务也能正常使用
ceph-fuse -m 192.168.9.10:6789,192.168.9.20:6789 /mnt/ceph

 

增加OSD

这里在agent01新增硬盘
[15:58:07][[email protected] ~]$ cat /etc/ceph/ceph.conf
[global]
public network = 192.168.9.0/24
pid file = /var/run/ceph/$name.pid
auth cluster required = none
auth service required = none
auth client required = none
keyring = /etc/ceph/keyring.$name
osd pool default size = 1
osd pool default min size = 1
osd pool default crush rule = 0
osd crush chooseleaf type = 1

[mon]
mon data = /var/lib/ceph/mon/$name
mon clock drift allowed = .15
keyring = /etc/ceph/keyring.$name

[mon.0]
host = master01
mon addr = 192.168.9.10:6789

[mds]
keyring = /etc/ceph/keyring.$name

[mds.0]
host = master01

[osd]
osd data = /ceph/osd$id
osd recovery max active = 5
osd mkfs type = xfs
osd journal = /ceph/osd$id/journal
osd journal size = 1000
keyring = /etc/ceph/keyring.$name

[osd.2]
host = agent01
devs = /dev/sdc1

[osd.3]
host = agent01
devs = /dev/sdc2

master01 ~ $ cd /etc/ceph; scp keyring.client.admin  agent01:/etc/ceph/
以下操作都在新增OSD节点上操作
初始化新增osd节点,需要在新增的节点机器上运行,这里在10.2.180.180上运行
ceph-osd -i 2 --mkfs --mkkey;
ceph-osd -i 3 --mkfs --mkkey;

加入节点
ceph auth add osd.2 osd 'allow *' mon 'allow rwx' -i /etc/ceph/keyring.osd.2;
ceph auth add osd.3 osd 'allow *' mon 'allow rwx' -i /etc/ceph/keyring.osd.3;
ceph osd create #added key for osd.2
ceph osd create #added key for osd.3
ceph osd rm osd_num    # 删除osd

/etc/init.d/ceph -a start osd.2 #启动osd.2
/etc/init.d/ceph -a start osd.3 #启动osd.3
/etc/init.d/ceph -a start osd  #启动所有osd
ceph -s #查看状态
ceph auth list #能查看所有认证节点

 

增加MDS

增加agent01 MDS到节点
将以下配置增加到配置文件,并同步到节点
[mds.1]
host = agent01
以下操作都在新增OSD节点上操作
生成key
ceph-authtool --create-keyring --gen-key -n mds.1 /etc/ceph/keyring.mds.1
加入认证
ceph auth add mds.1 osd 'allow *' mon 'allow rwx' mds 'allow' -i /etc/ceph/keyring.mds.1
启动新增MDS
/etc/init.d/ceph -a start mds.1

查看mds

^_^[10:06:51][[email protected] ~]# ceph mds stat

e50: 1/1/1 up {0=0=up:active}, 1 up:standby

 

 

增加MON

增加agent01 MDS到节点
将以下配置增加到配置文件,并同步到节点
[mon.1]
host = agent01
mon addr = 192.168.9.20:6789

导出key及mon map
mkdir /tmp/ceph
ceph auth get mon. -o /tmp/ceph/keyring.mon
ceph mon getmap -o /tmp/ceph/monmap

初始化新mon
ceph-mon -i 1 --mkfs --monmap /tmp/ceph/monmap --keyring /tmp/ceph/keyring.mon

启动新mon
ceph-mon -i 1 --public-addr 192.168.9.20:6789

加入quorum votes
ceph mon add 1 192.168.9.20:6789

查看mon

^_^[10:13:44][[email protected] ~]#ceph mon  stat

e2: 2 mons at {0=192.168.9.10:6789/0,1=192.168.9.20:6789/0}, election epoch 2, quorum 0,1 0,1

 

 

 

FAQ:

^_^[11:19:10][[email protected] ~]#/etc/init.d/ceph  -a start

=== mon.0 ===

Starting Ceph mon.0 on master01...already running

=== mds.0 ===

Starting Ceph mds.0 on master01...already running

=== osd.0 ===

Mounting xfs on master01:/ceph/osd0

Error ENOENT: osd.0 does not exist.  create it before updating the crush map

failed: 'timeout 30 /usr/bin/ceph -c /etc/ceph/ceph.conf --name=osd.0 --keyring=/etc/ceph/keyring.osd.0 osd crush create-or-move -- 0 0.04 host=master01 root=default'

@[email protected][11:20:59][[email protected] ~]#ceph osd create

0

@[email protected][11:21:11][[email protected] ~]#ceph osd create

1

^_^[11:21:20][[email protected] ~]#/etc/init.d/ceph start osd.1

=== osd.1 ===

Mounting xfs on master01:/ceph/osd1

create-or-move updated item name 'osd.1' weight 0.04 at location {host=master01,root=default} to crush map

Starting Ceph osd.1 on master01...

starting osd.1 at :/0 osd_data /ceph/osd1 /ceph/osd1/journal

在 CentOS 7.1 上安装分布式存储系统 Ceph 

Ceph环境配置文档 PDF  

CentOS 6.3上部署Ceph  

Ceph的安装过程  

HOWTO Install Ceph On FC12, FC上安装Ceph分布式文件系统  

Ceph 文件系统安装  

CentOS 6.2 64位上安装Ceph 0.47.2  

Ubuntu 12.04 Ceph分布式文件系统  

Fedora 14上安装 Ceph 0.24  

Ceph 的详细介绍:请点这里
Ceph 的下载地址:请点这里

本文永久更新链接地址:

单/多节点 安装小结 Power by CentOS 6.x 概述 Docs : Ceph是一个分布式文件系统,在维持POSIX兼容性的同时加入了复制和容...

SUSE Linux Enterprise Server 11 SP3上轻松搭建Ceph集群

在SUSE Linux Enterprise Server 11 SP3上轻松搭建Ceph集群。

环境简介:

一个mon节点,一个mds节点,三个osd节点,分别如下

192.168.239.131      ceph-mon
192.168.239.132      ceph-mds

192.168.239.160      ceph-osd0
192.168.239.161      ceph-osd1
192.168.239.162      ceph-osd2

1、从suse.com官网注册一个账号,下载SLES 11 SP3和SUSE Cloud 4的ISO

2、给每个节点安装系统,然后设置两个安装源,一个OS,一个SUSE Cloud 4

3、配置ceph-mon到其他节点的root用户无密码登录ssh

4、复制ceph-mon节点的/etc/hosts到其他节点

5、安装ceph

zypper -n install ceph ceph-radosgw

6、在ceph-mon节点上,使用setup.sh分别调用init-mon.sh , init-osd.sh , init-mds.sh自动配置mon,osd,mds。

setup.sh和init-mon.sh会进入当前目录下的./ceph文件夹,请务必在/etc以外的目录执行。

各个脚本的代码如下(仅供参考):

(1) setup.sh

 #!/bin/bash
 
### Stop all existed OSD nodes
printf "Killing all ceph-osd nodes..."
for i in 0 1 2;do
    ssh ceph-osd$i "killall -TERM ceph-osd"
    sleep 1
done
printf "Donen"
 
### Initialize mon on this system
killall -TERM ceph-mon
printf "Initializing ceph-mon on current node..."
./init-mon.sh
cd ./ceph
printf "Donen"
 
### Initialize osd services on nodes
for i in 0 1 2;do
    ../init-osd.sh ceph-osd$i $i
    sleep 1
done
 
### Initialize mds on remote node
printf "Initializing mds on ceph-mds..."
../init-mds.sh ceph-mds
printf "Donen"

(2) init-mon.sh

#!/bin/bash
 
fsid=$(uuidgen)
mon_node=$(hostname)
mon_ip=192.168.239.131
cluster_net=192.168.239.0/24
public_net=192.168.1.0/24
mon_data=/data/$mon_node
 
killall -TERM ceph-mon
 
rm -f /etc/ceph/ceph.conf /etc/ceph/*.keyring
rm -f /var/lib/ceph/bootstrap-mds/* /var/lib/ceph/bootstrap-osd/*
rm -f /var/log/ceph/*.log
 
confdir=./ceph
rm -fr $confdir
mkdir -p $confdir
cd $confdir
 
rm -fr $mon_data
mkdir -p $mon_data
 
cat > ceph.conf << EOF
[global]
    fsid                =    $fsid
    mon initial members        =    $mon_node
    mon host            =    $mon_ip
    public network            =    $public_net
    cluster network            =    $cluster_net
    auth cluster required        =    cephx
    auth service required        =    cephx
    auth client required        =    cephx
    osd journal size        =    1024
    filestore xattr use omap    =    true
EOF
 
ceph-authtool --create-keyring bootstrap-osd.keyring --gen-key -n client.bootstrap-osd
ceph-authtool --create-keyring bootstrap-mds.keyring --gen-key -n client.bootstrap-mds
 
ceph-authtool --create-keyring ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
ceph-authtool --create-keyring ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
ceph-authtool ceph.mon.keyring --import-keyring ceph.client.admin.keyring
 
monmaptool --create --add $mon_node $mon_ip --fsid $(grep fsid ceph.conf | awk '{ print $NF}') monmap
 
cp -a ceph.conf /etc/ceph
cp -a ceph.client.admin.keyring /etc/ceph
 
### Make filesystem for ceph-mon
ceph-mon --mkfs -i $mon_node --monmap monmap --keyring ceph.mon.keyring --mon-data $mon_data
 
### Start the ceph-mon service
ceph-mon -i $mon_node --mon-data $mon_data
 
### Initialize bootstrap keyrings
ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i bootstrap-mds.keyring
ceph auth add client.bootstrap-osd mon 'allow profile bootstrap-osd' -i bootstrap-osd.keyring

(3) init-osd.sh

#!/bin/bash
 
if [ $# -lt 2 ];then
    printf "Usage:$0 {host} {osd num}n" $0
    exit 1
fi
 
host=$1
osd_num=$2
 
ssh $host "killall -TERM ceph-osd"
ssh $host "rm -f /var/lib/ceph/bootstrap-osd/*keyring"
ssh $host "rm -fr /data/osd.$osd_num/*"
 
ssh $host "mkdir -p /var/lib/ceph/bootstrap-osd"
ssh $host "mkdir -p /data/osd.$osd_num"
 
scp ceph.conf ceph.client.admin.keyring $host:/etc/ceph
scp bootstrap-osd.keyring $host:/var/lib/ceph/bootstrap-osd/ceph.keyring
 
ssh $host "ceph osd create"
ssh $host "ceph-osd -i $osd_num --osd-data /data/osd.$osd_num --osd-journal /data/osd.$osd_num/journal --mkfs --mkkey"
ssh $host "ceph auth add osd.$osd_num osd 'allow *' mon 'allow profile osd' -i /data/osd.$osd_num/keyring"
ssh $host "ceph osd crush add-bucket $host host"
ssh $host "ceph osd crush move $host root=default"
ssh $host "ceph osd crush add osd.$osd_num 1.0 host=$host"
ssh $host "ceph-osd -i $osd_num --osd-data /data/osd.$osd_num --osd-journal /data/osd.$osd_num/journal"

(4) init-mds.sh

#!/bin/bash
 
if [ $# -lt 1 ];then
    printf "Usage:$0 {host}}n" $0
    exit 1
fi
 
 
mds_host=$1
mds_name=mds.$mds_host
mds_data=/data/$mds_name
keyfile=ceph.$mds_host.keyring
mon_host=ceph-mon:6789
 
### Stop current running mds daemons first
ssh $mds_host "killall -TERM ceph-mds"
ssh $mds_host "rm -f $mds_data/*"
ssh $mds_host "mkdir -p $mds_data"
 
### Clean the old keyring file first
rm -f $keyfile
 
### Create new keyring file
ceph-authtool -C -g -n $mds_name $keyfile
ceph auth add $mds_name mon 'allow profile mds' osd 'allow rwx' mds 'allow' -i $keyfile
 
scp
/etc/ceph/ceph.conf
/etc/ceph/ceph.client.admin.keyring $mds_host:/etc/ceph
scp $keyfile $mds_host:$mds_data/keyring
 
ssh $mds_host "ceph-mds -i $mds_host -n $mds_name -m $mon_host --mds-data=/data/mds.$mds_host"

脚本执行完之后会自动把服务启动,在ceph-mon节点上查看ceph集群状态:

ceph-mon:~ # ceph -s
    cluster 266900a9-b1bb-4b1f-9bd0-c509578aa9c9
    health HEALTH_OK
    monmap e1: 1 mons at {ceph-mon=192.168.239.131:6789/0}, election epoch 2, quorum 0 ceph-mon
    mdsmap e4: 1/1/1 up {0=ceph-mds=up:active}
    osdmap e17: 3 osds: 3 up, 3 in
      pgmap v23: 192 pgs, 3 pools, 1884 bytes data, 20 objects
            3180 MB used, 45899 MB / 49080 MB avail
                192 active+clean

osd状态:

ceph-mon:~ # ceph osd tree
# id    weight    type name    up/down    reweight
-1    3    root default
-2    1        host ceph-osd0
0    1            osd.0    up    1   
-3    1        host ceph-osd1
1    1            osd.1    up    1   
-4    1        host ceph-osd2
2    1            osd.2    up    1  

在ceph-mon节点上查看进程:

ceph-mon:~ # ps ax |grep ceph-mon
  8993 pts/0    Sl    0:00 ceph-mon -i ceph-mon --mon-data /data/ceph-mon

在ceph-osdX节点上查看进程:

ceph-osd0:~ # ps ax | grep ceph-osd
 13140 ?        Ssl    0:02 ceph-osd -i 0 --osd-data /data/osd.0 --osd-journal /data/osd.0/journal

在ceph-mds节点上查看进程:

ceph-mds:~ # ps ax |grep ceph-mds
 42260 ?        Ssl    0:00 ceph-mds -i ceph-mds -n mds.ceph-mds -m ceph-mon:6789 --mds-data=/data/mds.ceph-mds

7、由于SLES 11系列的内核还不支持ceph模块,您需要在客户端安装较高版本的内核才能获得mount.ceph的功能。mount.ceph命令用法如下:

mount.ceph  {mon ip/host}:/  {mount point} -o name=admin,secret={your keyring}

mount.ceph ceph-mon:/ /mnt/cephfs -v -o name=admin,secret=AQD5jp5UqPRtCRAAvpRyhlNI0+qEHjZYqEZw8A==

查看挂载状态:

ceph-mon:/etc/ceph # df -Ph
文件系统                容量  已用  可用 已用% 挂载点
/dev/mapper/rootvg-root  12G  5.3G  5.7G  49% /
udev                      12G  5.3G  5.7G  49% /dev
tmpfs                    12G  5.3G  5.7G  49% /dev/shm
/dev/sda1                185M  36M  141M  21% /boot
/dev/sdb1                16G  35M  16G    1% /data
192.168.239.131:/        48G  3.2G  45G    7% /mnt/cephfs

--------------------------------------分割线

Ceph环境配置文档 PDF

CentOS 6.3上部署Ceph

Ceph的安装过程

HOWTO Install Ceph On FC12, FC上安装Ceph分布式文件系统

Ceph 文件系统安装

CentOS 6.2 64位上安装Ceph 0.47.2

Ubuntu 12.04 Ceph分布式文件系统

Fedora 14上安装 Ceph 0.24

--------------------------------------分割线

Ceph 的详细介绍:请点这里
Ceph 的下载地址:请点这里

Linux Enterprise Server 11 SP3上轻松搭建Ceph集群 在SUSE Linux Enterprise Server 11 SP3上轻松搭建Ceph集群。 环境简介: 一个mon节点,一个mds节点,三...