Ceph 离线(纯内网)部署

开发 项目管理
大家好,我是wanger。之前有写过使用cephadm安装ceph octopus,很多时候生产环境处于内网中,这就需要我们离线进行部署,下面是离线部署ceph的步骤。

[[432669]]

大家好,我是wanger。之前有写过使用cephadm安装ceph octopus,很多时候生产环境处于内网中,这就需要我们离线进行部署,下面是离线部署ceph的步骤。

制作离线安装包

首先我们需要在有网的环境下缓存需要用到的deb包和docker镜像

安装docker-ce

  1. curl -sSL https://get.daocloud.io/docker | sh 
  2. systemctl daemon-reload 
  3. systemctl restart docker 
  4. systemctl enable docker 

安装cephadm

使用curl获取独立脚本的最新版本。网络不好的话可直接去GitHub复制

编辑/etc/resolv.conf文件修改nameserver为114,.114.114.114

  1. curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm 
  2. chmod +x cephadm 

安装cephadm

  1. ./cephadm add-repo --release octopus 
  2. ./cephadm install 

引导新群集

集要引导群集,需要先创建一个目录:/etc/ceph

  1. mkdir -p /etc/ceph 

以下操作只在一台节点执行就可以,然运行该命令:ceph bootstrap

  1. ./cephadm bootstrap --mon-ip 192.168.10.2 

启用ceph cli

  1. cephadm add-repo --release octopus 
  2. cephadm install ceph-common 

部署OSD

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

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

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

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

  1. ceph orch daemon add osd node1:/dev/sdb 

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

导出docker镜像

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

  1. root@node1:~# docker save -o ceph.tar quay.io/ceph/ceph:v15 
  2. root@node1:~# docker save -o prometheus.tar quay.io/prometheus/prometheus:v2.18.1 
  3. root@node1:~# docker save -o grafana.tar quay.io/ceph/ceph-grafana:6.7.4          
  4. root@node1:~# docker save -o alertmanager.tar quay.io/prometheus/alertmanager:v0.20.0 
  5. 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包的依赖关系

  1. apt-get install dpkg-dev -y 
  2.  mkdir /offlinePackage 
  3. cp -r /var/cache/apt/archives  /offlinePackage 
  4. chmod 777 -R /offlinePackage/ 
  5. dpkg-scanpackages /offlinePackage/ /dev/null |gzip >/offlinePackage/Packages.gz 
  6. tar zcvf offlinePackage.tar.gz /offlinePackage/ 

修改cephadm脚本

最后需要修改的是cephadm安装脚本,默认安装的时候cephadm是去网上pull镜像,但是实际生产环境是没有外网的,需要修改成直接用本地的镜像,修改_pull_image函数的cmd列表中的pull,将其修改为images。(我用的是octopus版本,其他版本基本不变)

开始离线部署

前提条件

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

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

基础配置

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

配置hosts解析

  1. cat >> /etc/hosts <<EOF 
  2. 192.168.10.2 node1 
  3. 192.168.10.3 node2 
  4. 192.168.10.4 node3 
  5. EOF 

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

  1. hostnamectl set-hostname node1 
  2. hostnamectl set-hostname node2 
  3. hostnamectl set-hostname node3 

配置本地源

注意:offlinedeb前面有一个空格

  1. tar zxvf offlinePackage.tar.gz -C / 
  2. mv /etc/apt/sources.list /etc/apt/sources.list.bak 
  3. vi /etc/apt/sources.list 
  4. deb file:/// offlinePackage/ 
  5. apt update 

安装docker

  1. cd /offlinedeb/archives 
  2. dpkg -i containerd.io_1.4.11-1_amd64.deb  
  3. dpkg -i docker-ce-cli_5%3a20.10.10~3-0~ubuntu-focal_amd64.deb 
  4. dpkg -i docker-ce-rootless-extras_5%3a20.10.10~3-0~ubuntu-focal_amd64.deb 
  5. dpkg -i docker-ce_5%3a20.10.10~3-0~ubuntu-focal_amd64.deb 
  6. systemctl start docker 
  7. systemctl enable docker 

导入docker镜像

  1. docker load -i node-exporter.tar  
  2.  docker load -i alertmanager.tar 
  3. docker load -i prometheus.tar  
  4. docker load -i ceph.tar  
  5. docker load -i grafana.tar 

安装cephadm

  1. chmod +x cephadm 
  2. cp cephadm /usr/bin/ 
  3. apt install cephadm --allow-unauthenticated 
  4. #如果有报错,先执行 apt --fix-broken install 

引导新群集

以下操作只在一台节点执行就可以,然运行该命令:ceph bootstrap

  1. 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界面

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

安装ceph

  1. cd /offlinePackage/archives 
  2. dpkg -i *.deb #执行此命令会将我们之前缓存的包都安装完 

添加主机到集群

将公钥添加到新主

  1. ssh-copy-id -f -i /etc/ceph/ceph.pub node2 
  2. ssh-copy-id -f -i /etc/ceph/ceph.pub node3 

告诉Ceph,新节点是集群的一部分

  1. [root@localhost ~]# ceph orch host add node2 
  2. Added host 'node2' 
  3. [root@localhost ~]# ceph orch host add node3 
  4. Added host 'node3' 

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

部署OSD

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

  1. ceph orch device ls 

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

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

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

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

  1. ceph orch daemon add osd node1:/dev/sdb 
  2. ceph orch daemon add osd node1:/dev/sdc 
  3. ceph orch daemon add osd node1:/dev/sdd 
  4. ceph orch daemon add osd node1:/dev/sde 
  5. ceph orch daemon add osd node2:/dev/sdd 
  6. ceph orch daemon add osd node2:/dev/sdb 
  7. ceph orch daemon add osd node2:/dev/sdc 
  8. ceph orch daemon add osd node2:/dev/sde 
  9. ceph orch daemon add osd node3:/dev/sdb 
  10. ceph orch daemon add osd node3:/dev/sdc 
  11. ceph orch daemon add osd node3:/dev/sdd 
  12. ceph orch daemon add osd node3:/dev/sde 

其他节点的ceph配置

libvirt的rbd存储需要在其他ceph节点上能执行ceph的命令,需要将node1的配置拷贝到node2和node3上

  1. root@node2:~# mkdir /etc/ceph 
  2. root@node3:~# mkdir /etc/ceph 
  3. root@node1:~# cd /etc/ceph 
  4. root@node1:~# scp ceph* node2:/etc/ceph 
  5. root@node1:~# scp ceph* node3:/etc/ceph 

部署MDS

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

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

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

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

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

  1. 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 守护进程之前,如果它们不存在,则自动创建提供的域和区域:

  1. ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3" 

或者可以使用radosgw-admin命令手动创建区域、区域组和区域:

  1. radosgw-admin realm create --rgw-realm=myorg --default 
  2. radosgw-admin zonegroup create --rgw-zonegroup=default --master --default 
  3. radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default 
  4. radosgw-admin period update --rgw-realm=myorg --commit 

 

可以看到已经创建完成

 

责任编辑:武晓燕 来源: 运维开发故事
相关推荐

2023-06-02 08:04:46

支点系统操作系统

2021-01-15 08:07:30

Ceph octopu集群运维

2023-05-17 08:05:05

数字化转型国产化系统

2017-03-22 10:06:40

ubuntuceph集群

2015-07-28 10:19:45

开源Ceph管理平台Inkscope部署

2021-01-18 09:08:44

树莓派Ceph开源

2020-12-11 10:47:55

clouderaMan大数据

2022-04-01 10:56:55

KubeVelaMySQL部署

2010-04-17 13:17:29

网络安全管理策略web安全

2018-01-09 16:45:31

离线网络网络安全一键式部署

2024-04-19 13:53:20

2023-02-27 07:40:00

2021-01-26 06:58:03

AnsibleCeph集群运维

2011-01-11 14:30:29

企业内网开发环境

2018-08-31 09:18:19

CentOS6.7服务器DNS服务

2011-03-16 11:07:51

2023-01-03 07:57:27

2023-10-08 21:10:50

HarborOCINydus

2013-04-18 17:07:36

2013-04-12 13:21:44

点赞
收藏

51CTO技术栈公众号