centos7下搭建ceph luminous(12.2.1)--无网或网络较差

时间:2023-11-11 10:01:26

本博客的主要内容是在centos7下搭建luminous,配置dashboard,搭建客户端使用rbd,源码安装ceph,最后给出一些较为常用的命令。本博客针对初次接触ceph的人群。

搭建环境:

主机系统:centos7 x86_64 server

ceph版本:ceph 12.2.1(luminous)

硬件配置:4台vm,1核1G内存,每台至少挂载1块为osd准备的空闲盘

主机名            ip                       role
admin 192.168.197.144 admin
node1 192.168.197.142 mon/ mgr / osd
node2 192.168.197.141 osd
node3 192.168.197.143 osd

1 准备工作

1.1 开启网络(所有节点,root用户)

Centos7默认是不启用有线网卡的,需要手动开启。打开终端:

# cd /etc/sysconfig/network-scripts/
# ls

ls 查看一下ifcfg-eno后面对应的数字是什么,以eno32为例:

# vi ifcfg-eno32

设置 ONBOOT=yes,即开启自动启用网络连接。重启网络:

# service network restart

最后验证能否ping通外网:

# ping www.baidu.com

1.2 修改主机名(所有节点,root用户)

修改主机名,以便后面切换部署时识别相应节点的主机名

1)修改主机名

# vi /etc/hostname

2)修改127.0.0.1 后的内容为主机名:

# vi /etc/hosts

并添加如下信息:

192.168.197.144    admin
192.168.197.142 node1
192.168.197.141 node2
192.168.197.143 node3

3)验证各个主机之间能否互相ping通主机名

1.3 创建用户(所有节点,root用户)

在所有节点上执行如下操作:

1)创建用户名:cephu,设置密码:

# useradd  –d  /home/ceph  –m  cephu
# passwd cephu

2)修改visudo文件,否则提示cephu不再sudoer列表中的错误。命令行输入visudo,在root ALL=(ALL) ALL下面添加:

cephu  ALL=(ALL) ALL

3)切换至cephu用户,为该用户增加root权限:

$ echo “ceph ALL=(root) NOPPASSWD:ALL” | sudo tee /etc/sudoers.d/ceph
$ sudochmod 0440 /etc/sudoers.d/ceph

1.4 实现ssh无密码登录(admin节点)

1)cephu用户下,生成秘钥:

$ ssh-keygen

2)cephu用户下,把生成的密钥拷贝到各Ceph节点:

$ ssh-copy-id cephu@node1
$ ssh-copy-id cephu@node2
$ ssh-copy-id cephu@node3

3)root用户下,添加~/.ssh/config配置文件,并进行如下设置:

Host node1
Hostname node1
User cephu Host node2
Hostname node2
User cephu Host node3
Hostname node3
User cephu

1.5 添加下载源,安装ceph-deploy(admin节点,root用户)

1)添加ceph源:

# cat >/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

ctrl + d 保存

2)更新源,安装ceph-deploy:

# sudo yum makecache
# sudo yum update
# sudo yum install ceph-deploy -y

1.6 设置TTY(所有节点)

# sudo visudo

找到 Defaults requiretty 注释掉

1.7 设置selinux(所有节点)

# vi /etc/selinux/config

selinux 设为 disabled

1.8 安装ntp(所有节点)

# yum install -y ntp ntpdate ntp-doc
# systemctl start ntpd
# systemctl status ntpd

确认打开NTP服务

2 搭建ceph集群

没有特别说明以下所有操作均是在admin节点,cephu用户下执行

2.1 创建ceph操作目录:

$ mkdir my-cluster  //切记不可用sudo创建
$ cd my-cluster

之后,所有ceph-deploy命令操作必须在该目录下执行

2.2 创建集群:

$ ceph-deploy new node1

创建成功会有三个文件:ceph.conf, ceph.mon.keyring, and a log file

2.3 安装luminous(12.2.1):

$ ceph-deploy install --release luminous node1 node2 node3

由于网速慢的问题,安装并不会成功。之所以仍进行这一步,只因执行过了该命令就会自动创建相应文件夹。在进入各个节点手动安装的时候,才能把下载的不成功的包放到正确的目录下,这样,手动安装使用yum命令才会成功。之后进入每个节点执行安装。以node1为例:

  • 先从https://download.ceph.com/rpm-luminous/el7/ x86_64/ 下载所有最有最新版本的rpm包到本地

  • 之后使用secure shell client上传到node1的/var/cache/yum/x86_64/7/Ceph/packages/文件夹下

  • 然后安装ceph:

$ ssh node1
$ sudo yum install –y epel-release ceph ceph-radosgw

必须说的是,虽然所有安装包都在相应的目录中了,但仍可能不成功,这个时候只需要再次重新把安装包放到对应目录后再执行该命令就成功了,原因不清楚,反正这样做就对了。

  • 确认安装版本为12.2.1:
$ ceph --version
  • 设置防火墙(由于node1既是mon节点又是osd节点,所以要添加下面两个规则。其他节点只开启ceph服务即可):
$ sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent  //该规则仅在mon节点执行,如果不添加就不能在其他osd上进行一些查询操作
$ sudo firewall-cmd --zone=public --add-service=ceph --permanent
$ sudo firewall-cmd --reload

需要说明的是,该防火墙规则只能在安装成功ceph后才能添加,否则就不识别,添加失败。最后退出node1节点,返回admin节点

2.4 初始化mon:

$ ceph-deploy mon create-initial

2.5 赋予各个节点使用命令免用户名权限:

$ ceph-deploy admin node1 node2 node3

2.6 安装ceph-mgr:

$ ceph-deploy mgr create node1	//只有luminous才有,为使用dashboard做准备

2.7 添加osd:

$ ceph-deploy osd create node1:/dev/sdb node2:/dev/sdb node3:/dev/sdb

需要说明的是该/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),通过如下命令查看:

$ ssh node1 lsblk -f

最后通过如下命令查看集群状态:

$ ssh node1 sudo ceph -s

如果显示health_ok,3个osd up就成功了

3 Dashboard的配置:

把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr

3.1 创建管理域秘钥:

$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'

3.2 开启 ceph-mgr 管理域:

$ sudo ceph-mgr -i node1

3.3 查看ceph的状态:

$ sudo ceph status

确认mgr的状态为active

3.4 打开dashboard模块:

$ sudo ceph mgr module enable dashboard

3.5 绑定开启dashboard模块的ceph-mgr节点的ip地址:

$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.197.142

ip地址为mgr节点的ip地址

3.6 web登录:

浏览器地址栏输入:192.168.197.142:7000

4 配置客户端使用rbd:

创建块设备之前需要创建存储池,存储池相关命令需要在mon节点执行

4.1 创建存储池:

$ sudo ceph osd pool create rbd 128 128

4.2 初始化存储池:

$ sudo rbd pool init rbd

4.3 准备客户端client:

另备一台主机,系统centos7用来作为client。主机名为client,ip:192.168.197.146。修改hosts文件实现和admin节点的主机名互通。

1)升级client内核到4.x:

参考:https://www.tesun.net/centos7sheng-ji-nei-he/

2)为client安装ceph:

参考2.3

3)配置client防火墙:

$ sudo firewall-cmd --zone=public --add-service=ceph --permanent
$ sudo firewall-cmd --reload

4)在admin节点赋予client使用命令免用户名权限:

$ ceph-deploy admin client

5)修改client下该文件的读权限:

$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring

6)修改client下的ceph配置文件:

$ sudo vi /etc/ceph/ceph.conf

在global section下添加:

rbd_default_features = 1

该配置为了解决映射镜像时出错参见:

http://www.cnblogs.com/styshoo/p/6505794.html

4.4 client节点创建块设备镜像:

$ rbd create foo --size 4096

4.5 client节点映射镜像到主机:

$ sudo rbd map foo --name client.admin

4.6 client节点格式化块设备:

$ sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo

4.7 client节点mount块设备:

$ sudo mkdir /mnt/ceph-block-device
$ sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
$ cd /mnt/ceph-block-device

4.8 测试块设备:

dd if=/dev/zero of=/mnt/ ceph-block-device /file1 count=100 bs=1M

5 源码安装ceph:

注意要足够多的内核,足够多的内存,才能make成功。这里内核16内存16G。另外编译目录的大小至少50g,越大越好!如果一开始编译目录没有那么大,就扩展其容量,参见:http://www.cnblogs.com/lighten/p/6825938.html,注意:替换 resize2fs为xfs_growfs

5.1 安装git:

$ sudo yum install -y git

5.2 克隆源代码:

$ git clone --recursive https://github.com/ceph/ceph.git

5.3 下载依赖库及分支(切换到源码下载到的目录):

$ git submodule update --force --init --recursive

5.4 安装必要的库和工具:

$ cd ceph
$ ./install-deps.sh

5.5 编译安装 ceph:

$ cd ceph
$./do_cmake.sh
$ cd build
$ make -j16
$ sudo make install

6 pool常用命令:

说明:斜体表示自行设置的参数

6.1 创建pool:

创建副本池:

$ sudo ceph osd pool create pool-name pg_num pgp_num

创建ec池:

$ sudo ceph osd pool create pool-name pg_num pgp_num erasure

6.2 列出pool:

$ sudo rados lspools
$ sudo rados df //详细信息
$ sudo ceph osd lspools
$ sudo ceph osd pool ls detail //详细信息

6.3 设置pool参数:

设置副本数:

$ sudo ceph osd pool set pool-name size num

6.4 获取pool参数:

获取副本数:

$ sudo ceph osd pool get pool-name size

6.5 更多pool命令参见:

http://docs.ceph.com/docs/master/rados/operations/pools/#create-a-pool

7 image常用命令:

说明:斜体表示自行设置的参数

7.1 创建image:

$ sudo rbd create image-name --size 4096

7.2 列出image:

$ sudo rbd ls

7.3 查看image特性:

$ sudo rbd info image-name

7.4 删除image:

$ sudo rbd rm image-name

8 主要参考文献:

http://docs.ceph.com/docs/master/start/quick-start-preflight/#open-required-ports

http://www.cnblogs.com/Je-Cortex/archive/2016/02/01/5175936.html