Ceph 0.80 ubuntu14.04 多节点快速搭建

本人小菜鸟一只,刚接触Linux,第一件事就是学习搭建ceph,看书的确不如实战学的多学的快,在此写博客记录自己的历程,有很多不足的地方希望各位指正。

(原创博文,转载请说明出处)

搭建环境:Ubuntu14.04

Ceph版本,0.80

(我之前搭建过0.72版本的,默认至少需要1个mon节点,2个osd节点。但是0.80这个版本似乎默认需要3个osd节点。)

虚拟机搭建,用了四个节点(没有加mds):

         mona 172.16.4.12

         osda  172.16.4.13

         osdb  172.16.4.14

         osdc  172.16.4.10

 

偷一下懒,不另外创建用户了,直接用root。

允许root远程访问(因为学校的虚拟机设置了禁止远程访问,没有这个问题的朋友可以跳过此步骤):

修改/etc/ssh/sshd_config文件:

#vi /etc/ssh/sshd_config

把PermitRootLogin without-password

改为PermitRootLogin yes

sudo service sshrestart

( 别忘了重置一下root密码:#passwd root )

 

修改主机名:

         #vi /etc/hostname (默认user改成mona, osda, osdb, osdc)

设置各节点的hosts文件

         #vi /etc/hosts

把默认的127.0.1.1 user 修改成 127.0.1.1 mon(osda,osdb,osdc)

同时添加以下:

172.16.4.12 mona

172.16.4.13 osda

172.16.4.14 osdb

172.16.4.10 osdc

获得ssh-keygen,几个节点相互复制,保证能够无密码访问

         #ssh-keygen

得到以下内容:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:29:5c:d7:e4:0b:7b:9b:0e:83:84:90:7f:08:d6:ac root@mona
The key's randomart image is:
+--[ RSA 2048]----+
|                               |
|   +                          |
|  = o     .                 |
| . = o   +                 |
|  E + + S o            |
|   . + * o .               |
|    o = + o              |
|     .   + o                |
|         .+                  |
+---------------------+


复制密匙到各个节点:

# ssh-copy-id root@mona

# ssh-copy-id root@osda

# ssh-copy-id root@osdb

# ssh-copy-id root@osdc

         所有节点重复以上步骤。

检验是否可以相互无密码访问

         在mona节点输入#ssh osda, #ssh osdb, #ssh osdc

以此类推。

        

完成后在每个节点上安装依赖库:

#sudo apt-get install autotools-devautoconf automake cdbs gcc g++ git libboost-dev libedit-dev libssl-dev libtoollibfcgi libfcgi-dev libfuse-dev linux-kernel-headers libcrypto++-devlibcrypto++ libexpat1-dev pkg-config


# sudo apt-get install uuid-devlibkeyutils-dev libgoogle-perftools-dev libatomic-ops-dev libaio-devlibgdata-common libgdata13 libsnappy-dev libleveldb-dev

  

此环境下可以直接安装ceph库

        #apt-get update && apt-get install ceph ceph-common ceph-mds

         #apt-get install ceph-deploy

结束后 #ceph –v 可查看ceph版本(0.80.1)

        

此步骤之后有两种方法搭建ceph:

一,创建配置文件ceph.conf,从配置文件启动。

二,用ceph-deploy安装一个mon节点后,把其他的osd和mds通过它一个个加进来。

 

我用的第二种方法,以下步骤均在mon节点上执行:

# ceph-deployinstall mona osda osdb osdc (此前确保依赖库都安装完成,否则会出错)

 

到每个osd节点创建相应的文件夹:

         例如:# ssh osda

                   # mkdir /var/local/osd0

         (或者 # mkdir/var/lib/ceph/osd/ceph-0)

 

完成后创建集群的第一个节点,monitor节点

# ceph-deploymon create mona

[ceph_deploy.cli][INFO  ] Invoked (1.4.0): /usr/bin/ceph-deploy mon create mona
[ceph_deploy.mon][DEBUG ] Deploying mon, cluster ceph hosts mona
[ceph_deploy.mon][DEBUG ] detecting platform for host mona ...
[mona][DEBUG ] connected to host: mona 
[mona][DEBUG ] detect platform information from remote host
[mona][DEBUG ] detect machine type
[ceph_deploy.mon][INFO  ] distro info: Ubuntu 14.04 trusty
[mona][DEBUG ] determining if provided host has same hostname in remote
[mona][DEBUG ] get remote short hostname
[mona][DEBUG ] deploying mon to mona
[mona][DEBUG ] get remote short hostname
[mona][DEBUG ] remote hostname: mona
[mona][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[mona][DEBUG ] create the mon path if it does not exist
[mona][DEBUG ] checking for done path: /var/lib/ceph/mon/ceph-mona/done
[mona][DEBUG ] done path does not exist: /var/lib/ceph/mon/ceph-mona/done
[mona][INFO  ] creating keyring file: /var/lib/ceph/tmp/ceph-mona.mon.keyring
[mona][DEBUG ] create the monitor keyring file
[mona][INFO  ] Running command: ceph-mon --cluster ceph --mkfs -i mona --keyring /var/lib/ceph/tmp/ceph-mona.mon.keyring
[mona][DEBUG ] ceph-mon: mon.noname-a 172.16.4.12:6789/0 is local, renaming to mon.mona
[mona][DEBUG ] ceph-mon: set fsid to d6913f95-55cd-4b06-9696-484d6167b2fa
[mona][DEBUG ] ceph-mon: created monfs at /var/lib/ceph/mon/ceph-mona for mon.mona
[mona][INFO  ] unlinking keyring file /var/lib/ceph/tmp/ceph-mona.mon.keyring
[mona][DEBUG ] create a done file to avoid re-doing the mon deployment
[mona][DEBUG ] create the init path if it does not exist
[mona][DEBUG ] locating the `service` executable...
[mona][INFO  ] Running command: initctl emit ceph-mon cluster=ceph id=mona
[mona][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.mona.asok mon_status
[mona][DEBUG ] ********************************************************************************
[mona][DEBUG ] status for monitor: mon.mona
[mona][DEBUG ] {
[mona][DEBUG ]   "election_epoch": 2, 
[mona][DEBUG ]   "extra_probe_peers": [], 
[mona][DEBUG ]   "monmap": {
[mona][DEBUG ]     "created": "0.000000", 
[mona][DEBUG ]     "epoch": 1, 
[mona][DEBUG ]     "fsid": "d6913f95-55cd-4b06-9696-484d6167b2fa", 
[mona][DEBUG ]     "modified": "0.000000", 
[mona][DEBUG ]     "mons": [
[mona][DEBUG ]       {
[mona][DEBUG ]         "addr": "172.16.4.12:6789/0", 
[mona][DEBUG ]         "name": "mona", 
[mona][DEBUG ]         "rank": 0
[mona][DEBUG ]       }
[mona][DEBUG ]     ]
[mona][DEBUG ]   }, 
[mona][DEBUG ]   "name": "mona", 
[mona][DEBUG ]   "outside_quorum": [], 
[mona][DEBUG ]   "quorum": [
[mona][DEBUG ]     0
[mona][DEBUG ]   ], 
[mona][DEBUG ]   "rank": 0, 
[mona][DEBUG ]   "state": "leader", 
[mona][DEBUG ]   "sync_provider": []
[mona][DEBUG ] }
[mona][DEBUG ] ********************************************************************************
[mona][INFO  ] monitor: mon.mona is running
[mona][INFO  ] Running command: ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.mona.asok mon_status

 

收集密匙:# ceph-deploy gatherkeys mona

[ceph_deploy.cli][INFO  ] Invoked (1.4.0): /usr/bin/ceph-deploy gatherkeys mona
[ceph_deploy.gatherkeys][DEBUG ] Checking mona for /etc/ceph/ceph.client.admin.keyring
[mona][DEBUG ] connected to host: mona 
[mona][DEBUG ] detect platform information from remote host
[mona][DEBUG ] detect machine type
[mona][DEBUG ] fetch remote file
[ceph_deploy.gatherkeys][DEBUG ] Got ceph.client.admin.keyring key from mona.
[ceph_deploy.gatherkeys][DEBUG ] Have ceph.mon.keyring
[ceph_deploy.gatherkeys][DEBUG ] Checking mona for /var/lib/ceph/bootstrap-osd/ceph.keyring
[mona][DEBUG ] connected to host: mona 
[mona][DEBUG ] detect platform information from remote host
[mona][DEBUG ] detect machine type
[mona][DEBUG ] fetch remote file
[ceph_deploy.gatherkeys][DEBUG ] Got ceph.bootstrap-osd.keyring key from mona.
[ceph_deploy.gatherkeys][DEBUG ] Checking mona for /var/lib/ceph/bootstrap-mds/ceph.keyring
[mona][DEBUG ] connected to host: mona 
[mona][DEBUG ] detect platform information from remote host
[mona][DEBUG ] detect machine type
[mona][DEBUG ] fetch remote file
[ceph_deploy.gatherkeys][DEBUG ] Got ceph.bootstrap-mds.keyring key from mona.


准备osd节点:

# ceph-deploy osd prepareosda:/var/local/osd0 osdb:/var/local/osd1 osdc:/var/local/osd2

(略长,不复制了。 可能存在warning说不存在osd keying,ceph自己会创建,直接无视之)


激活osd节点:

# ceph-deploy osd activateosda:/var/local/osd0 osdb:/var/local/osd1 osdc:/var/local/osd2

(会有很多warning,最后看到add key for osd.X,就没问题了)

 

DONE!

 

查看ceph health,有degraded,inactive,unclean的pg,执行以下命令可以解决

# ceph pg dump_stuck stale

# ceph pg dump_stuck inactive

# ceph pg dump_stuck unclean

(这里可能需要等一会儿)

最后得到如下图



查看osd状态如图 #ceph osd tree



PS:之前一直搭建失败,health检查一直出错,一些pg degraded+unactive+unclean,ceph无法自动处理这些问题,原因就是0.80的ceph默认3个pool,需要3个osd支持,我之前只搭了2个,导致一部分pg没有地方放(暂且这样理解吧),所以ceph也无法自愈了。加到3个osd之后问题就解决了。 如图:



图中有4个osd,是我后来测试系统加上去的,大家不要在意,无视即可。

默认pool的数量是也可以自己设置。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值