ceph 15.2.1(octups)部署

服务器信息

节点 角色 地址
node-1 mon,mgr,mds,osd 192.168.100.11
node-2 mon,mgr,mds,osd 192.168.100.12
node-3 mon,mgr,mds,osd 192.168.100.13
node-4 osd 192.168.100.14
node-5 osd 192.168.100.15
node-6 osd 192.168.100.16
node-7 osd 192.168.100.17
node-8 osd 192.168.100.18

互信和解析

编辑/etc/hosts文件把集群各节点的ip和主机名解析写入
创建一套ssh key复制到每个节点

时钟

使用chrony进行时钟同步

配置源

由于国外源比较慢,本文采用了清华的源仓库

  1. 导入key
$ sudo wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -

Note:

或者添加key: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E84AC2C0460F3994

  1. 添加源
$ sudo apt-add-repository "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-octopus/ $(lsb_release -sc) main"
或者
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-octopus/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/ceph.list
  1. 更新缓存
$ sudo apt update

关闭防火墙UFW

sudo systemctl stop ufw 
sudo systemctl disable ufw

安装包

  • 每个节点安装ceph的包
sudo apt-get update && sudo apt-get install ceph ceph-mds

部署mon

  1. 在任意mon节点系统内执行命令,生成一个集群使用的uuid(ceph.conf里的fsid使用)
uuidgen
  1. 新建并编辑"/etc/ceph/ceph.conf"
sudo -u ceph vim /etc/ceph/ceph.conf
添加如下内容
[global]
fsid = {UUID}    // uuidgen生成的id
mon initial members = {hostname}[,{hostname}]
mon host = {ip-address}[,{ip-address}]
  1. 为集群创建mon的秘钥并写入keyring文件/tmp/ceph.mon.keyring
sudo -u ceph ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
  1. 为集群创建一个管理秘钥(admin用户)并写入/etc/ceph/ceph.client.admin.keyring
sudo -u ceph ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
  1. 为集群创建一个启动osd的用户并写入/var/lib/ceph/bootstrap-osd/ceph.keyring(用来部署osd服务用的)
sudo -u ceph ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
  1. 将admin和bootstrap-osd的key导入到mon的key文件中
sudo -u ceph ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
sudo -u ceph ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring

Note:

mon就拥有了admin和bootstrap-osd的权限
此时/tmp/ceph.mon.keyring的内容类似如下:

[mon.]
       key = AQCFW99jNU/3CRAAReHHBSiXPM5KIwthxp+gNQ==
       caps mon = "allow *"
[client.admin]
       key = AQCtW99jm26yABAARn9dNISPbr+UMxalGAyG1Q==
       caps mds = "allow *"
       caps mgr = "allow *"
       caps mon = "allow *"
       caps osd = "allow *"
[client.bootstrap-osd]
       key = AQAeXN9joVrjEhAAL8rX84ExAgWGQ47reFsz9g==
       caps mgr = "allow r"
       caps mon = "profile bootstrap-osd"
  1. 在当前节点生成monmap文件
sudo -u ceph monmaptool --create --add $HOSTNAME {ip-address} --fsid {uuid} /tmp/monmap
  1. 创建mon目录
sudo -u ceph mkdir -p /var/lib/ceph/mon/ceph-$HOSTNAME

Note:

"ceph-\(HOSTNAME"中"ceph"是默认集群名, "\)HOSTNAME"内置主机名变量

  1. 初始化mon目录(即把monmap和mon的keyring写入mon目录)
sudo -u ceph ceph-mon --mkfs -i $HOSTNAME --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
  1. 修改ceph.conf
[global]
fsid = {cluster-id}
mon initial members = {hostname}[, {hostname}]
mon host = {ip-address}[, {ip-address}]
public network = {network}[, {network}]
cluster network = {network}[, {network}]
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024 # 默认: 1024
osd pool default size = 2  # pool默认副本数
osd pool default min size = 1 # 最小对外提供服务的副本数
osd pool default pg num = 32 # pool缺省pg数
osd pool default pgp num = 32 # pool缺省pgp数
osd crush chooseleaf type = 1 # 默认为:1
  1. 启动mon服务并设置开机启动
sudo systemctl start ceph-mon@$HOSTNAME
sudo systemctl enable ceph-mon@$HOSTNAME

Note:

如果ceph.conf里写了多个mon地址,启动服务时其他mon没有启动则此时可能mon服务也起不来,可以把ceph.conf里只保留当前mon的地址


部署osd

本次部署采用bluestore lvm方式部署

osd节点同样需要/etc/ceph/ceph.conf,从mon节点复制过来

  1. 从上边部署的mon节点复制/var/lib/ceph/bootstrap-osd/ceph.keyring 到当前osd节点的/var/lib/ceph/bootstrap-osd目录下

  2. 在osd节点执行ceph-volume命令创建osd的Lvm分区,命令如下

sudo ceph-volume lvm create --data {data-path}

Note:

{data-path}: 数据盘/dev/sdx

此步骤也可以分作两步:

sudo ceph-volume lvm prepare --data {data-path} {metadata-path}

sudo ceph-volume lvm list // 查看要添加的lvm的id

sudo ceph-volume lvm activate {id} {集群ID}


部署mgr

部署mgr服务

  1. 创建mgr的目录,命令如下:
sudo -u ceph mkdir -p /var/lib/ceph/mgr/ceph-$HOSTNAME
  1. 创建mgr用户
sudo -u ceph ceph auth get-or-create mgr.$HOSTNAME mon 'allow profile mgr' osd 'allow *' mds 'allow *' 
  1. 创建mgr的钥匙环文件
sudo -u ceph ceph auth get mgr.$HOSTNAME -o /var/lib/ceph/mgr/ceph-$HOSTNAME/keyring
  1. 启动服务
sudo systemctl enable ceph-mgr@$HOSTNAME
sudo systemctl start ceph-mgr@$HOSTNAME

mgr使用dashboard模块

  1. 安装dashboard模块
sudo apt install ceph-mgr-dashboard

Note:
通过sudo ceph mgr module ls 就会看到这个模块

  1. 激活dashboard模块
sudo -u ceph ceph mgr module enable dashboard
  1. 创建https证书
sudo -u ceph ceph dashboard create-self-signed-cert
  1. 配置服务ip地址和端口
sudo -u ceph ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
sudo -u ceph ceph config set mgr mgr/dashboard/ssl_server_port 8443

Note:

若使用http服务: sudo -u ceph ceph config set mgr mgr/dashboard/server_port 8080

  1. 查看服务
sudo -u ceph ceph mgr services
  1. 创建dashboard用户
echo "mypassword"  >password_file  //编辑一个文件passfile,将密码写入这个文件

sudo  -u ceph ceph dashboard ac-user-create admin -i password_file administrator  // 创建用户admin,密码使用passfile文件里的字符串,role是管理员administrator

部署mds

/etc/ceph/ceph.client.admin.keyring文件需要存在,如果不在从上边部署的mon节点复制过来

  1. 创建mds的数据目录
sudo -u ceph mkdir -p /var/lib/ceph/mds/ceph-$HOSTNAME
  1. 创建一个mds的keyring文件
sudo -u ceph ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-$HOSTNAME/keyring --gen-key -n mds.$HOSTNAME

Note:

这里创建钥匙环也可以使用ceph auth get-or-create命令

  1. 添加mds用户的权限并写入钥匙环文件
sudo -u ceph ceph auth add mds.$HOSTNAME osd "allow rwx" mds "allow *" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-$HOSTNAME/keyring
  1. 添加mds配置到ceph.conf(此步骤可以省略)
[mds.{id}]
host = {id}
  1. 启动mds服务并设置为开机启动
sudo systemctl start ceph-mds@$HOSTNAME
sudo systemctl enable ceph-mds@$HOSTNAME

Note:

手工启动mds服务的命令: ceph-mds --cluster ceph -i $HOSTNAME -m {mon-hostname}:{mon-port} [-f]


文件系统使用

  1. 创建fs的库和meta库
ceph osd pool create myfs_data
ceph osd pool create myfs_metadata

Note:

myfs_data: 是数据池的库名

myfs_metadata: 是元数据池的库名

创建库后关闭pg_autoscale_mode: ceph osd pool set myfs_data pg_autoscale_mode off

  1. 创建文件系统
ceph fs new myfs myfs_metadata myfs_data

Note:

myfs: 是我创建的文件系统名

获取fs列表: ceph fs ls

获取fs状态: ceph fs status

  1. 挂载文件系统(内核驱动方法)
  • 在ceph集群为fs创建一个有挂载权限的用户
ceph fs authorize myfs client.myuser / rw

Note:

client.myuser: 创建的用户名

"/" : 导出的文件系统路径

  • 挂载时需要安装ceph客户端即ceph-common包,并创建一个挂载目录
  • 从mon节点复制集群配置文件/etc/ceph/ceph.conf到当前用来挂载的机器上(即client端)
  • 在mon节点获取一个client.myuser用户的keyring文件(命令如下),并复制到client端的/etc/ceph下,
sudo -u ceph ceph auth get client.myuser -o /etc/ceph/ceph.client.myuser.keyring
  • client挂载cephfs,命令如下
sudo mount -t ceph  :/ /tmp/ceph -o noatime,defaults,rasize=268435456,name=myuser,fs=myfs

其他

报错信息及处理

1 monitors have not enabled msgr2

ceph mon enable-msgr2

 mons are allowing insecure global_id reclaim

ceph config set mon auth_allow_insecure_global_id_reclaim false

常用命令

清理osd: ceph osd purge osd.n
查看osd的label信息: ceph-bluestore-tool show-label --path /var/lib/ceph/osd/ceph-0

posted @ 2023-01-16 12:03  ishmaelwanglin  阅读(119)  评论(0编辑  收藏  举报