9

快速构建Ceph集群

 3 years ago
source link: http://sunqi-site-7gue3m8k5fbec136-1254137673.tcloudbaseapp.com/2020/09/12/%E5%BF%AB%E9%80%9F%E6%9E%84%E5%BB%BACeph%E9%9B%86%E7%BE%A4/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

快速构建Ceph集群

2020-09-12

字数统计: 1.7k字

  |   阅读时长≈ 7分

虽然安装环境并不是属于研发人员的本质工作,甚至有些研发人员抵触一些环境的搭建工作。在一些大型企业中,由于分工明确,造成了一些研发人员在这一方面能力的严重缺失。其实环境安装对于开发人员从整体上掌握软件架构师非常有益的,同时随着云计算、云原生的发展,对于DevOps的软件开发模式也越来越被企业接受,可以预见的是,未来DevOps将是所有研发人员必备的技能之一。

本文主要目标是帮助研发人员用最小成本搭建一套Ceph环境,为了降低搭建成本,使用了Ceph Deploy及国内源加速安装速度。我们选择目前Ceph Octopus最新的稳定版本进行安装。

我们准备四台服务器,其中一台作为部署发起节点和后续Client节点使用。另外三台作为Ceph节点使用,其中第一台节点node01上,除了monitor和osd外,还将运行Manager, MDS和RGW服务,用于提供文件及对象存储服务。每一台Ceph节点都另外挂载了一块单独的磁盘,由于我使用的是虚拟机环境,所以挂载节点为/dev/vdb,如果使用是其他环境需要注意挂载点名称。

upload successful

部署时序图

使用Ceph Deploy将大幅度简化安装过程,大体上分为以下安装步骤:

  • 节点初始化配置
  • Ceph Deploy节点安装
  • Ceph集群初始化
  • ODS节点安装、安装Mgr服务及添加ODS磁盘,完成Ceph基本安装
  • CephFS安装,部署Metadata服务
  • Ceph RGW安装,部署RGW服务
upload successful

(全部节点)环境准备

这是我非常常用的针对CentOS 7的设置,为了测试方便,关闭了防火墙、SELINUX,同时更新了系统和EPEL源为阿里源,最后进行系统更新,保证系统软件包更新到最新版本后,再进行环境安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Set SELinux in permissive mode (effectively disabling it)
setenforce 0
#sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

systemctl stop NetworkManager
systemctl disable NetworkManager

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
firewall-cmd --state

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache
yum update -y

如果按照正常流程安装后,执行ceph -s,会出现restful模块无法找到,缺少pecan的安装包,所以在初始化阶段直接将缺少的包进行安装。

1
2
yum install -y python3-pip
pip3 install pecan werkzeug

Ceph-Deploy节点安装

(Ceph Deploy节点)安装Ceph-Deploy

1
2
3
4
5
6
7
8
9
cat << EOF > /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
EOF
1
2
yum makecache
yum install -y ceph-deploy

(全部节点)设置时间同步服务

时间同步服务是分布式系统的生命线,所以安装时候先要安装NTP或者Chrony。在RHEL 7中,默认的时间同步被替换为Chrony,很多新的安装文档中也开始使用Chrony作为时间同步服务,但是NTP也被同时保留。我的环境中Chrony已经被安装并启动,如果没有请自行安装。

(Ceph Deploy节点)无密码登录

这里为了简便,使用了root用户进行安装。配置完成后,需要让Ceph Deploy能够无密码的方式访问全部Ceph节点。

1
ssh-keygen
1
2
3
ssh-copy-id root@node1
ssh-copy-id root@node2
ssh-copy-id root@node3

Ceph集群安装

(Ceph Deploy节点)Ceph块存储服务安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export CEPH_DEPLOY_REPO_URL=https://mirrors.aliyun.com/ceph/rpm-octopus/el7
export CEPH_DEPLOY_GPG_URL=https://mirrors.aliyun.com/ceph/keys/release.asc

# 集群初始化,这一步会生成初始化的ceph.conf,可以配置网络等信息
ceph-deploy new node01
ceph-deploy install node01 node02 node03

# 初始化monitor,并收集keys
ceph-deploy mon create-initial
ceph-deploy admin node01 node02 node03

ceph-deploy mgr create node01

ceph-deploy osd create --data /dev/vdb node01
ceph-deploy osd create --data /dev/vdb node02
ceph-deploy osd create --data /dev/vdb node03

# 检查集群状态
ceph -s

由于默认采用了Bluestore安装方式,如果想使用SSD作为block.db和block.wal,可以这样创建OSD

1
ceph-deploy osd create --data /dev/vdb --block-db /dev/vdc --block-wal /dev/vdc node01

在Ceph Deploy节点,将Ceph相关配置文件拷贝至系统的/etc/ceph目录

1
2
3
mkdir -p /etc/ceph
cp ceph.conf /etc/ceph
cp ceph.client.admin.keyring /etc/ceph

(Ceph Deploy节点)增加多个Monitor节点

添加多个Monitor节点,可以实现高可靠,但是一定为奇数。先更新配置文件,在刚才初始化集群目录下的ceph.conf中的mon_host添加所有节点IP,之后设定public network,这里我们使用了Ceph节点的网段:

1
2
3
4
5
# ceph.conf
# ...
mon_host = 192.168.10.105,192.168.10.176,192.168.10.139
public network = 192.168.10.1/24
# ...

分发配置文件

1
2
3
4
5
6
7
ceph-deploy --overwrite-conf admin node01 node02 node03
ceph-deploy mon add node02
ceph-deploy mon add node03


# 检查quorum状态
ceph quorum_status --format json-pretty

(Ceph Deploy节点)Ceph文件系统服务安装

1
2
3
4
5
6
7
8
ceph-deploy mds create node01


# 添加多个Manager服务,Manager采用的是主从模式
ceph-deploy mgr create node02 node03

# 可以看到Manager主从节点状态
ceph -s

如果发现Ceph Monitor节点启动失败,需要到相应的节点上查看失败原因,比如我的Monitor使用Start启动,返回这样的提示

1
2
Job for [email protected] failed because start of the service was attempted too often. See "systemctl status [email protected]" and "journalctl -xe" for details.
To force a start use "systemctl reset-failed [email protected]" followed by "systemctl start [email protected]" again.

按照提示重新启动即可

1
2
systemctl reset-failed [email protected]
systemctl start [email protected]

(Ceph Deploy节点)Ceph对象存储服务安装

1
ceph-deploy rgw create node01

块存储测试

建立存储空间

1
2

文件系统测试

建立存储空间

1
2
3
4
5
6
ceph osd pool create cephfs_data 16
ceph osd pool create cephfs_metadata 16

# ceph fs new <fs_name> <metadata> <data>
ceph fs new cephfs cephfs_metadata cephfs_data
ceph fs ls

内核方式挂载

1
2
mkdir -p /mnt/mycephfs
mount -t ceph 192.168.10.11:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret

Fuse方式挂载

确保/etc/ceph下面已经拷贝了ceph.conf和keyring文件

1
2
mkdir -p /mnt/mycephfs
ceph-fuse -m 192.168.10.11:6789 /mnt/mycephfs

对象存储测试


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK