linux搭建ceph集群

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的大致组件如下:

  1. Ceph监视器(ceph-mon):用来维护集群状态的映射,包括监视器映射,管理器映射,OSD映射,MDS映射和CRUSH映射,这些映射是ceph守护程序相互协调所需的关键状态,另外还负责客户端到ceph存储的身份验证;通常要实现高可用,需要3个或以上的ceph-mon服务

  2. 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守护进程

  3. Ceph对象存储(ceph-osd):Ceph OSD是对象存储守护程序,是用来存储数据的核心组件,实现数据存储、数据复制和恢复、数据的重新平衡,并会检查其他Ceph OSD守护程序的心跳来向ceph-mon和ceph-mgr提供一些监控信息,通常至少需要3个ceph-osd才能实现冗余和高可用性,部署的时候ceph-osd会和ceph-mon分开节点部署.

  4. 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

相关推荐
YRr YRr19 分钟前
ubuntu ros 解决建完图后 保存的地图非常小的问题
linux·运维·ubuntu
汤米粥32 分钟前
怎么样绑定域名到AWS(亚马逊云)服务器
服务器·云计算·aws
脸ル粉嘟嘟44 分钟前
常用命令之Linux&Oracle&Hive&Python
linux·hive·oracle
Wils0nEdwards1 小时前
Leetcode 整数转罗马数字
linux·python·leetcode
写bug的小屁孩1 小时前
websocket初始化
服务器·开发语言·网络·c++·websocket·网络协议·qt creator
IpdataCloud2 小时前
IP数据云 识别和分析tor、proxy等各类型代理
运维·服务器
五味香2 小时前
Linux学习,ip 命令
linux·服务器·c语言·开发语言·git·学习·tcp/ip
落落落sss2 小时前
MQ集群
java·服务器·开发语言·后端·elasticsearch·adb·ruby
我救我自己2 小时前
UE5运行时创建slate窗口
java·服务器·ue5