ceph ubuntu14.10 手动安装

来源:互联网 发布:方维借贷源码 编辑:程序博客网 时间:2024/05/22 17:02

搭建环境:Ubuntu14.10
Ceph版本,0.80.09
参考网址:http://mirrors.myccdn.info/ceph/doc/docs_zh/output/html/
 环境为三个节点:
10.1.105.31 node1 (管理节点)
10.1.105.32 node2
10.1.105.33 node3


以下都是在root权限下操作

1.准备

在所有节点中修改/etc/ssh/sshd_config文件:(如果没有此文件,说明没有安装openssh-server,apt-get install openssh-server)
#vi /etc/ssh/sshd_config
把PermitRootLogin without-password
改为PermitRootLogin yes
然后执行service ssh restart
 
在所有节点中修改主机名:
 #vi /etc/hostname (默认user改成node1, node2, node3)
设置各节点的hosts文件
#vi /etc/hosts
把默认的127.0.1.1 user 修改成 127.0.1.1 node1(node1, node2, node3)
同时添加以下:
10.1.105.31 node1 
10.1.105.32 node2
10.1.105.33 node3
获得ssh-keygen,几个节点相互复制,保证能够无密码访问
 #ssh-keygen(按回车,设置无密码)
复制密匙到各个节点,在每个节点执行:
ssh-copy-id root@node1 && ssh-copy-id root@node2 && ssh-copy-id root@node3
检验是否可以相互无密码访问
在node1节点输入#ssh node2, #ssh node3,以此类推。


完成后在每个节点上安装依赖库:
apt-get install libaio1 libsnappy1 libcurl3 curl libgoogle-perftools4 google-perftools libleveldb1


apt-get install autotools-dev autoconf automake cdbs gcc g++ git libboost-dev libedit-dev libssl-dev libtool libfcgi libfcgi-dev libfuse-dev linux-kernel-headers libcrypto++-dev libcrypto++ libexpat1-dev


apt-get install uuid-dev libkeyutils-dev libgoogle-perftools-dev libatomic-ops-dev libaio-dev libgdata-common libgdata1* libsnappy-dev libleveldb-dev
 
apt-get update
此环境下可以直接安装ceph库
apt-get update && apt-get install ceph-deploy


此步骤之后有两种方法搭建ceph:
一,创建配置文件ceph.conf,从配置文件启动。
二,用ceph-deploy安装一个node1节点后,把其他的osd和mds通过它一个个加进来。
 
我用的第二种方法,以下步骤均在node1管理节点上执行:
# ceph-deploy install node1 node2 node3 (此前确保依赖库都安装完成,否则会出错)
这样就把ceph集群也安装在其他的节点。


在每个节点上,安装对象网关,
apt-get install radosgw
结束后 #ceph -v 可查看ceph版本(0.80.1)


2.手动部署集群

2.1登录到初始监视器节点

ssh {hostname}
如:
ssh node1

2.2确保保存 Ceph 配置文件的目录存在, Ceph 默认使用 /etc/ceph 。安装 ceph 软件时,安装器也会自动创建 /etc/ceph/ 目录。

ls /etc/ceph
注意:部署工具在清除集群时可能删除此目录(如 ceph-deploy purgedata {node-name} 、 ceph-deploy purge {node-name} )。

2.3创建 Ceph 配置文件, Ceph 默认使用 ceph.conf ,其中的 ceph 是集群名字。

vi /etc/ceph/ceph.conf

2.4给集群分配惟一 ID (即 fsid )。

uuidgen

2.5把此 ID 写入 Ceph 配置文件。

fsid = {UUID}
例如:
fsid = 78674106-22cb-495f-a1dc-cca43119b4d1

2.6把初始监视器写入 Ceph 配置文件。

mon initial members = {hostname}[,{hostname}]
例如:
mon initial members = node1, node2, node3

2.7把初始监视器的 IP 地址写入 Ceph 配置文件、并保存。

mon host = {ip-address}[,{ip-address}]
例如:
mon host = 10.1.105.31, 10.1.105.32, 10.1.105.33
注意: 你也可以写 IPv6 地址,但是必须设置 ms bind ipv6 = true 。

2.8为此集群创建密钥环、并生成监视器密钥。

ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

2.9生成管理员密钥环,生成 client.admin 用户并加入密钥环。

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'

2.10把 client.admin 密钥加入 ceph.mon.keyring 。

ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

2.11用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存为 /tmp/monmap 。

monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
例如:
monmaptool --create --add node1 10.1.105.31 --fsid 291e791b-100a-4298-b3e8-63be6ff9852b /tmp/monmap

2.12在监视器主机上分别创建数据目录。

sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
例如:
sudo mkdir /var/lib/ceph/mon/ceph-node1

2.13用监视器图和密钥环组装守护进程所需的初始数据。

ceph-mon --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
例如:
ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
仔细斟酌 Ceph 配置文件,公共的全局配置包括这些:
[global]
fsid = {cluster-id}
mon initial members = {hostname}[, {hostname}]
mon host = {ip-address}[, {ip-address}]
public network = {network}[, {network}]
cluster network = {network}[, {network}]
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = {n}
filestore xattr use omap = true
osd pool default size = {n}  # Write an object n times.
osd pool default min size = {n} # Allow writing n copy in a degraded state.
osd pool default pg num = {n}
osd pool default pgp num = {n}
osd crush chooseleaf type = {n}
按前述实例, [global] 段的配置大致如下:
[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

2.14建一个空文件 done ,表示监视器已创建、可以启动了:

sudo touch /var/lib/ceph/mon/ceph-node1/done

2.15启动监视器。

在 Ubuntu 上用 Upstart :
sudo start ceph-mon id=node1
要使此守护进程开机自启,需要创建两个空文件,像这样:
sudo touch /var/lib/ceph/mon/{cluster-name}-{hostname}/upstart
例如:
sudo touch /var/lib/ceph/mon/ceph-node1/upstart
验证下 Ceph 已经创建了默认存储池。
ceph osd lspools
你应该会看到这样的输出:
0 data,1 metadata,2 rbd,
确认下集群在运行。
ceph -s
你应该从输出里看到刚刚启动的监视器在正常运行,并且应该会看到一个健康错误:它表明归置组卡在了 stuck inactive 状态。输出大致如此:
cluster a7f64266-0894-4f1e-a635-d0aeaca0e993
  health HEALTH_ERR 192 pgs stuck inactive; 192 pgs stuck unclean; no osds
  monmap e1: 1 mons at {node1=192.168.0.1:6789/0}, election epoch 1, quorum 0 node1
  osdmap e1: 0 osds: 0 up, 0 in
  pgmap v2: 192 pgs, 3 pools, 0 bytes data, 0 objects
     0 kB used, 0 kB / 0 kB avail
     192 creating
注意: 一旦你添加了 OSD 并启动,归置组健康错误应该消失,详情见下一节。

3.添加OSD

以下操作在所有节点上
你的初始监视器可以正常运行后就可以添加 OSD 了。要想让集群达到 active + clean 状态,必须安装足够多的 OSD 来处理对象副本(如 osd pooldefault size = 2 需要至少 2 个 OSD )。在完成监视器自举引导后,集群就有了默认的 CRUSH 图,但现在此图还是空的,里面没有任何 OSD 映射到 Ceph 节点。此处添加osd有几种方法添加。

3.1方法一:

3.1.1收集密钥

在管理节点node1中
ceph-deploy gatherkeys mona

3.1.2在新 OSD 主机上创建默认目录

ssh {new-osd-host}
sudo mkdir /var/lib/ceph/osd/ceph-{osd-number}
ceph-deploy osd prepare node1:/var/lib/ceph/osd/ceph-osd-0/
ceph-deploy osd prepare node2:/var/lib/ceph/osd/ceph-osd-1/
ceph-deploy osd prepare node3:/var/lib/ceph/osd/ceph-osd-2/

3.1.3如果要把 OSD 装到非系统盘的独立硬盘上,先创建文件系统、然后挂载到刚创建的目录下:

ssh {new-osd-host}
sudo mkfs -t {fstype} /dev/{hdd}
sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/ceph-{osd-number}
在节点node1上
mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-osd-0
在节点node2上
mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-osd-1
在节点node3上
mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-osd-2

3.1.4准备节点

ceph-deploy osd prepare node1:/var/lib/ceph/osd/ceph-osd-0/
ceph-deploy osd prepare node2:/var/lib/ceph/osd/ceph-osd-1/
ceph-deploy osd prepare node3:/var/lib/ceph/osd/ceph-osd-2/

3.1.4激活节点

ceph-deploy osd activate node1:/var/lib/ceph/osd/ceph-osd-0/
ceph-deploy osd activate node2:/var/lib/ceph/osd/ceph-osd-1/
ceph-deploy osd activate node3:/var/lib/ceph/osd/ceph-osd-2/


4.总结

监视器和两个 OSD 开始正常运行后,你就可以通过下列命令观察归置组互联过程了:
ceph -w
执行下列命令查看 OSD树:
ceph osd tree
你应该会看到类似如下的输出:
# id    weight  type name       up/down reweight
-1      2       root default
-2      2               host node1
0       1                       osd.0   up      1
-3      1               host node2
1       1                       osd.1   up      1




0 0
原创粉丝点击