Ceph离线(纯内网)部署

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介: Ceph离线(纯内网)部署

大家好,我是wanger。之前有写过使用cephadm安装ceph octopus,很多时候生产环境处于内网中,这就需要我们离线进行部署,下面是离线部署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.114


curl --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。


Ceph 拒绝在不可用的设备上预配 OSD。为保证能成功添加osd,我刚才在每个node上新加了一块磁盘


从特定主机上的特定设备创建 OSD


ceph orch daemon add osd node1:/dev/sdb


安装完成后我们可以看一下它用到了哪些docker镜像


2c2ab41cde4bde4c78107cac1f2ea2c9.png


导出docker镜像


需要把这些镜像导出来,做成离线包


root@node1:~# docker save -o ceph.tar quay.io/ceph/ceph:v15
root@node1:~# docker save -o prometheus.tar quay.io/prometheus/prometheus:v2.18.1
root@node1:~# docker save -o grafana.tar quay.io/ceph/ceph-grafana:6.7.4         
root@node1:~# 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版本,其他版本基本不变)


398167085eb319008644b4d1492cc6e7.png


开始离线部署


前提条件


Cephadm使用容器和systemd安装和管理Ceph集群,并与CLI和仪表板GUI紧密集成。


  • cephadm仅支持octopus  v15.2.0和更高版本。
  • cephadm与新的业务流程API完全集成,并完全支持新的CLI和仪表板功能来管理集群部署。
  • cephadm需要容器支持(podman或docker)和Python 3。
  • 时间同步


基础配置


这里我使用的ubuntu20.04来安装的ceph,已经内置了python3,不再单独安装,不做特殊说明三台服务器都要执行下面的步骤


配置hosts解析


cat >> /etc/hosts <<EOF
192.168.10.2 node1
192.168.10.3 node2
192.168.10.4 node3
EOF


分别在三个节点设置主机名


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~3-0~ubuntu-focal_amd64.deb
dpkg -i docker-ce-rootless-extras_5%3a20.10.10~3-0~ubuntu-focal_amd64.deb
dpkg -i docker-ce_5%3a20.10.10~3-0~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


安装完成后会有一个dashboard界面


407b1f6d2446bdfe32d498c29b03d147.png

5903730fc746d35ff771ae890b4db0de.png


执行完成后我们可以查看ceph.conf已经写入了


be15110828238cb2f749629c78d6bc83.png


安装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 ~]# ceph orch host add node2
Added host 'node2'
[root@localhost ~]# ceph orch host add node3
Added host 'node3'


添加主机会自动扩展mon和mgr节点


671d88dab5f628d789dd14baeefe751d.png


部署OSD


可以用以下命令显示集群中的存储设备清单


ceph orch device ls


如果满足以下所有_条件_,则存储设备被视为可用:


  • 设备必须没有分区。
  • 设备不得具有任何 LVM 状态。
  • 不得安装设备。
  • 设备不能包含文件系统。
  • 设备不得包含 Ceph BlueStore OSD。
  • 设备必须大于 5 GB。


Ceph 拒绝在不可用的设备上预配 OSD。


从特定主机上的特定设备创建 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:~# mkdir /etc/ceph
root@node3:~# mkdir /etc/ceph
root@node1:~# cd /etc/ceph
root@node1:~# scp ceph* node2:/etc/ceph
root@node1:~# scp ceph* node3:/etc/ceph


部署MDS


使用 CephFS 文件系统需要一个或多个 MDS 守护程序。如果使用新的ceph fs卷接口来创建新文件系统,则会自动创建这些文件 部署元数据服务器:


ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"


CephFS 需要两个 Pools,cephfs-data 和 cephfs-metadata,分别存储文件数据和文件元数据


[root@node1 ~]# ceph osd pool create cephfs_data 64 64
[root@node1 ~]# ceph osd pool create cephfs_metadata 64 64
创建一个 CephFS, 名字为 cephfs
[root@node1 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
[root@node1 ~]# ceph orch apply mds cephfs --placement="3 node1 node2 node3"
Scheduled mds.cephfs update...


851e87436eb3b3a247eab394173231ae.png


验证至少有一个MDS已经进入active状态,默认情况下,ceph只支持一个活跃的MDS,其他的作为备用MDS

ceph fs status cephfs


e5b9aed493d072854e318c3eb903ffaf.png


部署RGW


Cephadm将radosgw部署为管理特定领域和区域的守护程序的集合,RGW是Ceph对象存储网关服务RADOS Gateway的简称,是一套基于LIBRADOS接口封装而实现的FastCGI服务,对外提供RESTful风格的对象存储数据访问和管理接口。


5ba3ad0c92780a2b6ab97b080f300afa.png


使用 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


可以看到已经创建完成


59844ef1a32a75552e9ac00d8b61737a.png


最后,求关注。如果你还想看更多优质原创文章,欢迎关注我们的公众号「运维开发故事」。

相关文章
|
存储 缓存 NoSQL
Harbor高可用集群设计及部署(基于离线安装方式一)
基于Harbor离线安装方式的高可用方案设计及部署。
396 0
|
2月前
|
监控 文件存储 Docker
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
与电脑不同,NAS通常7x24小时运行,便于下载资源,解决BT/PT下载需长时间在线的问题。因此,qBittorrent、Transmission等下载管理工具成为NAS用户的必备应用。通过Docker,用户可在多种NAS设备上快速安装这些工具,并通过局域网IP地址+端口访问。然而,缺乏公网IPv4地址导致远程访问困难,贝锐花生壳提供了解决方案,允许无公网IP情况下通过固定域名远程访问NAS中的下载工具,简化了部署过程,使用户能随时随地控制家中的下载任务。
227 33
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
|
存储 Java Linux
Ceph集群详细部署配置图文讲解(二)(下)
Ceph集群详细部署配置图文讲解(二)(下)
557 0
Ceph集群详细部署配置图文讲解(二)(下)
|
2月前
|
存储 对象存储
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
这篇文章是关于Ceph Reef(18.2.X)版本中对象存储系统的配置和使用案例,包括对象存储网关的概述、核心资源介绍、Ceph RGW支持的接口、高可用radosgw的部署、s3cmd工具的使用以及如何通过HTTP方式访问对象存储。
62 3
Ceph Reef(18.2.X)的对象存储网关(rgw)组件搭建
|
6月前
|
数据安全/隐私保护 Docker 容器
离线方式部署harbor
离线方式部署harbor
95 2
|
存储 人工智能 开发工具
什么是集群极速部署工具FastGPU
FastGPU是一套阿里云推出的人工智能计算极速部署工具。您可以通过其提供的便捷的接口和自动工具,实现人工智能训练和推理任务在阿里云IaaS资源上的快速部署。
|
Kubernetes 开发工具 容器
k8s搭建集群—部署CNI网络插件——2023.02
k8s搭建集群—部署CNI网络插件——2023.02
501 0
|
6月前
|
Kubernetes 网络协议 网络虚拟化
WireGuard 系列文章(九):基于 K3S+WireGuard+Kilo 搭建跨多云的统一 K8S 集群
WireGuard 系列文章(九):基于 K3S+WireGuard+Kilo 搭建跨多云的统一 K8S 集群
|
关系型数据库 应用服务中间件 数据库
Harbor高可用集群设计及部署(基于离线安装方式二)
基于Harbor离线安装方式的高可用方案设计及部署。
410 0
|
存储 网络安全 数据安全/隐私保护
Ceph集群详细部署配置图文讲解(二)(上)
Ceph集群详细部署配置图文讲解(二)(上)
575 0
Ceph集群详细部署配置图文讲解(二)(上)