Ceph架构
- 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数据的存储过程
PG:是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
CRUSH:是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
Ceph部署
1.准备环境(设置主机名,互相解析,防火墙关闭)
主机名 | IP | Role |
admin | 192.168.188.8 | 管理节点 |
node1 | 192.168.188.9 | Mon Mgr Osd |
node2 | 192.168.188.10 | Osd |
node3 | 192.168.188.11 | Osd |
client | 192.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/