linux三节点搭建ceph集群
|---------------|-------|
| 主机IP | 主机名称 |
| 172.26.50.75 | node1 |
| 172.26.50.112 | node2 |
| 172.26.50.228 | node3 |
ceph-mon,ceph-mgr,ceph-mds都搭建在node1上,node2和node3上搭建ceph-osd,每个机器1个osd
Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象、块和文件存储,Ceph的大致组件如下:
-
Ceph监视器(ceph-mon):用来维护集群状态的映射,包括监视器映射,管理器映射,OSD映射,MDS映射和CRUSH映射,这些映射是ceph守护程序相互协调所需的关键状态,另外还负责客户端到ceph存储的身份验证;通常要实现高可用,需要3个或以上的ceph-mon服务
-
Ceph管理器(ceph-mgr):ceph manager守护进程负责跟踪运行时指标和ceph集群当前的状态,包括存储利用率,当前性能指标和系统负载等,ceph-mgr还托管一些python模块,以实现基于web的ceph仪表盘和rest api,通常要实现高可用至少需要2个ceph-mgr进程,通常ceph-mon和ceph-mgr个数相同,1个ceph-mon同节点会伴随1个ceph-mgr守护进程
-
Ceph对象存储(ceph-osd):Ceph OSD是对象存储守护程序,是用来存储数据的核心组件,实现数据存储、数据复制和恢复、数据的重新平衡,并会检查其他Ceph OSD守护程序的心跳来向ceph-mon和ceph-mgr提供一些监控信息,通常至少需要3个ceph-osd才能实现冗余和高可用性,部署的时候ceph-osd会和ceph-mon分开节点部署.
-
Ceph元数据服务(ceph-mds):Ceph MDS为ceph文件系统存储元数据,注意Ceph块设备和对象存储不用mds存储元数据,Ceph MDS允许POSIX文件系统用户执行基本命令,而不会将压力都集中到Ceph OSD集群上,通常mds可以选择部署至少2个节点,可以和其他组件一起也可以分开
环境准备
下面操作默认在三台主机上全部操作
配置yum源
bash
#新机子默认yum会有问题,这里使用阿里云yum源
#首先把之前的yum.repo文件备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#下载阿里云镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#下载完成后执行
yum makecache
配置时间同步
bash
#执行date如果三台节点时间不同步,需要配置时间同步
#首先下载chrony服务
yum install chrony -y
#下载vim文本编辑工具
yum install vim -y
#在chrony配置文件中编辑世家按同步服务器
vim /etc/chrony.conf
#这里只需要将前几行已server开头的注释掉,
#添加下面的server,此时使用阿里云时间服务器
server ntp.aliyun.com iburst
#重启cchrony服务
systemctl restart chronyd
#将时间设置写入磁盘(以后重启数据不会丢失)
hwclock -s
配置主机名
bash
#在172.26.50.75节点上执行
hostnamectl set-hostname node1
#在172.26.51.114节点上执行
hostnamectl set-hostname node2
#在172.26.51.228节点上执行
hostnamectl set-hostname node3
关闭防火墙,selinux
bash
systemctl stop firewalld | systemctl disable firewalld | systemctl status firewalld
配置ceph源
ceph软件包
bash
#对于centos7需要安装以下安装包
yum install yum-plugin-priorities
#确认,如果输出结果显示为enabled=1,则成功
cat /etc/yum/pluginconf.d/priorities.conf
#安装ceph密钥
rpm --import 'https://download.ceph.com/keys/release.asc'
#安装elep-release仓库和其他包
yum install epel-release
yum install snappy leveldb gdisk gperftools-libs
ceph源
bash
[ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.4/el7/$basearch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.4/el7/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.ustc.edu.cn/ceph/rpm-15.2.4/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
gpgkey=https://mirrors.ustc.edu.cn/ceph/keys/release.asc
#配置完成后,保存退出,执行
yum install ceph
配置python环境
上面的yum完成后会自动下载python3.6,但是系统默认python版本韩式python2,此时可以执行python 【回车】,查看python版本
bash
#首先配置python环境依赖,-i指定阿里云加速
pip3 install pecan -i https://mirrors.aliyun.com/pypi/simple/
pip3 install werkzeug -i https://mirrors.aliyun.com/pypi/simple/
#配置环境python版本
#卸载默认python2环境
rm -rf /usr/bin/python
#重新添加python3.6为默认python环境
ln -s /usr/bin/python3.6 /usrs/bin/python
配置ceph-mon
(在主节点上配置ceph监视服务,这里主节点为172.26.50.75)
配置ceph.conf文件
bash
#首先在主机点输入,会生成密钥
uuidgen
#配置ceph.conf文件
vim /etc/ceph/ceph.cnf
[global]
fsid = #此处输入刚刚获取的密钥
mon initial members = node1 #主节点名称
mon host = 172.26.50.75:6789 #主节点Ip:端口
public network = 172.26.50.0/16 #ceph集群网关
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
mon_allow_pool_delete = true
#设置完成后保存退出
XML
#依次执行
# 为集群创建1个密钥环,作为监视器密钥 注意其中的点.不要丢
ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
# 生成管理员密钥环 创建admin用户 也是第一个客户端用户
ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
# 生成bootstrap密钥环和用户
ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
# 然后将刚才生成的密钥追加到ceph.mon.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
# 修改ceph.mon.keyring的权限为ceph ceph用户安装时已经自动创建
chown ceph:ceph /tmp/ceph.mon.keyring
# 注意这里主机名, ip, fsid要换成实际的
monmaptool --create --add node1 172.26.50.75 --fsid 【这里写刚刚的密钥】 /tmp/monmap
XML
然后创建ceph-mon数据目录:
# 目录名为: 集群名-主机名 这里是: ceph-node1
mkdir /var/lib/ceph/mon/ceph-node1
使用刚才生成的密钥环和映射初始化数据目录:
# -i 指定主机名
ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
调整数据目录权限为ceph:
chown -R ceph:ceph /var/lib/ceph/mon/ceph-node1/
然后启动ceph-mon服务:
# 服务名为:ceph-mon@主机名
systemctl start ceph-mon@node1
# 查看服务状态
systemctl status ceph-mon@node1
检查ceph集群状态
ceph -s
配置ceph-mgr
主节点操作
配置守护进程
XML
# 创建mgr密钥目录, 命名为: 集群名-主机名
mkdir /var/lib/ceph/mgr/ceph-node1
# 创建mgr身份验证密钥 注意里面的mgr.node1,node1为主机名
ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *' > /var/lib/ceph/mgr/ceph-node1/keyring
# 修改权限
chown -R ceph:ceph /var/lib/ceph/mgr/ceph-node1/
ceph-mgr -i node1
查看集群状态
systemctl start ceph-mgr@node1
systemctl status ceph-mgr@node1
osd配置
(在另外两台节点上配置)
XML
#将 密钥从node1传输到node2和node3,node1上操作
scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/
scp /var/lib/ceph/bootstrap-osd/ceph.keyring node3:/var/lib/ceph/bootstrap-osd/
#将ceph.conf从node1节点传输到另外两台节点上,node1上操作
scp /etc/ceph/ceph.conf 172.26.51.114:/etc/ceph/
scp /etc/ceph/ceph.conf 172.26.51.228:/etc/ceph/
创建osd节点
XML
ceph-volume lvm create --data /dev/sdb1 #这里写使用lsblk之后的分区配置
ceph-mds部署
(node1主节点上操作,部署守护进程)
XML
# 目录名同样是: 集群名-主机名
mkdir /var/lib/ceph/mds/ceph-node1
# 然后创建mds 密钥环到刚建的目录中, 注意mds.node1同样写主机名
ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-node1/keyring --gen-key -n mds.node1
# 最后导入密钥环 设置访问权限 同样注意主机名
ceph auth add mds.node1 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-node1/keyring
编辑配置文件
XML
#
vim /etc/ceph/ceph.conf
#在末尾添加
[mds.node1]
host = node1
启动守护进程
ceph-mds --cluster ceph -i node1 -m node1:6789
创建存储池
XML
# 创建名字为cephfs_data的数据池 pg大小为128
ceph osd pool create cephfs_data 128
# 创建名字为cephfs_metadata的存储池 pg大小为64
ceph osd pool create cephfs_metadata 64
ceph fs new cephfs cephfs_metadata cephfs_data
查看ceph情况
挂载
XML
mkdir /mnt/mycephfs
mount -t ceph :/ /mnt/mycephfs/ -o name=admin
df -h