Ceph实战(二)-高可用集群部署

本文是Ceph实战(二)-高可用集群部署,若要关注前文,请点击传送门:

Ceph实战(一)-分布式存储介绍与原理架构概述

前文我们介绍了CEPH分布式存储原理架构以及一些名词解释,我们已经了解到CEPH具有高可靠、高可拓展、高性能、高自动化等优点,本文就带大家开始着手搭建我们自己的CEPH高可用集群。

一、准备工作

本专栏搭建的Ceph集群版本是 luminous-12.2.13,操作系统是 Centos7.6,我们需要准备三台虚拟机进行搭建,每台虚拟机准备两块 20G 的硬盘(可以虚拟两块硬盘),如果条件允许的话请准备两块网卡,一块用做集群网络,一块用做公网提供服务,Ceph集群需要在机器上单独部署,不建议Ceph虚拟机上部署任何业务类服务(当然在经济条件允许的情况下,有三台实体机或者云主机是最好的,本人经济条件有限,只能通过VMware虚拟四台机器),Ceph集群服务器规划如下:

名称 ip 系统 硬盘 角色
node1 192.168.1.198 centos7.6(最小化)2核2G sda系统盘20G,sdb20G mon,osd,mgr,deploy
node2 192.168.1.199 centos7.6(最小化)2核2G sda系统盘20G,sdb20G mon,osd,mgr
node3 192.168.1.200 centos7.6(最小化)2核2G sda系统盘20G,sdb20G mon,osd,mgr

由于Ceph服务需要用到很多的端口,需要占用的端口如下所示:

Ceph Monitor:启用 Ceph MON 服务或端口 6789 (TCP)。

Ceph OSD 或元数据服务器:启用 Ceph OSD/MDS 服务或端口 6800-7300 (TCP)。

iSCSI 网关:打开端口 3260 (TCP)。

对象网关:打开对象网关通讯所用的端口。此端口在 /etc/ceph.conf 内以 rgw frontends = 开头的行中设置。HTTP 的默认端口为 80,HTTPS (TCP) 的默认端口为 443。

NFS Ganesha:默认情况下,NFS Ganesha 使用端口 2049(NFS 服务、TCP)和 875 (rquota 支持、TCP)。

SSH:打开端口 22 (TCP)。

NTP:打开端口 123 (UDP)。

所以本专栏直接关闭防火墙,如果大家有时间或者精力可以选择开放以上端口,本人精力有限就直接关墙,首先我们关闭 SELinux,执行以下命令:

# 临时关闭
$ getenforce
$ setenforce 0
 
# 永久关闭
$ vim /etc/selinux/config  
# 改:7SELINUX=enforcing     #前面的7,表示文档中第7行。方便你查找
# 为:7SELINUX=disabled
$ reboot

然后我们关闭防火墙,命令如下:

$ systemctl stop firewalld.service #停止firewall
$ systemctl disable firewalld.service #禁止firewall开机启动

到此我们的准备工作完成,接下来开始搭建集群。

二、高可用集群部署

1、配置yum源

如果大家之前配置过阿里源此步骤可以跳过,命令如下:

$ cd /etc/yum.repos.d/
$ wget http://mirrors.aliyun.com/repo/Centos-7.repo
$ wget http://mirrors.aliyun.com/repo/epel-7.repo
$ yum -y install epel-release 
$ yum -y install vim wget lrzsz net-tools

然后清理掉其他yum源文件。

2、配置ceph源

配置Ceph源,执行以下命令:

    $ vim /etc/yum.repos.d/ceph.repo

在上述文件输入以下内容:

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

3、配置主机名

分别在三台服务器上修改主机名,登录192.168.1.198服务器,执行以下命令:

    $ hostnamectl set-hostname node1

登录192.168.1.199服务器,执行以下命令

    $ hostnamectl set-hostname node2

登录192.168.1.200服务器,执行以下命令:

    $ hostnamectl set-hostname node3

到此三台服务器主机名修改完成。

4、配置hosts解析

分别在三台服务器上执行以下命令:

    $ vim /etc/hosts

在上述文件中增加以下内容:

192.168.1.198 node1
192.168.1.199 node2
192.168.1.200 node3

让配置生效,命令如下:

    $ source /etc/hosts

到此三台服务器hosts解析配置完成。

5、时间同步

分别在三台服务器上执行以下命令:

$ yum install ntp ntpdate -y
$ ntpdate 0.asia.pool.ntp.org
$ hwclock --systohc

分别在三台服务器上增加时间同步定时任务,执行以下命令:

    $ crontab -e

在定时任务配置文件中增加以下内容:

*/5 * * * * ntpdate 0.asia.pool.ntp.org

到此三台服务器时间同步配置完成。

6、配置python2.7环境

Ceph必须在有Python的环境下才能进行安装,这里我们配置Python2.7,分别在三台服务器上执行以下命令:

$ cd /tmp
$ wget https://files.pythonhosted.org/packages/ed/69/c805067de1feedbb98c53174b0f2df44cc05e0e9ee73bb85eebc59e508c6/setuptools-41.0.0.zip
$ wget https://files.pythonhosted.org/packages/36/fa/51ca4d57392e2f69397cd6e5af23da2a8d37884a605f9e3f2d3bfdc48397/pip-19.0.3.tar.gz
$ unzip setuptools-41.0.0.zip 
$ cd setuptools-41.0.0
$ python setup.py install
$ tar zxf pip-19.0.3.tar.gz 
$ cd pip-19.0.3
$ python setup.py install

到此三台服务器Python2.7环境配置完成。

7、配置免密登录

为了方便我们做集群部署,需要对deploy节点(192.168.1.198)配置免密登陆,在deploy节点(192.168.1.198)执行以下命令:

$ ssh-keygen -t rsa -P ""
$ ssh-copy-id 192.168.1.198
$ ssh-copy-id 192.168.1.199
$ ssh-copy-id 192.168.1.200
$ ssh node1
$ ssh node2
$ ssh node3

到此deploy(192.168.1.198)节点免密登录配置完成。

8、安装ceph

在deploy节点(192.168.1.198)执行以下命令:

$ yum -y install ceph-deploy
$ ceph-deploy --version
$ mkdir /ceph-install && cd /ceph-install/
$ ceph-deploy new node1 node2 node3

配置ceph.conf,执行以下命令:

    $ vim ./ceph.conf

然后在上述文件中添加以下内容: 

[global]
...
# 如果有多个网卡,应该配置如下选项,
# public network是公共网络,负责集群对外提供服务的流量
# cluster network是集群网络,负载集群中数据复制传输通信等
# 本次实验使用同一块网卡,生境环境建议分别使用一块网卡
public network = 192.168.1.0/24
cluster network = 192.168.1.0/24

在deploy节点(192.168.1.198)执行以下命令安装ceph并初始化mon监控,命令如下:

$ cd /ceph-install/
$ ceph-deploy install node1 node2 node3 --nogpgcheck
$ ceph-deploy --overwrite-conf config push node1 node2 node3
$ ceph-deploy --overwrite-conf mon create node1 node2 node3
$ ceph-deploy mon create-initial

然后我们需要把 /ceph-install/ 下的秘钥文件复制到 /etc/ceph/ 目录,这样才能在deploy节点(192.168.1.198)正常执行ceph集群命令,命令如下:

$ cd /ceph-install/
$ cp *.keyring /etc/ceph/

9、创建osd

我们在deploy节点(192.168.1.198)创建三台服务器的osd,命令如下:

ceph-deploy osd create node1 --data /dev/sdb
ceph-deploy osd create node2 --data /dev/sdb
ceph-deploy osd create node3 --data /dev/sdb

如果你每台机器上有三块硬盘,可以把第二块、第三块硬盘拿来创建osd,可以执行以下命令:

ceph-deploy osd create node1 --data /dev/sdb
ceph-deploy osd create node1 --data /dev/sdc
ceph-deploy osd create node2 --data /dev/sdb
ceph-deploy osd create node2 --data /dev/sdc
ceph-deploy osd create node3 --data /dev/sdb
ceph-deploy osd create node3 --data /dev/sdc

到此我们完成了三台服务器osd的创建。

10、同步admin密钥

我们的admin密钥存在于deploy节点,所以我们在deploy节点上执行以下命令:

    $ ceph-deploy --overwrite-conf admin node1 node2 node3

到此我们同步了admin密钥到三台服务器上。

11、部署mgr 

在deploy节点上执行以下命令:

    $ ceph-deploy mgr create node1 node2 node3

到此我们完成了三台服务器的mgr部署。 

注意:如果安装过程出错,使用以下命令清理之后重新开始:

$ ceph-deploy purge lab1 lab2 lab3
$ ceph-deploy purgedata lab1 lab2 lab3
$ ceph-deploy forgetkeys
$ rm ceph.*
 

三、验证

我们通过执行以下命令查看集群部署情况,命令如下:

    $ ceph -s

集群部署情况,图示如下:

  Ceph实战(二)-高可用集群部署_第1张图片

如果此时集群的 health 并不是 HEALTH_OK,可以执行以下命令来查看问题详情,命令如下:

    $ ceph health detail

到此Ceph高可用集群部署完成。

你可能感兴趣的:(Ceph实战)