1、简介
本文只描述 如何基于 systemctl mds热备服务的搭建,至于其相关概念不做任何描述
1.1 系统环境
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.2 LTS
Release: 16.04
Codename: xenial
1.2 存储环境
# ceph -v
ceph version 12.2.11 (26dc3775efc7bb286a1d6d66faee0ba30ea23eee) luminous (stable)
2、搭建
2.1 实例创建
2.1.1 手动创建实例
## 软件安装(安装方式很多,本文采用在线安装 -- 需要注意版本)
# apt-get install ceph-mds
## 目标机器上创建mds目录
# mkdir -p /var/lib/ceph/mds/ceph-{mds_name}
## 生成mds的keyring,并将其写入/var/lib/ceph/mds/ceph-{mds_name}/keyring文件中
## mds 'allow' 不能写成mds 'allow *',要不然会报错
# ceph auth get-or-create mds.{mds_name} mon 'allow rwx' osd 'allow *' mds 'allow' -o /var/lib/ceph/mds/ceph-{mds_name}/keyring
## 端口号 默认 6789
# ceph-mds --cluster ceph -i {mds_name} -m xxx.xxx.xxx.xxx:6789
## 创建 systemctl 链接
## systemctl enable ceph-mds@{mds_name}.service
2.1.2 ceph-deploy 创建实例
## 自动创建实例,并拉起服务
# ceph-deploy mds create ${host}:${mds_name}
2.2 创建 数据池(副本池)
这边暂时 描述 副本池 进行创建 文件系统,也可以 将纠删码池 作为文件系统的数据池 使用(需要为纠删码池添加 一个 缓冲池方可使用)
## 创建 数据池,一般情况下,会创建单独的两个数据池 供fs使用
## 一个为 "metadata" 状态的数据池,用于存储 元数据信息
## 一个为 "data" 状态的数据池,用于存储 数据
# ceph osd pool create {metadata_name} {pg_num}
# ceph osd pool create {data_name} {pg_num}
2.3 创建 文件系统
## 创建 文件系统
# ceph fs new {fs_name} {metadata_name} {data_name}
3、热备
3.1 创建实例
热备搭建,需要再次创建一个实例 作为当前 mds服务的 热备服务(与上述创建实例过程一样)
3.2 热备配置修改
3.2.1 修改 systemctl
# cat /etc/systemd/system/ceph-mds.target.wants/ceph-mds@mds0.service
[Unit]
Description=Ceph metadata server daemon
After=network-online.target local-fs.target time-sync.target
Wants=network-online.target local-fs.target time-sync.target
PartOf=ceph-mds.target
[Service]
LimitNOFILE=1048576
LimitNPROC=1048576
EnvironmentFile=-/etc/default/ceph
Environment=CLUSTER=ceph
#ExecStart=/usr/bin/ceph-mds -f --cluster ${CLUSTER} --id %i --setuser ceph --setgroup ceph
## 添加 --hot-standby 0
ExecStart=/usr/bin/ceph-mds -f --cluster ${CLUSTER} --id %i --setuser ceph --setgroup ceph --hot-standby 0
ExecReload=/bin/kill -HUP $MAINPID
PrivateDevices=yes
ProtectHome=true
ProtectSystem=full
PrivateTmp=true
TasksMax=infinity
Restart=on-failure
StartLimitInterval=30min
StartLimitBurst=3
[Install]
WantedBy=ceph-mds.target
3.2.2 加载配置
# systemctl daemon-reload
3.2.3 重启服务
## /usr/bin/ceph-mds --cluster ${CLUSTER} --id {mds_name} --setuser ceph --setgroup ceph --hot-standby 0
# systemctl start ceph-mds@{mds_name}.service