@gump88
2016-07-23T20:36:30.000000Z
字数 3987
阅读 2021
ceph
记录自己在Power机器上配置ceph cluster的过程,中间也踩了很多坑,不过磕磕绊绊最后配好了。
最终的cluster里有两个主机,ceph-intern-02和ceph-intern-04,两个都是虚机。
配置如下:
ceph-intern-02:monitor,3个osd
ceph-intern-04:2个osd
/etc/hostname
分别为自己指定的主机名,这里设置为ceph-intern-02
和ceph-intern-04
/etc/hosts
,将主机和相应的IP一一对应起来。项目组指定的ceph版本号为0.94.6wget http://download.ceph.com/tarballs/ceph-0.94.6.tar.gz
解压缩:tar -xfz ceph-0.94.6.tar.gz
./install-deps.sh
安装依赖包:
sudo apt-get install libtool
sudo apt-get install autoconf
sudo apt-get install pkg-config
./autogen.sh
sudo apt-get install libsnappy-dev
sudo apt-get install libleveldb-dev
sudo apt-get install uuid-dev
sudo apt-get install libblkid-dev
sudo apt-get install libudev-dev
sudo apt-get install libkeyutils-dev
sudo apt-get install libcrypto++-dev
sudo apt-get install libfuse-dev
sudo apt-get install libaio-dev
安装boost库
wget https://sourceforge.net/projects/boost/files/boost/1.61.0/boost_1_61_0.tar.gz
解压安装
tar -xf boost_1_61_0.tar.gz
./bootstrap.sh
sudo ./bjam --with-date_time --with-system --with-regex --with-thread --with-filesystem --with-serialization --with-iostreams --with-math --with-mpi --with-program_options --with-python --with-math --with-signals --layout=tagged install variant=debug,release link=static --runtime-link=static threading=multi stage
. 使用源码安装ceph
./configure --without-tcmalloc --without-libatomic-ops --without-libxfs
sudo make -j4
sudo make install
首先说明,下面出现的node1都是主机名
/etc
下有ceph目录,如果没有mkdir ceph
touch /etc/ceph/ceph.conf
uuidgen
。fsid = {uuid}
mon initial members = {hostname}
mon host = {ip-address}[,{ip-address}]
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'
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
最后ceph.conf配置文件大概是这样的
[global]
fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
mon initial members = node1
mon host = 192.168.0.1
public network = 192.168.0.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
filestore xattr use omap = true
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
sudo touch /var/lib/ceph/mon/ceph-node1/done
sudo ceph-mon -i node1
这里有一个问题,就是我在配置的时候使用常规的start ceph-mon id=node1
无法开启服务,只能使用ceph-mon -i node1
来开启服务,具体原因未知。
因为目前只配置了monitor,cluster里还没有osd,所以当我们执行ceph -s
时会看见warn的情况,下面同样还在这台vm上配置三个osd。三个osd的配置大致相同,下面就记录下第一个osd的配置情况。
uuidgen
ceph osd create [{uuid} [{id}]]
sudo mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number}
这里的osd-number就是创建osd时返回的osd号。假如你是第一次创建osd,那么返回的就是0,如果是第二次创建osd,那么返回的就是1...
sudo mkfs -t {fstype} /dev/{hdd}
mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/{cluster-name}-{osd-number}
这里因为我们使用的是vm,没有独立的硬盘,所以自己创建一个块设备,模拟硬盘。过程如下:
dd if=/dev/zero of=loopback_file1 bs=1024M count=1
losetup /dev/loop0 loopback_file1
这样就可以把/dev/loop0当成一个硬件来处理了。
初始化OSD数据目录
sudo ceph-osd -i {osd-num} --mkfs --mkkey --osd-uuid [{uuid}]
这里的--mkkey
选项有点奇葩,有时得加上,有时不需要加上,不然就无法生成keyring。
注册此OSD的密钥
sudo ceph auth add osd.{osd-num} osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/{cluster-name}-{osd-num}/keyring
ceph [--cluster {cluster-name}] osd crush add-bucket {hostname} host
ceph osd crush move node1 root=default
ceph-osd -i {osd-num}
可以在新建sysvinit命令,设置开机自启动
touch /var/lib/ceph/osd/{cluster-name}-{osd-num}/sysvinit
最后使用ceph -s
命令查看当前集群状态为OK就可以了。
ceph状态图如下: