1,ceph

Posted k8s-pod

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1,ceph相关的知识,希望对你有一定的参考价值。

nfs存在单点故障问题。
ceph刚好解决了这个问题。

一、安装环境准备
准备三台机器,每台机器需要三个硬盘,配置2GiB/4vCPU/60G
192.168.0.11 master1-admin
192.168.0.12 node1-monitor
192.168.0.13 node2-osd

二、初始化机器
1.1 修改主机名
在master1-admin上操作:
hostnamectl set-hostname master1-admin
在node1-monitor上操作:
hostnamectl set-hostname node1-monitor
在node2-osd上操作:
hostnamectl set-hostname node2-osd

1.2 修改host文件
三个主机上 /etc/hosts文件如下
192.168.0.11 master1-admin
192.168.0.12 node1-monitor
192.168.0.13 node2-osd

1.3 配置master1-admin到三个节点无密码登陆(master1-admin到本机也要免密)

1.4 初始化机器(三个几点操作)
yum -y install wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release lrzsz openssh-server
yum install deltarpm -y

1.5 关闭firewalld防火墙(三个节点操作)
停止firewalld服务 停止防火墙,并禁用这个服务
systemctl stop firewalld.service && systemctl disable firewalld.service

1.6 时间同步
在master1-admin上
ntpdate cn.pool.ntp.org
systemctl start ntpd && systemctl enable ntpd
在node1-monitor上
ntpdate master1-admin
计划任务:
* */1 * * * /usr/sbin/ntpdate master1-admin
在node2-osd上
ntpdate master1-admin
计划任务:
* */1 * * * /usr/sbin/ntpdate master1-admin

三、安装ceph-deploy
在三个节点上操作1,2步骤:
1.安装epel源
yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*

2.配置ceph的yum源
vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
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-jewel/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-jewel/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

3.安装ceph-deploy

yum update -y #在master1-admin,node1-monitor,node2-osd上操作
yum install ceph-deploy -y #在master1-admin上操作
yum install yum-plugin-priorities -y #在master1-admin上操作
在node1-monitor和node2-osd上操作
yum install ceph -y

4.搭建集群,在master1-admin上操作
(1)创建一个目录,用于保存 ceph-deploy 生成的配置文件信息的
mkdir /root/ceph-deploy && cd /root/ceph-deploy
(2) 创建集群和monitor节点
ceph-deploy new node1-monitor
ls可发现在ceph-deploy目录下多了几个文件,如下这些
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring

(3)修改ceph配置文件
cat ceph.conf
[global]
fsid = 588994cf-aafb-4e97-b40b-0abb80dcf49b
mon_initial_members = node1-monitor
mon_host = 192.168.199.201
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 1
把 Ceph 配置文件里的默认副本数从 3 改成 1 。把 osd pool default size = 1 加入 [global] 段:
sed -i ‘$aosd pool default size = 1‘ ceph.conf
(4)安装ceph集群
ceph-deploy install master1-admin node1-monitor node2-osd
(5)配置初始monitor,并收集所有的密钥
ceph-deploy mon create-initial
ll /root/ceph-deploy 会看到生成很多密钥
ceph.bootstrap-mds.keyring
ceph.bootstrap-mgr.keyring
ceph.bootstrap-osd.keyring
ceph.bootstrap-rgw.keyring
ceph.client.admin.keyring
5.给ceph添加osd,并完成激活
Ceph OSD:
OSD的全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,一个分区也可以成为一个OSD。
在osd节点node2-osd上操作
mkdir /var/local/osd1
chmod 777 /var/local/osd1/
回到master1-admin上操作,准备osd
ceph-deploy osd prepare node2-osd:/var/local/osd1
在master1-admin上操作,激活osd
ceph-deploy osd activate node2-osd:/var/local/osd1
6.把配置文件拷贝到管理节点和ceph节点,在master1-admin上操作
ceph-deploy admin master1-admin node1-monitor node2-osd
chmod +r /etc/ceph/ceph.client.admin.keyring 在三个节点操作
ceph health 查看集群健康状态
如果显示ok,说明ceph osd添加成功,可以正常使用

 

7.扩容,添加两个osd,在master1-admin和node1-monitor上操作(本实验在master1-admin和node1-monitor是不建议这样操作,可以申请新的主机操作)
(1)在master1-admin,node1-monitor上在创建一个目录
mkdir /var/local/osd1
chmod 777 /var/local/osd1/
(2)回到master1-admin,准备osd
ceph-deploy osd prepare master1-admin:/var/local/osd1 node1-monitor:/var/local/osd1
(3)在master1-admin上激活osd
ceph-deploy osd activate master1-admin:/var/local/osd1 node1-monitor:/var/local/osd1
(4)ceph health
8.删除osd
(1)停掉osd进程
systemctl stop ceph-osd@1
systemctl stop ceph-osd@2
(2)将节点标记成out,down
ceph osd out 1
ceph osd out 2
ceph osd down 1
ceph osd down 2
这个一步是告诉mon,这个节点已经不能服务了,需要在其他的osd上进行数据的恢复了
(3)从crush移除节点
ceph osd crush remove osd.1
ceph osd crush remove osd.2
(4)删除节点
ceph osd rm 1
ceph osd rm 2
(5)删除节点认证
ceph auth del 1
ceph auth del 2
这个是从认证当中去删除这个节点的信息

9.pool(池):
pool是ceph存储数据时的逻辑分区,每个pool包含一定数量的PG,PG里的对象被映射到不同的OSD上,因此pool是分布到整个集群的。
除了隔离数据,我们也可以分别对不同的POOL设置不同的优化策略,比如副本数、数据清洗次数、数据块及对象大小等。
image:
它将被条带化为 N 个子数据块,每个数据块将会被以对象(object)形式保存在 RADOS 对象存储中
1.创建一个pool池
ceph osd pool create testpool 256
2.创建rbd
rbd create testpool/myrbd --size 10240
3.映射块设备到自己机器
rbd feature disable testpool/myrbd object-map fast-diff deep-flatten #需要禁用,否则挂载不成功
rbd map testpool/myrbd 显示如下
/dev/rbd0
4.挂载使用
mkdir /mnt/firstrbd
mkfs.xfs /dev/rbd0
mount /dev/rbd0 /mnt/firstrbd

 

以上是关于1,ceph的主要内容,如果未能解决你的问题,请参考以下文章

ceph 部署mds文件系统

ceph mon无法启动-rocksdb数据损坏

ceph 常用命令总结

ceph

Android 原生 SQLite 数据库的一次封装实践

2ceph-deploy之配置使用RBD