Ceph分布式存储

Ceph架构

03347d2644437dd79428ee3d208ce71a.jpg
  • Librados:是对RADOS进行抽象和封装,并向上层提供API,以便直接基于RADOS进行应用开发。
  • RADOS:可靠的、自动化的、分布式的对象存储。
  • Radosgw:对象网关接口(对象存储)
  • Rbd: 块存储
  • Cephfs:文件系统存储

Ceph基本进程

1.Osd

是负责响应客户端请求返回具体数据的进程。用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他osd守护进程发送心跳,然后向Mon提供一些监控信息。

2.MDS

为Ceph文件系统提供元数据计算、缓存与同步。在ceph中,元数据也是存储在osd节点中的,mds类似于元数据的代理缓存服务器。只有需要使用CEPHFS时,才需要配置MDS节点。

3.Monitor

监控整个集群的状态,保证集群数据的一致性。

4.Manager

用于收集ceph集群状态、运行指标。

Ceph数据的存储过程

03347d2644437dd79428ee3d208ce71a9ec593632a7d46e5.jpg

PG:是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。

CRUSH:是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。

Ceph部署

1.准备环境(设置主机名,互相解析,防火墙关闭)

主机名IPRole
admin192.168.188.8管理节点
node1192.168.188.9Mon Mgr Osd
node2192.168.188.10Osd
node3192.168.188.11Osd
client192.168.188.12

2.给每个node节点添加一块磁盘

3.所有节点创建普通用户

useradd ceph
passwd ceph
visudo
//:94  添加
ceph    ALL=(root)    NOPASSWD:ALL

4.实现SSH无密码登陆

//管理节点
su - ceph
ssh-keygen
ssh-copy-id ceph@node1
ssh-copy-id ceph@node2
ssh-copy-id ceph@node3
ssh-copy-id ceph@client

5.在管理节点添加配置文件

mkdir ~/.ssh
vi ~/.ssh/config
Host node1
Hostname node1
User ceph
Host node2
Hostname node2
User ceph
Host node3
Hostname node3
User ceph

6.在管理节点添加YUM源并安装Ceph-deploy

vi /etc/yum.repos.d/ceph.repo
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch
enabled=1
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
yum makecache
yum -y install ceph-deploy

7.安装NTP

yum -y install ntp   //管理节点安装
vi /etc/ntp.conf
//注释四行server后添加
server 127.127.1.0
fudge 127.127.1.0 stratum 10
systemctl enable ntpd
systemctl start ntpd
yum -y  install ntpdate   //其他所有节点安装
ntpdate 192.168.188.8

8.部署Ceph集群

//在管理节点下操作
su - ceph
sudo yum install python-distribute -y
mkdir my-cluster
cd my-cluster
ceph-deploy new node1
ceph-deploy install --release luminous node1 node2 node3  #安装慢直接在所有Node节点手动安装
//在所有Node Client节点操作
yum -y install epel*
vi /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/$basearch
enabled=1
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc

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

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
priority=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc

su - ceph
sudo yum -y install ceph ceph-radosgw
//在管理节点ceph用户下操作
ceph-deploy mon create-initial
ceph-deploy admin node1 node2 node3 client //赋予节点使用命令免用户名权限
ceph-deploy mgr create node1
ceph-deploy osd create --data /dev/sdb node1
ceph-deploy osd create --data /dev/sdb node2
ceph-deploy osd create --data /dev/sdb node3
ssh node1 sudo ceph -s
//在Node1配置DashBoard
su - ceph
sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
sudo ceph-mgr -i node1
sudo ceph mgr module enable dashboard
sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.188.9
访问 192.168.188.9:7000

9.配置客户端使用

//在Node1操作
su - ceph
sudo ceph osd pool create rbd 128 128
sudo rbd pool init rbd
//在Client节点操作
##升级内核##
uname -r
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
grub2-set-default 0
reboot
yum remove kernel -y
su - ceph
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
sudo vi /etc/ceph/ceph.conf
#添加 rbd_default_features = 1
rbd create foo --size 4096
sudo rbd map foo --name client.admin   //将Client节点映射到主机
sudo mkfs.ext4 -m 0 /dev/rbd/rbd/foo
sudo mkdir /mnt/ceph-block-device
sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device/

发表评论