本文为个人记录之用,不对大多数用户具有参考价值。
前言
项目以ceph-14.2.5
版本代码中的 ceph/src/pybind/mgr/dashboard· ceph/ceph 为基础通过二次开发以实现 Ceph 分布式管理系统。
开发环境搭建
前端
- 安装 npm 工具
安装npm
yum install npm - 安装 node 环境查看
配置国内源
npm config set registry https://registry.npm.taobao.org
安装node版本管理工具'node'
npm install -g n
升级到`8.9`版本的`node`
n 8.9.0npm
与nodejs
的版本,如果nodejs
低于8.9.0
版本,则升级之。
注意:以Linux
为开发环境安装前端依赖进行演示:
切换到/usr/share/ceph/mgr/dashboard/frontend
目录:
此处可见官方Ceph Dashboard Developer Documentation — Ceph Documentation文档说明。 - 安装依赖可以以
此处可见官方../HACKING.rst 文档说明
install dependencies
npm installnode-sass
安装成功为参考标志,如果报错,请删除 node_modules 目录之后重试。报错清除缓存
npm cache verify - 安装成功之后,修改代理配置一个可参考的配置内容为:
代理配置
mv proxy.conf.json.sample proxy.conf.json其中端口号可以使用{
"/api/": {
"target": "http://localhost:8080", # 服务端口和运行地址需要根据情况配置,注意http和https必须分清
"secure": false,
"logLevel": "debug"
},
"/ui-api/": {
"target": "http://localhost:8080",
"secure": false,
"logLevel": "debug"
}
}ceph mgr services
获取到,即输出中的dashboard
字段中所指:{
"dashboard": "http://node-c1:8080/"
} 运行前端服务
npm start
之后,如果使用默认配置,则访问
http://localhost:4200/
进行开发,外部网络访问,替换为服务所属机器的 ip 即可。版本释出
npm run-script build
该命令会在 frontend 目录下释出
dist
目录。
后端
项目目录结构
tree -L 3 -I "node_modules|*.pyc|*.pyo" |
. |
问题记录
集群配置
启用mgr restful
之后,访问https://node_addr:8003/config/cluster
获取集群配置信息,之后可以访问具体名称,获得配置详情;
如何添加controller
继承BaseController
之后使用 @Controller
,@ApiController
或者@UiApiController
,三者的区别是:@ApiController
和 @UiApiController
是@Controller
的特殊化。
@ApiController
应该用在提供类 API 接口,而@UiApiController
应该被用于非公用的 API,其他接口使用@Controller
一般来说,我们只需要实现@Controller
和@ApiController
即可。
@Endpoint
用于暴露接口的方法实现,它可以接收很多参数,比如请求方法,查询参数等;
注:对于集群管理时,我们把 node 信息直接传输到 url 中,或许是一个好办法,参考:@Endpoint(path="/{date}/latency")
处代码。
而继承RESTController
默认返回json
格式数据。它是一个简化并使用collection
整合数据的抽象层,将方法名、请求类型和状态码进行映射。具体映射关系见文档表格。
调试
模块编写完成,重启服务,看是否会有模块未找到,服务导入等报错ceph mgr module disable dashboard
ceph mgr module enable dashboard
ceph dashboard create-self-signed-cert
也可以查看日志,查找可能的报错信息。
查看日志
通过该文件可以查看mgr
中的报错信息,暂时未找到 logger.info()写入 log 中的信息(是否需要配置?)tailf /var/log/ceph/ceph-mgr.node1.log
from ..module import cherrypy
cherrypy.log('---------', json.dumps(update_info)) # 必须是str
MDS 状态
元数据服务器
CEPH-MDS – CEPH 元数据服务器守护进程
需要安装的工具、依赖
- 获取磁盘
SN
号码yum install hdparm
时间配置
集群部署的时候脚本中应该有配置 NTP 的操作,步骤参见:NTP
不再支持手动输入时间配置
- 直接设置集群内部机器为 ntp 服务器,其他指向该机器;
- 给定 ip 或域名地址,如果是集群网段的,则直接返回提示不支持,否则,所有指向该地址。
注意
根据下面这篇文章的观点,在集群起来之后再去调节 ntp 服务被认为是会严重影响集群业务的操作,如果一定要调整,也可能会耗时很久!
深度解析 CephX 原理—调节 NTP 时钟的困境 | 开心鬼
mon 状态
- Understanding Monitor Status
Troubleshooting Monitors — Ceph Documentation
在法定之内 in quorum
ceph daemon mon.node X mon_status
两种 state, leader 或者 peon;
如果 leader down 之后,调用可以看到原来的 state 为peon
的会变为probing
,如果可以实现仲裁,则rank
最小者变为 leader;超出法定人数 out quorum/新加入的节点
状态可能为 探测(probing), 选举(electing) 或者 synchronizing
发布历史
vN1.0.1(2020-07-03)
集群主机
mon/mgr
节点发现:
- 单节点添加
- 多节点添加
- 局域网段添加
节点删除
远程管理
- 节点远程开机、关机、重启;
- 修改远程操作用户用户名、密码;
- 网络配置(ip、掩码、网关。
磁盘展示及定位
磁盘盘位查看、(批量)定位及取消定位;
系统工具
- 设置 ntp 服务器
- 设置 DNS
License
license 添加、删除、更新
OSD
osd 新建:osd 添加(类型配置)、添加-WAL devices DB devices,加密
OSD 编辑:洗刷、深度洗刷、设置权重、标记、销毁、清除
日志
集群日志管理、审计日志、日志打包下载
存储池
存储池新建、编辑、删除
块设备
- 映像
新建、编辑、复制、删除,移除回收站、容量调节 - 镜像
- ISCSI-target
- ISCSI-网关
对象网关
守护进程创建、更新、删除
更多
同事写的备忘录:有道云笔记