安装Ceph集群

概述

Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自2007年毕业之后,Sage开始全职投入到Ceph开 发之中,使其能适用于生产环境。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。2010年3 月,Linus Torvalds将Ceph client合并到内 核2.6.34中。
在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

环境配置

1.准备环境

系统版本:Centos7.2 x86_64 server
硬件配置:5台vm,1核512mb内存、1g内存,每台node角色的机器至少挂载一块不低于5G的空闲为osd存储

2.环境规划

主机名                              ip                         role
admin                    192.168.2.137            admin(安装ceph-deploy)
node1                    192.168.2.138            mon / mgr /osd
node2                    192.168.2.139            osd
node3                    192.168.2.140            osd
ceph-client            192.168.2.141             client

3.配置yum源(所有节点都需要配置)

yum -y install wget
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

4.修改主机名(所有节点都需要配置)

hostnamectl set-hostname admin
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname ceph-client

5.配置hosts解析(所有节点都需要配置)

cat >>/etc/hosts<<EOF
192.168.2.137 admin
192.168.2.138 node1
192.168.2.139 node2
192.168.2.140 node3
192.168.2.141 ceph-client
EOF

6.关闭所有机器的防火墙和selinux(所有节点都需要配置)

setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 
systemctl stop firewalld
systemctl disable firewalld

7.实现ssh无密码登陆(admin节点操作)

ssh-keygen
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
ssh-copy-id ceph-client

8.添加下载源,安装ceph-deploy(admin节点)

vi /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

yum makecache
yum -y install ceph-deploy

9.安装ntp(所有节点都需要配置)

yum -y install ntp
vi /etc/ntp.conf
server time1.aliyun.com iburst
systemctl restart ntpd
systemctl enable ntpd

部署Ceph集群

1、创建cephu操作的目录(admin节点)

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

2、创建集群(admin节点)

首先在这里要先下载一个包并安装,否则后面会报错

上传软件包distribute-0.7.3.zip到服务器上

unzip distribute-0.7.3.zip
cd distribute-0.7.3
python setup.py install

创建集群

ceph-deploy new node1
[root@admin my-cluster]# ls
ceph-deploy-ceph.log  ceph.conf  ceph.mon.keyring

3、手动不是安装三台机器分别创建:三台node节点操作相同

3.1、安装epel源
yum -y install epel-release
3.2、配置ceph源
vi /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

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

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
3.3、分别在node节点上执行安装命令
yum -y install ceph ceph-radosgw
3.4、测试
ceph --version
3.5、初始化mon(admin节点操作)
ceph-deploy mon create-initial
3.6、赋予各个节点使用命令免用户名权限
ceph-deploy admin node1 node2 node3
3.7、安装ceph-mgr
ceph-deploy mgr create node1
3.7、添加osd
ceph-deploy osd create --data /dev/sdb node1
ceph-deploy osd create --data /dev/sdb node2
ceph-deploy osd create --data /dev/sdb node3
3.8、查看集群状态
ssh node1 ceph -s

dsahboard配置

1、创建管理域秘钥

[root@node1 ~]# ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.node1]
    key = AQBSDzJf6HBQCRAAxFTtzlArI91hyQ0DnbBRFg==

2、开启ceph-mgr管理域

[root@node1 ~]# ceph-mgr -i node1

3、打开dashboard模块

[root@node1 ~]# ceph mgr module enable dashboard

4、绑定开启dashboard模块

[root@node1 ~]# ceph config-key set mgr/dashboard/node1/server_addr 192.168.2.138

浏览器访问node1的ip地址:7000访问web界面

客户端使用

1、配置存储池

[root@node1 ~]# ceph osd pool create rbd 128 128
pool 'rbd' created

2、初始化存储池

[root@node1 ~]# rbd pool init rbd

3、为client安装ceph

yum -y install python-setuptools
3.1、安装epel-release源
yum -y install epel-release
3.2、安装ceph源
vi /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

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

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
3.3、安装服务
yum -y install ceph ceph-radosgw
3.4、升级内核

升级ceph-client内核
Centos7升级内核
更新前,内核版本为:

[root@ceph-client ~]# uname -r
3.10.0-327.el7.x86_64

升级方法:导入key:

[root@ceph-client ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装elrepo的yum源

[root@ceph-client ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

查看可用的系统内核包

[root@ceph-client ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安装内核:当前内核为最新5.7,也可以按照4版本的内核

[root@ceph-client ~]# yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y

查看内核默认启动顺序

[root@ceph-client ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg 
CentOS Linux (5.7.12-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-1bbd5b6219324d96adde7c2631097c22) 7 (Core)

默认启动的顺序是从0开始,新内核是从头插入(目前位置在0,而5.7.12是在1),所以需要选择0

[root@ceph-client ~]# grub2-set-default 0

然后reboot重启,使用新的内核,下面是重启后使用的内核版本:

[root@ceph-client ~]# reboot
[root@ceph-client ~]# uname -r
5.7.12-1.el7.elrepo.x86_64

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

[root@admin my-cluster]# ceph-deploy admin ceph-client

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

[root@ceph-client ~]# chmod +r /etc/ceph/ceph.client.admin.keyring

6、修改client的ceph配置文件 #这一步是为了解决映射镜像时出现错误

[root@ceph-client ~]# vi /etc/ceph/ceph.conf 
rbd_default_features = 1

7、client节点创建块设备镜像:单位是M

[root@ceph-client ~]# rbd create foo --size 4096

8、client节点映射镜像到主机

[root@ceph-client ~]# rbd map foo --name client.admin

8、client节点格式化块设备

[root@ceph-client ~]# mkfs.ext4 -m 0 /dev/rbd/rbd/foo

9、client节点mount块设备

[root@ceph-client ~]# mount /dev/rbd/rbd/foo /mnt

推荐阅读更多精彩内容