@gump88
2016-07-23T12:36:30.000000Z
字数 3987
阅读 2197
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 libtoolsudo apt-get install autoconfsudo apt-get install pkg-config./autogen.sh
sudo apt-get install libsnappy-devsudo apt-get install libleveldb-devsudo apt-get install uuid-devsudo apt-get install libblkid-devsudo apt-get install libudev-devsudo apt-get install libkeyutils-devsudo apt-get install libcrypto++-devsudo apt-get install libfuse-devsudo 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.shsudo ./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-libxfssudo make -j4sudo make install
首先说明,下面出现的node1都是主机名
/etc下有ceph目录,如果没有mkdir cephtouch /etc/ceph/ceph.confuuidgen。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-d0aeaca0e993mon initial members = node1mon host = 192.168.0.1public network = 192.168.0.0/24auth cluster required = cephxauth service required = cephxauth client required = cephxosd journal size = 1024filestore xattr use omap = trueosd pool default size = 2osd pool default min size = 1osd pool default pg num = 333osd pool default pgp num = 333osd 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=1losetup /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状态图如下:
