卧疾丰暇豫,翰墨时间作。这篇文章主要讲述CEPH离线部署(纯内网)相关的知识,希望能为你提供帮助。
个人公众号:运维开发故事制作离线安装包首先我们需要在有网的环境下缓存需要用到的deb包和docker镜像
安装docker-ce
curl -sSL https://get.daocloud.io/docker | sh
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
安装cephadm使用?
?curl?
?获取独立脚本的最新版本。网络不好的话可直接去GitHub复制编辑/etc/resolv.conf文件修改nameserver为114,.114.114.114curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
安装cephadm
./cephadm add-repo --release octopus
./cephadm install
引导新群集集要引导群集,需要先创建一个目录:?
?/etc/ceph?
?mkdir -p /etc/ceph
以下操作只在一台节点执行就可以,然运行该命令:?
?ceph bootstrap?
?./cephadm bootstrap --mon-ip 192.168.10.2
启用ceph cli
cephadm add-repo --release octopus
cephadm install ceph-common
部署OSD
如果满足以下所有_条件_,则存储设备被视为可用:
- 设备必须没有分区。
- 设备不得具有任何 LVM 状态。
- 不得安装设备。
- 设备不能包含文件系统。
- 设备不得包含 Ceph BlueStore OSD。
- 设备必须大于 5 GB。
从特定主机上的特定设备创建 OSD
ceph orch daemon add osd node1:/dev/sdb
安装完成后我们可以看一下它用到了哪些docker镜像
文章图片
导出docker镜像
需要把这些镜像导出来,做成离线包
root@node1:< sub> # docker save -o ceph.tar quay.io/ceph/ceph:v15
root@node1:< /sub> # docker save -o prometheus.tar quay.io/prometheus/prometheus:v2.18.1
root@node1:< sub> # docker save -o grafana.tar quay.io/ceph/ceph-grafana:6.7.4
root@node1:< /sub> # docker save -o alertmanager.tar quay.io/prometheus/alertmanager:v0.20.0
root@node1:~# docker save -o node-exporter.tar quay.io/prometheus/node-exporter:v0.18.1
导出deb包
刚才我们装了docker和chrony还有cephadm,deb包会默认存放在 /var/cache/apt/archives目录下,可以把这个目录下的deb包缓存下来,新建一个文件夹,将下载的deb包拷贝到上述新建的文件夹下,并建立deb包的依赖关系
apt-get install dpkg-dev -y
mkdir /offlinePackage
cp -r /var/cache/apt/archives/offlinePackage
chmod 777 -R /offlinePackage/
dpkg-scanpackages /offlinePackage/ /dev/null |gzip > /offlinePackage/Packages.gz
tar zcvf offlinePackage.tar.gz /offlinePackage/
修改cephadm脚本
最后需要修改的是cephadm安装脚本,默认安装的时候cephadm是去网上pull镜像,但是实际生产环境是没有外网的,需要修改成直接用本地的镜像,修改_pull_image函数的cmd列表中的pull,将其修改为images。(我用的是octopus版本,其他版本基本不变)
文章图片
开始离线部署??前提条件
?????Cephadm??使用容器和systemd安装和管理Ceph集群,并与CLI和仪表板GUI紧密集成。
- cephadm仅支持octopusv15.2.0和更高版本。
- cephadm与新的业务流程API完全集成,并完全支持新的CLI和仪表板功能来管理集群部署。
- cephadm需要容器支持(podman或docker)和python 3。
- 时间同步
这里我使用的ubuntu20.04来安装的ceph,已经内置了python3,不再单独安装,不做特殊说明三台服务器都要执行下面的步骤
配置hosts解析
cat > > /etc/hosts <
分别在三个节点设置主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
配置本地源
注意:offlinedeb前面有一个空格
tar zxvf offlinePackage.tar.gz -C /
mv /etc/apt/sources.list /etc/apt/sources.list.bak
vi /etc/apt/sources.list
deb file:/// offlinePackage/
apt update
安装docker
cd /offlinedeb/archives
dpkg -i containerd.io_1.4.11-1_amd64.deb
dpkg -i docker-ce-cli_5%3a20.10.10< sub> 3-0< /sub> ubuntu-focal_amd64.deb
dpkg -i docker-ce-rootless-extras_5%3a20.10.10< sub> 3-0< /sub> ubuntu-focal_amd64.deb
dpkg -i docker-ce_5%3a20.10.10< sub> 3-0< /sub> ubuntu-focal_amd64.deb
systemctl start docker
systemctl enable docker
导入docker镜像
docker load -i node-exporter.tar
docker load -i alertmanager.tar
docker load -i prometheus.tar
docker load -i ceph.tar
docker load -i grafana.tar
安装cephadm
chmod +x cephadm
cp cephadm /usr/bin/
apt install cephadm --allow-unauthenticated
#如果有报错,先执行 apt --fix-broken install
引导新群集以下操作只在一台节点执行就可以,然运行该命令:?
?ceph bootstrap?
?cephadm bootstrap --mon-ip 192.168.174.128
此命令将会进行以下操作:
- 为本地主机上的新群集创建monitor和manager守护程序。
- 为 Ceph 群集生成新的 SSH 密钥,并将其添加到root用户的文件?
?/root/.ssh/authorized_keys?
? - 将与新群集通信所需的最小配置文件保存到 ?
?/etc/ceph/ceph.conf?
? - 将?
?client.admin?
?管理(特权!)密钥的副本写入??/etc/ceph/ceph.client.admin.keyring?
? - 将公钥的副本写入?
?/etc/ceph/ceph.pub?
?
文章图片
文章图片
执行完成后我们可以查看ceph.conf已经写入了
文章图片
安装ceph
cd /offlinePackage/archives
dpkg -i *.deb #执行此命令会将我们之前缓存的包都安装完
添加主机到集群
将公钥添加到新主机
ssh-copy-id -f -i /etc/ceph/ceph.pub node2
ssh-copy-id -f -i /etc/ceph/ceph.pub node3
告诉Ceph,新节点是集群的一部分
[root@localhost < sub> ]# ceph orch host add node2
Added host node2
[root@localhost < /sub> ]# ceph orch host add node3
Added host node3
添加主机会自动扩展mon和mgr节点
文章图片
部署OSD
可以用以下命令显示集群中的存储设备清单
ceph orch device ls
如果满足以下所有_条件_,则存储设备被视为可用:
- 设备必须没有分区。
- 设备不得具有任何 LVM 状态。
- 不得安装设备。
- 设备不能包含文件系统。
- 设备不得包含 Ceph BlueStore OSD。
- 设备必须大于 5 GB。
从特定主机上的特定设备创建 OSD
ceph orch daemon add osd node1:/dev/sdb
ceph orch daemon add osd node1:/dev/sdc
ceph orch daemon add osd node1:/dev/sdd
ceph orch daemon add osd node1:/dev/sde
ceph orch daemon add osd node2:/dev/sdd
ceph orch daemon add osd node2:/dev/sdb
ceph orch daemon add osd node2:/dev/sdc
ceph orch daemon add osd node2:/dev/sde
ceph orch daemon add osd node3:/dev/sdb
ceph orch daemon add osd node3:/dev/sdc
ceph orch daemon add osd node3:/dev/sdd
ceph orch daemon add osd node3:/dev/sde
其他节点的ceph配置
libvirt的rbd存储需要在其他ceph节点上能执行ceph的命令,需要将node1的配置拷贝到node2和node3上
root@node2:< sub> # mkdir /etc/ceph
root@node3:< /sub> # mkdir /etc/ceph
root@node1:< sub> # cd /etc/ceph
root@node1:< /sub> # scp ceph* node2:/etc/ceph
root@node1:~# scp ceph* node3:/etc/ceph
部署MDS
使用 CephFS 文件系统需要一个或多个 MDS 守护程序。如果使用新的ceph fs卷接口来创建新文件系统,则会自动创建这些文件 部署元数据服务器:
ceph orch apply mds < strong> --placement="< /strong> [** ...]"
CephFS 需要两个 Pools,cephfs-data 和 cephfs-metadata,分别存储文件数据和文件元数据
[root@node1 < sub> ]# ceph osd pool create cephfs_data 64 64
[root@node1 < /sub> ]# ceph osd pool create cephfs_metadata 64 64
创建一个 CephFS, 名字为 cephfs
[root@node1 < sub> ]# ceph fs new cephfs cephfs_metadata cephfs_data
[root@node1 < /sub> ]# ceph orch apply mds cephfs --placement="3 node1 node2 node3"
Scheduled mds.cephfs update...
文章图片
验证至少有一个MDS已经进入active状态,默认情况下,ceph只支持一个活跃的MDS,其他的作为备用MDS
ceph fs status cephfs
文章图片
部署RGW
Cephadm将radosgw部署为管理特定领域和区域的守护程序的集合,RGW是Ceph对象存储网关服务RADOS Gateway的简称,是一套基于LIBRADOS接口封装而实现的FastCGI服务,对外提供RESTful风格的对象存储数据访问和管理接口。
文章图片
使用 cephadm 时,radosgw 守护程序是通过mon配置数据库而不是通过ceph.conf 或命令行配置的。如果该配置尚未就绪,则 radosgw 守护进程将使用默认设置启动(默认绑定到端口 80)。 要在node1、node2和node3上部署3个服务于myorg领域和us-east-1区域的rgw守护进程,在部署 rgw 守护进程之前,如果它们不存在,则自动创建提供的域和区域:
ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3"
或者可以使用?
?radosgw-admin?
?命令手动创建区域、区域组和区域:radosgw-admin realm create --rgw-realm=myorg --default
radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default
radosgw-admin period update --rgw-realm=myorg --commit
【CEPH离线部署(纯内网)】可以看到已经创建完成
文章图片
推荐阅读
- 网络层协议介绍及概述
- PyTorch教程 层和块
- #yyds干货盘点#Redis之主从复制详述
- SpringCloud升级之路2020.0.x版-41. SpringCloudGateway 基本流程讲解
- #yyds干货盘点#技术路线的选择重要但不具有决定性
- #yyds干货盘点# 5. Python 循环的本质就是一段代码懒得重复写
- #yyds干货盘点# web安全day13(简单深透测试流程)
- oeasy教您玩转vim - 70 - # 折叠细节
- SpringMVC接收参数 具体示例#yyds干货盘点#