本文是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
集群部署情况,图示如下:
如果此时集群的 health 并不是 HEALTH_OK,可以执行以下命令来查看问题详情,命令如下:
$ ceph health detail
到此Ceph高可用集群部署完成。