使用ceph-deploy 2.0.0 部署ceph 12.2.5集群

本文详细介绍了如何使用ceph-deploy 2.0.0在CentOS 7.2.1511环境下部署ceph 12.2.5集群,包括硬件和软件准备、安装步骤、配置网络、部署集群、添加mon、mgr、osd、mds、rgw和cephfs。过程中涉及静态IP配置、SSH密钥生成、防火墙关闭、yum源安装、ceph软件包安装以及ceph-deploy的使用等关键步骤。
摘要由CSDN通过智能技术生成

1. 环境

1.1 硬件

4台 Linux虚拟机: server0, server1, server2, server3
每台有两块磁盘 : /dev/vdb, /dev/vdc
每台有两块网卡 :eth0, ens9

1.2 软件

linux版本: CentOS 7.2.1511
内核版本 : 3.10.0-327.el7.x86_64
ceph版本: 12.2.5
ceph-deploy版本: 2.0.0

2. 准备工作(所有server)

2.1 配置静态IP

每台server有两个interface, 分别配置在如下两个网段:

  • 192.168.122.0/24
  • 192.168.100.0/24

具体如下表:

Server Interface IPADDR
server0 eth0 192.168.122.160
server0 ens9 192.168.100.160
server1 eth0 192.168.122.161
server1 ens9 192.168.100.161
server2 eth0 192.168.122.162
server2 ens9 192.168.100.162
server3 eth0 192.168.122.163
server3 ens9 192.168.100.163

2.2 生成ssh key

# ssh-keygen

2.3 配置主机名解析

把如下内容追加到/etc/hosts:

192.168.100.160 server0
192.168.100.161 server1
192.168.100.162 server2
192.168.100.163 server3

2.4 配置ntp

# yum install  -y  ntp ntpdate ntp-doc
# vim /etc/ntp.conf  (一般不需要修改)
# systemctl start ntpd.service
# systemctl enable ntpd.service

2.5 关闭防火墙

# systemctl stop firewalld
# systemctl disable firewalld

2.6 安装yum源epel

为了方便yum安装一些常用的软件包:

# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

3. 安装ceph软件包

3.1 添加yum源(所有server)

所有server上添加ceph.repo,内容如下:

# cat /etc/yum.repos.d/ceph.repo 
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/$basearch
enabled=1
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch
enabled=1
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc

[Ceph]: ceph软件包的yum源,所有server都需要添加。
[Ceph-noarch]:ceph-deploy的yum源。admin server (见3.2节) 需要安装ceph-deploy,所以它需要这个yum源。admin server控制其他server的时候,也需要被控server添加这个yum源。最终,所有server都需要添加。
[ceph-source]: admin server控制其他server的时候,也需要被控server添加这个yum源。所以,所有server都需要添加。

3.2 选择admin server

选择server0作为admin server。官网上建议admin server使用一个单独的user来进行ceph-deploy操作,这里避免麻烦,还用root账户。
admin server需要免密登录所有server(包括自己),所以在admin server上配置免密登录(其他server不必配置):

# ssh-copy-id root@server0
# ssh-copy-id root@server1
# ssh-copy-id root@server2
# ssh-copy-id root@server3

测试一下:

# for i in {
  0..3} ; do ssh server$i hostname ; done 
server0
server1
server2
server3

3.3 安装ceph-deploy(在admin server上)

在3.1节已经添加了ceph-deploy的yum源,这里直接通过yum安装:

# yum -y install ceph-deploy

然后测试一下,发现报错:

# ceph-deploy --version
Traceback (most recent call last):
  File "/usr/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
  File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
    import pkg_resources
ImportError: No module named pkg_resources

原因是缺python-setuptools,安装它即可:

# yum install python-setuptools

# ceph-deploy --version
2.0.0

3.4 安装ceph包(在admin server上执行)

这一步的目标是:admin server通过远程控制在所有server上安装ceph包。它需要在所有server上添加yum源:[Ceph], [Ceph-noarch]和[ceph-source],见3.1节。

另外注意:在所有server上安装deltarpm (yum install -y deltarpm), 否则会报如下错误:

[server0][DEBUG ] Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
[server0][WARNIN] No data was received after 300 seconds, disconnecting...
[server0][INFO  ] Running command: ceph --version
[server0][ERROR ] Traceback (most recent call last):
[server0][ERROR ]   File "/usr/lib/python2.7/site-packages/ceph_deploy......

下面就是安装了:

# ceph-deploy install --release=luminous server0 server1 server2 server3

成功之后,每台server都安装了ceph包,在任意sever上检查:

# ceph -v
ceph version 12.2.5 (cad919881333ac92274171586c827e01f554a70a) luminous (stable)

# ceph -v
ceph version 12.2.5 (cad919881333ac92274171586c827e01f554a70a) luminous (stable)
[root@server1 ~]# rpm -qa | grep ceph
ceph-common-12.2.5-0.el7.x86_64
ceph-mds-12.2.5-0.el7.x86_64
ceph-12.2.5-0.el7.x86_64
ceph-release-1-1.el7.noarch
libcephfs2-12.2.5-0.el7.x86_64
python-cephfs-12.2.5-0.el7.x86_64
ceph-base-12.2.5-0.el7.x86_64
ceph-mon-12.2.5-0.el7.x86_64
ceph-osd-12.2.5-0.el7.x86_64
ceph-mgr-12.2.5-0.el7.x86_64
ceph-radosgw-12.2.5-0.el7.x86_64
ceph-selinux-12.2.5-0.el7.x86_64

4. 部署ceph集群(在admin server上执行)

为了演示,我们

  1. 创建一个集群:1 mon + 1 mgr。这个是initial monitor。
  2. 添加 osd
  3. 添加 2 mon + 2 mgr
  4. 创建一个mds

实际上,我们完全可以在第1步中直接创建 3 mon + 3 mgr的集群 (3个都是initial monitor),然后添加osd就行了。这里分作1和3两步,是为了演示添加mon和mgr。

另外,ceph-deploy在部署集群的过程中,会产生一些文件(log,keyring,ceph.conf等),所以,我们在一个新目录下执行:

# mkdir test-ceph-deploy
# cd test-ceph-deploy/

若部署出现错误,需要重头开始:

ceph-deploy purge server0 server1 server2 server3
ceph-deploy purgedata server0 server1 server2 server3
ceph-deploy forgetkeys
rm ceph.*

4.1 创建集群:1 mon + 1 mgr

A. 以server2为initial monitor创建集群

# ceph-deploy new server2 

这里指定server2作为initial monitor。这一步完成之后,在当前目录下会产生如下文件:

ceph.conf               
ceph.mon.keyring        
ceph-deploy-ceph.log

ceph.conf是ceph的配置文件。它将会被分发到所有server的/etc/ceph/目录下。在后续的ceph运维中,若需要做某些配置,可以在所有server上修改/etc/ceph/ceph.conf。

# cat ceph.conf 
[global]
fsid = 744f59b7-c403-48e6-a1c6-2c74901a4d0b
mon_initial_members = server2
mon_host = 192.168.100.162
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

ceph.mon.keyring是monitor的keyring,它定义了monitor的key,以及monitor有什么权限:

# cat ceph.mon.keyring 
[mon.]
key = AQDf7O9aAAAAABAAX4qmBiNsPhvK43wnpNCtLA==
caps mon = allow *

B. 配置ceph网络

ceph集群使用两个网络:public network和cluster network。前者用于服务client;后者用于集群内部通信,例如osd之间迁移数据。另外,两个网络上都有heartbeat。

注意:若只有一个网络,也可以部署ceph。这个网络同时担任public network和cluster network。这种情况下,跳过本小节

我们有两个网络(见第2.1节),所以在ceph.conf中,增加如下两行:

# vim ceph.conf
......
public network  = 192.168.100.0/24
cluster network = 192.168.122.0/24

注意以下两点:

  • 在2.3节,我们配置主机名解析的时候,把主机名解析为public network的地址。这是因为,ceph-deploy是作为client (见下文D小节:client.admin, client.bootstrap-mds,client.bootstrap-mgr,client.bootstrap-osd,client.bootstrap-rgw)来操作集群的,ceph集群通过public network服务于client。

  • monitor是运行于public network上的。这也很容易理解,ceph的client都需要访问monitor,若monitor运行于cluster network上,client无法访问。

C. 部署initial monitor

# ceph-deploy mon create server2 

这时候,server2上,monitor已经运行起来了。可以到server2上检查。

[root@server2 ~]# ps -ef | grep ceph
ceph       18240       1  1 14:24 ?        00:00:00 /usr/bin/ceph-mon -f --cluster ceph --id server2 --setuser ceph --setgroup ceph

如前文B小节所述,monitor运行于public network之上:

[root@server2 ~]# netstat -anpl | grep 6789 | grep LISTEN
tcp        0      0 192.168.100.162:6789    0.0.0.0:*               LISTEN      18240/ceph-mon      

D. 创建ceph keyring

经过前一步,server2上的monitor已经运行起来了。但这时候ceph -s失败,因为ceph -s是admin的命令,我们还没有admin的权限信息呢。

# ceph -c ceph.conf -s 
2018-05-07 14:25:46.127163 7f76e1834700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory
2018-05-07 14:25:46.127199 7f76e1834700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
2018-05-07 14:25:46.127201 7f76e1834700  0 librados: client.admin initialization error (2) No such file or directory

下面使用gatherkeys来创建各个角色(包括admin)的权限信息。gatherkeys 依次对角色 admin, bootstrap-mds, bootstrap-mgr, bootstrap-osd, bootstrap-rgw作如下操作(问题:为什么没有bootstrap-rbd?):

  1. 使用 ceph auth get 来获取角色的key和权限;
  2. 若不存在,则使用auth get-or-create {角色} {权限}来创建角色的key和权限;
  3. 把角色的key保存到 {角色}.keyring文件;
# ceph-deploy gatherkeys server2
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.0): /usr/bin/ceph-deploy gatherkeys server2
......
[server2][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-server2/keyring auth get client.admin
[server2][INFO  ] Running command: /usr/bin/ceph --connect-timeout=25 --cluster=ceph --name mon. --keyring=/var/lib/ceph/mon/ceph-server2/keyring auth get-or-create client.admin osd allow * mds allow * mon allow * mgr allow *
[server2
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值