离线安装 - ceph-mds

ceph-mds (metadata server daemon) 是 cephfs 功能中所需要的组件,是用于收集和管理文件系统名称空间,协调和共享 OSD 集群的组件。

cephadm 部署集群所有组件都打包在 ceph 镜像内,只需要修改一遍就可以全局离线安装了

要部署 cephfs 就需要有一个或多个 ceph-mds

使用 cephadm 部署 mds

bash
1
2
ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
ceph orch apply mds kubernetes01 --placement="hostname01,hostname02,hostname03"

删除 mds

bash
1
2
ceph config set mon mon_allow_pool_delete true
ceph fs volume rm kubernetes01  --yes-i-really-mean-it

离线安装 - Ceph Object Gateway

Ceph 从 0.8 版本起,RGW 就是使用在 CivetWeb (C++ web server )取代了 Apache FastCGI;Ceph Object Gateway 不支持 SSL,必须使用代理服务器,分配HTTPS请求到CivetWeb

使用 cephadm 部署 radosgw,这时的 radosgw 是作为一组守护进程在集群上运行,而这是用于管理 “单集群” 部署或 多集群部署 中的特定 realm 和 zone

在使用 cephadm 需要注意的是,radowgw 的配置 是通过 monitor 配置数据库,而不是使用 ceph.conf 或命令行

部署 radosgw 可以通过 orch 命令来执行

bash
1
2
ceph orch apply rgw <realm_name> <zone_name> [<subcluster>] [<port:int>] [--ssl] [<placement>] [--    Update the number of RGW instances for the given zone
 dry-run] [plain|json|json-pretty|yaml] [--unmanaged]   

先给对应的 ceph node 打标签

bash
1
ceph orch host label add {HOSTNAME} rgwceph

应用

bash
1
2
# 可以尝试运行
ceph orch apply rgw default ph73svr097119 --placement="1 ph73svr097120" --dry-run

部署时候需如果需要要指定对应 Realm 和 zone,如果不存在,cephadm会自动创建,并部署 rgw daemon;也可以手动指定创建

bash
1
2
3
4
5
6
7
radosgw-admin realm create --rgw-realm=<realm-name> --default

radosgw-admin zonegroup create --rgw-zonegroup=<zonegroup-name>  --master --default

radosgw-admin zone create --rgw-zonegroup=<zonegroup-name> --rgw-zone=<zone-name> --master --default

radosgw-admin period update --rgw-realm=<realm-name> --commit

也可以通过 placement 规格文件进行部署

yaml
1
2
3
4
5
6
service_type: prometheus
placement:
  hosts:
    - host1
    - host2
    - host3

这个规格文件转换为命令后如下面所示

bash
1
orch apply prometheus --placement="host1 host2 host3"

离线安装 - ceph-common

如果有网络情况下只需要执行下面两个命令就可以安装

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

离线环境对安装 ceph-common 难度很大,大致步骤如下:

  • 梳理 依赖包
  • 下载 ceph 到本地
  • 搭建本地yum源

梳理依赖包

需要一个有网络的机器,去下载这些依赖包,如果装过 ceph-common,那么就需要手动卸载后重新下载,如果没有可以使用下面命令操作,这样会将安装包都下载到本地

bash
1
yum install leveldb  --downloadonly --downloaddir=./

通常ceph-common 依赖得安装包如下所示

bash
1
2
3
4
5
6
lttng-ust-2.4.1-4.el7.x86_64.rpm
userspace-rcu-0.7.16-1.el7.x86_64.rpm
liboath-2.6.2-1.el7.x86_64.rpm
leveldb-1.12.0-11.el7.x86_64.rpm
libbabeltrace-1.2.4-3.el7.x86_64.rpm
python36-prettytable-0.7.2-19.el7.noarch.rpm

下载 ceph 安装包到本地

reposync 可以吧公共源得所有包都下载到本地,然后将这些作为本地yum源安装就可

bash
1
reposync -n  repoid=Ceph-noarch repoid=Ceph-source  -p ~/ceph/yumrepo/

搭建本地yum源

conf
tee /etc/yum.repo.d/local.repo <<EOF
[local]
name = Ceph Local
baseurl=file:///root/yumlocalrepo/
gpgcheck=0
enabled=1
EOF

然后将 下载得依赖包塞入 对应目录 /root/yumlocalrepo

每次yum源目录更新后都需要执行下面两个命令

bash
1
2
createrepo /root/yumlocalrepo 
yum makecache

完成上面步骤后就可以使用 yum 去安装 ceph-common