版本信息
- 系统信息
[root@cepho ~]# uname -r
3.10.0-957.el7.x86_64
[root@cepho ~]# cat /etc/system-release
CentOS Linux release 7.6.1810 (Core) - Python3 版本 生产环境中我们没有必要追求最新,安装 3.6 版本即可。当然如果你追求最新,那么就用最新的也好。
[root@cepho ~]# python3 -V
Python 3.8.2 - Docker 信息
[root@cepho ~]# docker --version
Docker version 19.03.8, build afacb8b - CEPH 版本因为安装的是普通版本而不是最小安装,所以 ntp、lvm 管理工具等默认已经安装。
ceph --version
ceph version 15.1.1 (4536217610b4c55c08a293e67f5ae1f1129190be) octopus (rc)
安装 cephadm
- 下载 cephadm 并赋权
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm 添加源信息,指定为 Octopus 版本
./cephadm add-repo --release octopus
./cephadm install此时会更新 repo 信息
./cephadm add-repo --release octopus
INFO:root:Writing repo to /etc/yum.repos.d/ceph.repo...
INFO:cephadm:Enabling EPEL...验证:
[root@cepho yum.repos.d]# ll -t
total 48更新前:
# before
total 36
-rw-r--r--. 1 root root 413 Mar 15 12:36 ceph.repo
-rw-r--r--. 1 root root 1664 Nov 23 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Nov 23 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Nov 23 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 Nov 23 2018 CentOS-Vault.repo更新后
# after
-rw-r--r--. 1 root root 477 Mar 22 17:33 ceph.repo
-rw-r--r--. 1 root root 2424 Oct 19 05:57 docker-ce.repo
-rw-r--r--. 1 root root 1050 Sep 18 2019 epel.repo
-rw-r--r--. 1 root root 1149 Sep 18 2019 epel-testing.repo
-rw-r--r--. 1 root root 1664 Nov 23 2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23 2018 CentOS-CR.repo
-rw-r--r--. 1 root root 649 Nov 23 2018 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 Nov 23 2018 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 Nov 23 2018 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Nov 23 2018 CentOS-Sources.repo
-rw-r--r--. 1 root root 5701 Nov 23 2018 CentOS-Vault.repo其中前三行即是更新之后的源信息。
安装 cephadm
./cephadm install
INFO:cephadm:Installing packages ['cephadm']...
- 验证 cephadm 安装完成
which cephadm
/usr/sbin/cephadm
引导新集群
你需要知道用于群集的第一个监视器守护程序的 IP 地址。 通常,这是第一台主机的 IP。 如果存在多个网络和接口,请确保选择任何可供访问 Ceph 群集的主机访问的网络和接口。mkdir -p /etc/ceph
cephadm bootstrap --mon-ip *<mon-ip>* # 此处指定moniter地址
注意,此处指定为 ssh 登录的 ip 时一直提示端口占用,且 mon 进程一直启不来,后来改成另一个节点之后可以正常部署,此处需要查阅更多资料! # TODOcephadm bootstrap --mon-ip 172.18.1.128
INFO:cephadm:Using recent ceph image ceph/daemon-base:latest
INFO:cephadm:Verifying podman|docker is present... # 验证podman|docker
INFO:cephadm:Verifying lvm2 is present... # 验证lvm2
INFO:cephadm:Verifying time synchronization is in place... # 验证时间同步
INFO:cephadm:Unit chronyd.service is enabled and running # chronyd
INFO:cephadm:Repeating the final host check...
INFO:cephadm:podman|docker (/usr/bin/docker) is present
INFO:cephadm:systemctl is present
INFO:cephadm:lvcreate is present
INFO:cephadm:Unit chronyd.service is enabled and running
INFO:cephadm:Host looks OK
INFO:root:Cluster fsid: d0d73402-6c28-11ea-8165-00505625d3e6 # 生成集群fsid
INFO:cephadm:Verifying IP 172.18.1.128 port 3300 ...
INFO:cephadm:Verifying IP 172.18.1.128 port 6789 ... # 验证端口
INFO:cephadm:Pulling latest ceph/daemon-base:latest container...
INFO:cephadm:Extracting ceph user uid/gid from container image... # pull容器
INFO:cephadm:Creating initial keys...
INFO:cephadm:Creating initial monmap... # 初始化keys、monmap
INFO:cephadm:Creating mon...
INFO:cephadm:Waiting for mon to start...
INFO:cephadm:Waiting for mon... # 创建并启动mon
INFO:cephadm:Assimilating anything we can from ceph.conf...
INFO:cephadm:Generating new minimal ceph.conf... # 生成配置
INFO:cephadm:Restarting the monitor...
INFO:cephadm:Creating mgr... # 创建mgr
INFO:cephadm:Non-zero exit code 1 from /usr/bin/firewall-cmd --permanent --query-service ceph
INFO:cephadm:/usr/bin/firewall-cmd:stdout no
INFO:cephadm:Enabling firewalld service ceph in current zone...
INFO:cephadm:Non-zero exit code 1 from /usr/bin/firewall-cmd --permanent --query-port 8080/tcp
INFO:cephadm:/usr/bin/firewall-cmd:stdout no
INFO:cephadm:Enabling firewalld port 8080/tcp in current zone...
INFO:cephadm:Non-zero exit code 1 from /usr/bin/firewall-cmd --permanent --query-port 8443/tcp
INFO:cephadm:/usr/bin/firewall-cmd:stdout no
INFO:cephadm:Enabling firewalld port 8443/tcp in current zone...
INFO:cephadm:Non-zero exit code 1 from /usr/bin/firewall-cmd --permanent --query-port 9283/tcp
INFO:cephadm:/usr/bin/firewall-cmd:stdout no
INFO:cephadm:Enabling firewalld port 9283/tcp in current zone... # 打开防火墙端口
INFO:cephadm:Wrote keyring to ceph.client.admin.keyring
INFO:cephadm:Wrote config to ceph.conf
INFO:cephadm:Waiting for mgr to start...
INFO:cephadm:Waiting for mgr...
INFO:cephadm:mgr not available, waiting (1/10)...
……
INFO:cephadm:mgr not available, waiting (5/10)...
INFO:cephadm:Enabling cephadm module...
INFO:cephadm:Waiting for the mgr to restart... # 重启mgr
INFO:cephadm:Waiting for Mgr epoch 5...
INFO:cephadm:Setting orchestrator backend to cephadm...
INFO:cephadm:Generating ssh key...
INFO:cephadm:Wrote public SSH key to to ceph.pub
INFO:cephadm:Adding key to root@localhost's authorized_keys...
INFO:cephadm:Adding host cepho...
INFO:cephadm:Deploying mon service with default placement...
INFO:cephadm:Deploying mgr service with default placement...
INFO:cephadm:Deploying crash service with default placement...
INFO:cephadm:Enabling the dashboard module...
INFO:cephadm:Waiting for the mgr to restart...
INFO:cephadm:Waiting for Mgr epoch 9...
INFO:cephadm:Generating a dashboard self-signed certificate... # 初始化dashboard
INFO:cephadm:Creating initial admin user...
INFO:cephadm:Fetching dashboard port number...
INFO:cephadm:Ceph Dashboard is now available at:
URL: https://cepho:8443/
User: admin
Password: tkl507cgh3 # 初始密码,默认登录之后需要修改
INFO:cephadm:You can access the Ceph CLI with:
sudo /usr/sbin/cephadm shell --fsid d0d73402-6c28-11ea-8165-00505625d3e6 -c ceph.conf -k ceph.client.admin.keyring
INFO:cephadm:Please consider enabling telemetry to help improve Ceph:
ceph telemetry on
For more information see:
https://docs.ceph.com/docs/master/mgr/telemetry/
INFO:cephadm:Bootstrap complete.
该命令会做以下操作:
在本地主机上为集群创建
mon
和mgr
守护程序。为 Ceph 集群生成一个新的 SSH 密钥,并将其添加到
root
用户的/root/.ssh/authorized_keys
文件中。将与新集群通信所需的最小配置文件写入
/etc/ceph/ceph.conf
。将
client.admin
管理(特权!)秘密密钥的副本写入/etc/ceph/ceph.client.admin.keyring
。将公共密钥的副本写入
/etc/ceph/ceph.pub
。
注意: 执行上述命令会去 docker 上面拉取最新的ceph/daemon-base
,国内需要换源。具体操作如下:
- 编辑或新建配置文件:
vi /etc/docker/daemon.json
写入:{
"registry-mirrors" : [
"http://ovfftd6p.mirror.aliyuncs.com",
"http://registry.docker-cn.com",
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug" : true,
"experimental" : true
} - 重启 docker 服务
systemctl restart docker
- 手动拉取镜像
docker pull ceph/daemon-base
由于本人第一次使用 docker,所以一些表述可能存在问题。
访问 dashboard
默认的引导行为适用于绝大多数用户。 请参阅以下有关选项对某些用户可能有用的一些,或运行 cephadm bootstrap -h
以查看所有可用选项:
方便起见,Bootstrap 会将访问新集群所需的文件写到
/etc/ceph
中,以便主机本身安装的任何 Ceph 软件包(例如,访问命令行界面)都可以轻松找到它们。但是,使用
cephadm
部署的守护程序容器根本不需要/etc/ceph
。 使用--output-dir *directory>*
选项将它们放在不同的目录(如.<当前目录>)中,避免与同一主机上的现有 Ceph 配置(cephadm
或其他)之间的潜在冲突。我们可以将任何初始 Ceph 配置选项传递到新集群,方法是将它们放置在标准
ini
样式的配置文件中,并使用--config * <config-file> *
选项。
使能 CEPH CLI
ceph 官方建议启用对 ceph 命令的轻松访问,我们有以下途径可以实现:
- 调用 cephadm shell 命令启动容器中的 bash 其中的
sudo /usr/sbin/cephadm shell --fsid d0d73402-6c28-11ea-8165-00505625d3e6 -c ceph.conf -k ceph.client.admin.keyring
fsid
可以在上一条返回信息中找到,或者在ceph.conf
中进行查看。INFO:cephadm:Using recent ceph image ceph/daemon-base:latest
- 安装 ceph-common 包,包含了`ceph`, `rbd`, `mount.ceph` (用于挂载 CephFS 文件系统)等;
```shell
cephadm add-repo --release octopus # 此处会更新源,如果需要使用国内源请不要执行
yum install ceph-common # 此处官网暂为cephadm install xxx,但是我执行之后报错,所以修改。 - 调用
ceph
命令查看集群状态ceph -s
cluster:
id: d0d73402-6c28-11ea-8165-00505625d3e6
health: HEALTH_WARN
Reduced data availability: 1 pg inactive
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum cepho (age 20m)
mgr: cepho.lgqcve(active, since 18m)
osd: 0 osds: 0 up, 0 in
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs: 100.000% pgs unknown
1 unknown - 在
cephadm shell
中查看集群健康信息[ceph: root@cepho /]# ceph health
HEALTH_WARN Reduced data availability: 1 pg inactive; OSD count 0 < osd_pool_default_size 3
TODO:以下待验证
集群添加新节点
- 在新的节点拷贝认证
ssh key
认证密钥
在 bash 中执行ssh-copy-id -f -i ceph.pub root@*<new-host>* # 新节点的hostname
- 告诉新节点是集群的一部分
在 cephadm shell 中执行ceph orch host add *newhost*