云原生--部署ceph存储

一、Ceph集群的部署

1、集群环境

1.1 集群架构

主机名业务IP存储IP服务器配置系统类型集群角色
ceph-mon1-deploy172.17.10.61/16192.168.10.61/242C/4GUbuntu1804mon+deploy(部署节点)
ceph-mon2172.17.10.62/16192.168.10.62/242C/4GUbuntu1804mon(监控节点)
ceph-mon3172.17.10.63/16192.168.10.63/242C/4GUbuntu1804mon
ceph-mgr1172.17.10.64/16192.168.10.64/242C/4GUbuntu1804mgr(管理节点)
ceph-mgr2172.17.10.65/16192.168.10.65/242C/4GUbuntu1804mgr
ceph-node1172.17.10.66/16192.168.10.66/242C/4GUbuntu1804node(存储节点)
ceph-node2172.17.10.67/16192.168.10.67/242C/4GUbuntu1804node
ceph-node3172.17.10.68/16192.168.10.68/242C/4GUbuntu1804node

1.2 环境初始化—网络

  • 业务网络:puplic network (千兆)-----172.17.10.0/16
  • 存储网络:cluster network (万兆)----192.168.10.0/24
1.2.1 网络配置
root@ceph-mon1:~# cat /etc/netplan/00-installer-config.yaml 
# This is the network config written by 'subiquity'
network:
  version: 2
  ethernets:
    eth0:    #业务网络
      dhcp4: no
      dhcp6: no
      addresses: [172.17.10.61/16]
      gateway4: 172.17.1.2
      nameservers:
        addresses: [114.114.114.114]
    eth1:  #存储网络
      dhcp4: no
      dhcp6: no
      addresses: [192.168.10.61/24]
      nameservers:
        addresses: [114.114.114.114]
  version: 2
  
  #其他主机依此配置业务IP和存储IP

1.3 创建普通用户—cephadmnin(每个节点都需要配置)

#创建普通用户的目的
推荐使用指定的普通用户部署和运行 ceph 集群,普通用户只要能以非交互方式执行 sudo
命令执行一些特权命令即可,新版的 ceph-deploy 可以指定包含 root 的在内只要可以执行
sudo 命令的用户,不过仍然推荐使用普通用户,安装完成 ceph 会自动创建 ceph 用户, 因
此 推 荐 使 用 除了 了 ceph 用 户 之 外 的 比如 如 cephuser 、cephadmin 这 样 的 普 通 用 户 去 部 署 和
管理 理 ceph 集 群 。
cephadmin 仅在 在 ceph-deploy 用 于 部 署 和 管理 理 ceph 集 群, , 比 如 首 次 初 始 化 集 群 和 部 署 集
群 、 添 加 节 点 、 删 除 节 点 等 ,ceph 集 群在 在 node 节 点 、mgr 节 点 等 会 使用 用 ceph 用 户 启 动
服 务 进 程

root@ceph-mon1:~# groupadd -r -g 2088 cephadmin && useradd -r -m -s /bin/bash -u 2088 -g 2088 cephadmin && echo cephadmin:root123 | chpasswd

#各服务器允许 cephadmin 用户以 sudo 执行特权命令
root@ceph-mon1:~# echo "cephadmin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

#切换到cephadmin用户
root@ceph-mon1:~#su - cephadmin

1.4 环境初始化–免密登录

#生成服务器的公钥和私钥
cephadmin@ceph-mon1:~$~#ssh-keygen
#免密登录
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.61
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.62
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.63
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.64
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.65
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.66
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.67
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.68
cephadmin@ceph-mon1:~$ssh-copy-id cephadmin@172.17.10.69

1.5 环境初始化–设置主机名

#设置主机名
root@ceph-mon1:~# hostnamectl set-hostname ceph-mon1   
#配置/etc/hosts文件
cephadmin@ceph-mon1:~$ cat /etc/hosts
172.17.10.61 ceph-mon1.example.local ceph-mon1
172.17.10.62 ceph-mon2.example.local ceph-mon2
172.17.10.63 ceph-mon3.example.local ceph-mon3
172.17.10.64 ceph-mgr1.example.local ceph-mgr1
172.17.10.65 ceph-mgr2.example.local ceph-mgr2
172.17.10.66 ceph-node1.example.local ceph-node1
172.17.10.67 ceph-node2.example.local ceph-node2
172.17.10.68 ceph-node3.example.local ceph-node3
172.17.10.69 ceph-node4.example.local ceph-node4
#把/etc/hosts文件拷贝到其他节点
cephadmin@ceph-mon1:~$ for i in {62..69};do scp /etc/hosts 172.17.10.$i:/etc/hosts;done

1.6 环境初始化–配置apt源(每个节点都必须执行)

root@ceph-mon1:~# cat /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse

#配置ceph源
root@ceph-mon1:~# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list

#下载安装包
root@ceph-mon1:~#apt-get -y install python apt-transport-https ca-certificates curl software-properties-common
#更新apt源
root@ceph-mon1:~# apt update

1.7 环境初始化–时间同步

root@ceph-mon1:~# */5 * * * * /usr/sbin/ntpdate time1.aliyun.com &> /dev/null && hwclock -w &> /dev/null

1.8 环境初始化—下载安装ceph的部署工具

cephadmin@ceph-mon1:~$ apt install -y python-pip
cephadmin@ceph-mon1:~$ pip install ceph-deploy
cephadmin@ceph-mon1:~$ pip install ceph-deploy==2.0.1 -i https://mirrors.aliyun.com/pypi/simple
cephadmin@ceph-mon1:~$ ceph-deploy --version
2.0.1

2、部署ceph集群中的mon角色

2.1 在部署节点(ceph-mon1)上初始化mon节点

cephadmin@ceph-mon1:~$ mkdir ceph-cluster
cephadmin@ceph-mon1:~$ cd ceph-cluster
 
#ceph-deploy命令的介绍
cephadmin@ceph-mon1:ceph-cluster$ ceph-deploy --help
new:开始部署一个新的 ceph 存储集群,并生成 CLUSTER.conf 集群配置文件和 keyring
认证文件。
install: 在远程主机上安装 ceph 相关的软件包, 可以通过--release 指定安装的版本。
rgw:管理 RGW 守护程序(RADOSGW,对象存储网关)。
mgr:管理 MGR 守护程序(ceph-mgr,Ceph Manager DaemonCeph 管理器守护程序)。
mds:管理 MDS 守护程序(Ceph Metadata Server,ceph 源数据服务器)。
mon:管理 MON 守护程序(ceph-mon,ceph 监视器)。
gatherkeys:从指定获取提供新节点的验证 keys,这些 keys 会在添加新的 MON/OSD/MD
加入的时候使用。
disk:管理远程主机磁盘。
osd:在远程主机准备数据磁盘,即将指定远程主机的指定磁盘添加到 ceph 集群作为 osd
使用。
repo: 远程主机仓库管理。
admin:推送 ceph 集群配置文件和 client.admin 认证文件到远程主机。
config:将 ceph.conf 配置文件推送到远程主机或从远程主机拷贝。
uninstall:从远端主机删除安装包。
purgedata:从/var/lib/ceph 删除 ceph 数据,会删除/etc/ceph 下的内容。
purge: 删除远端主机的安装包和所有数据。
forgetkeys:从本地主机删除所有的验证 keyring, 包括 client.admin, monitor, bootstrap 等
认证文件。
pkg: 管理远端主机的安装包。
calamari:安装并配置一个 calamari web 节点,calamari 是一个 web 监控平台。

#初始化mon节点---生成集群配置文件
cephadmin@ceph-mon1:ceph-cluster$ ceph-deploy new --cluster-network 192.168.10.0/24 --public-network 172.17.0.0/16 ceph-mon1
cephadmin@ceph-mon1:ceph-cluster$ ll
-rw-r--r--  1 root root    264 Jul  4 21:33 ceph.conf   #ceph配置文件
-rw-r--r--  1 root root 371488 Jul  4 23:06 ceph-deploy-ceph.log  #初始化日志
-rw-------  1 root root     73 Jul  4 21:33 ceph.mon.keyring  #用于ceph mon节点内部通讯认证的秘钥环文件

2.2 初始化node节点

cephadmin@ceph-mon1:ceph-cluster$ ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3

#注意:
–no-adjust-repos  #不同步仓库文件
–nogpgcheck       #不检查校验

2.3 在mon节点上安装ceph-mon

root@ceph-mon1:~# apt install -y ceph-mon
root@ceph-mon1:~# ceph --version
ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)

安装过程会出现以下截图
在这里插入图片描述
在这里插入图片描述

2.4 在部署节点上初始化ceph-mon

注意:在初始化前一定先看ceph的配置文件ceph.conf,因为初始化mon节点取决于mon节点

root@ceph-mon1:~/ceph-cluster# cat ceph.conf
[global]
fsid = 0d2fd27a-4347-46fd-ac27-29f11ef10982
public_network = 172.17.0.0/16
cluster_network = 192.168.10.0/24
mon_initial_members = ceph-mon1
mon_host = 172.17.10.61
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

#检查完配置文件后,初始化mon节点
cephadmin@ceph-mon1:~$ ceph-deploy  mon create-initial

#注意:初始化完后ceph-mon1节点上就会启动ceph-mon的进程
root@ceph-mon1:~ ps -ef|grep mon1
ceph       1009      1  0 03:42 ?        00:00:31 /usr/bin/ceph-mon -f --cluster ceph --id ceph-mon1 --setuser ceph --setgroup ceph
daemon     1039      1  0 03:42 ?        00:00:00 /usr/sbin/atd -f
message+   1042      1  0 03:42 ?        00:00:02 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root       1111      1  0 03:42 ?        00:00:00 /usr/lib/accountsservice/accounts-daemon
root      57538  57505  0 04:55 pts/0    00:00:00 grep --color=auto mon

2.5 秘钥的分发

在ceph-deploy节点把配置文件和admin秘钥拷贝至ceph集群需要执行ceph管理命令的节点.从而不需要后期通过ceph命令对ceph集群进行管理配置的时候每次都需要指定ceph-mon节点地址和ceph.client.admin.keyring文件,另外各ceph-mon节点也需要同步ceph的集群配置文件和认证文件
1、在所有需要管理ceph的节点上安装ceph-common软件包(如:ceph-mgr1,ceph-mgr2等)
root@ceph-mon1:~ apt install ceph-common -y

2、分发秘钥
cephadmin@ceph-mon1 ceph-cluster$ ceph-deploy admin  ceph-mon1 ceph-mgr1 ceph-mgr2 ceph-node1 ceph-node2 ceph-node3 

#注意:
认证文件的属主和属组为了安全考虑,默认设置为了 root 用户和 root 组,如果需要 cephadmin用户也能执行 ceph 命令,那么就需要对 cephadmin 用户进行授权
cephadmin@ceph-mon1 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-mgr1 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-mgr2 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-node1 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-node2 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
cephadmin@ceph-node3 ceph-cluster$ setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring

3、验证秘钥是否分发成功
root@ceph-mgr1:~# ssh ceph-node1 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpHUGujm
root@ceph-mgr1:~# ssh ceph-node2 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpZ4VQ0R
root@ceph-mgr1:~# ssh ceph-node3 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpx9fb5U
root@ceph-mgr1:~# ssh ceph-mon1 'ls /etc/ceph/'
ceph.client.admin.keyring
ceph.conf
rbdmap
tmpAkZh_I
root@ceph-mgr1:~# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf  rbdmap  tmpYNJpSF

3、部署ceph集群中的mgr角色

3.1 在ceph-mgr节点上安装ceph-mgr包

root@ceph-mgr1:~# apt install ceph-mgr -y
root@ceph-mgr2:~# apt install ceph-mgr -y

3.2 在部署节点ceph-mon1上初始化ceph-mgr

#初始化mgr节点
cephadmin@ceph-mon1:~/ceph-cluster$ ceph-deploy mgr create ceph-mgr1
cephadmin@ceph-mon1:~/ceph-cluster$ ceph-deploy mgr create ceph-mgr2

#验证mgr是否安装完毕
root@ceph-mon1:~/ceph-cluster# ceph -s
  cluster:
    id:     0d2fd27a-4347-46fd-ac27-29f11ef10982
    health: HEALTH_WARN
            client is using insecure global_id reclaim
            mon is allowing insecure global_id reclaim
 
  services:
    mon: 1 daemons, quorum ceph-mon1 (age 92m)
    mgr: ceph-mgr1(active, since 91m), standbys: ceph-mgr2
    osd: 9 osds: 9 up (since 91m), 9 in (since 30h)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   9.0 GiB used, 1.7 TiB / 1.8 TiB avail
    pgs:     

4、部署ceph集群中的OSD

4.1 在部署节点给node节点安装环境

#部署OSD
ceph-deploy install ceph-node01 ceph-node02 ceph-node03 ceph-node04
#查看node节点的磁盘信息
ceph-deploy disk list ceph-node01
#擦除node节点上磁盘数据
ceph-deploy disk zap ceph-node1 /dev/sdb ,/dev/sdc,/dev/sdd
ceph-deploy disk zap ceph-node2 /dev/sdb ,/dev/sdc,/dev/sdd
ceph-deploy disk zap ceph-node3 /dev/sdb ,/dev/sdc,/dev/sdd

4.2 添加OSD

数据的分类:

类型含义
Dataceph保存的对象数据
Blockrocks DB数据即元数据
block-wal数据库的wal日志
4.2.1 元数据和数据全放一起
ceph-deploy osd create ceph-node01 --data /dev/sdb
4.2.2 数据分开放

一般会将wal放到nvme上,如果都是ssd就没必要拆开放了.
预写日志和数据日志分开,这个用的稍微多一点,

ceph-deploy osd create ceph-node01 --data /dev/sdc --block-wal /dev/sdb
#数据日志和元数据分开
ceph-deploy osd create ceph-node01 --data /dev/sdc --block-db /dev/sdd
#全部分开放
ceph-deploy osd create ceph-node01 --data /dev/sdc --block-db /dev/sdd --block-wal /dev/sdb

二、ceph集群的高可用

2.1 mon节点的高可用

2.1.1 在新加节点先安装ceph-mon包

apt install ceph-mon -y

2.1.2 在ceph-deploy上加入新节点

ceph-deploy mon add ceph-mon02
ceph-deploy mon add ceph-mon03

2.2 mgr节点的高可用

2.2.1 在新的节点安装ceph-mgr包

sudo apt install ceph-mgr -y

2.2.2 在ceph-deploy上加入新节点

eph-deploy mgr create ceph-mgr02

2.2.3 cehp-mgr主从关系

可以看到ceph-mgr01是主,ceph-mgr02是standbys
ceph -s
   mgr: ceph-mgr01(active, since 52m), standbys: ceph-mgr02

入新节点

ceph-deploy mon add ceph-mon02
ceph-deploy mon add ceph-mon03

2.2 mgr节点的高可用

2.2.1 在新的节点安装ceph-mgr包

sudo apt install ceph-mgr -y

2.2.2 在ceph-deploy上加入新节点

eph-deploy mgr create ceph-mgr02

2.2.3 cehp-mgr主从关系

可以看到ceph-mgr01是主,ceph-mgr02是standbys
ceph -s
   mgr: ceph-mgr01(active, since 52m), standbys: ceph-mgr02

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下步骤使用docker-compose来部署Ceph集群: 1. 创建一个新的文件夹,用于存docker-compose文件和Ceph配置文件。 2. 在该文件夹中创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '3' services: mon: image: ceph/daemon:latest container_name: ceph-mon command: mon environment: - MON_IP=<mon_IP> - CEPH_PUBLIC_NETWORK=<public_network> volumes: - ./ceph:/etc/ceph networks: - ceph-net osd: image: ceph/daemon:latest container_name: ceph-osd command: osd privileged: true environment: - OSD_DEVICE=/dev/sdb - OSD_TYPE=disk - OSD_FORCE_ZAP=1 volumes: - /dev:/dev - ./ceph:/etc/ceph networks: - ceph-net networks: ceph-net: ``` 请确保将`<mon_IP>`替换为mon节点的IP地址,并将`<public_network>`替换为Ceph集群的公共网络CIDR。 3. 在该文件夹中创建一个名为`ceph.conf`的文件,并添加以下内容: ``` [global] fsid = $(uuidgen) mon_initial_members = mon mon_host = <mon_IP> auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx [mon] log file = /var/log/ceph/ceph-mon.log chdir = "" [osd] log file = /var/log/ceph/ceph-osd.log chdir = "" osd_journal_size = 100 ``` 请确保将`<mon_IP>`替换为mon节点的IP地址。 4. 在终端中导航到该文件夹,并运行以下命令来启动Ceph集群: ``` docker-compose up -d ``` 这将使用docker-compose启动一个名为`ceph-mon`的容器作为mon节点,以及一个名为`ceph-osd`的容器作为osd节点。 5. 确保Ceph集群已成功启动,可以使用以下命令来检查: ``` docker exec -it ceph-mon ceph -s ``` 这将显示Ceph集群的状态信息。 以上是使用docker-compose部署Ceph集群的基本步骤。你可以根据自己的需求进行自定义配置和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值