
引言在这个特殊的时期里,有比较多的时间折腾技术,在前段时间折腾完Cobbler以及AnsibleTower后,想着要折腾啥?这时候想起来,之前看技术文章知道最新版本的CephNautilus官方集成了......
在这个特殊的时期里,有比较多的时间折腾技术,在前段时间折腾完Cobbler以及AnsibleTower后,想着要折腾啥?这时候想起来,之前看技术文章知道最新版本的CephNautilus官方集成了Dashboard界面,只是看过截图,感觉是很炫酷,在Ceph经历了多年的使用多种第三方Dashboard工具,如:Calamari、VSM等后,终于迎来了官方Dashboard,最初只是想体验下原生的Dashboard是什么样子的,在开始搭建的过程中,发现Dashboard的模式不是直接启用模块所有的功能就能正常使用,初始安装好只有最基本的Ceph集群以及RBD管理等功能,像文件存储、对象存储、iSCSI网关、NFS网关、监控都是没有集成的,都需要单独集成,Ceph启用Dashboard的资料网上能找到的多数是直接启用Dashboard模块,集成其它模块的中文资料也很少,因此也开启了一路不断踩坑不断验证的模式,历时数十天终于安装集成完毕,现总结下经验,供同行参考,避免大家浪费时间踩坑,故引出此文。
CephDashboard介绍Ceph的官方Dashboard正式是从Cephluminous版本开始,最初是一个简单的只读视图,可查看Ceph集群的各种运行时信息和性能数据,而无需身份验证或任何管理功能。
现在的CephDashboard后端代码使用CherryPy框架和自定义RESTAPI实现。WebUI基于Angular实现。

本实验环境使用4台虚拟机,使用workstation搭建,部署节点使用2vCPU、2GB内存,20Gb磁盘,存储节点每台虚拟机配置2vCPU、2GB内存、1块20Gb系统盘、3块100G数据盘,1块网卡(为了简单没有区分群集网和存储网),节点使用的操作系统为最小化安装。

注意:每台虚拟机主机名称必须按照上表中的名称命名,因为在安装MON的时候会调用每一台的主机名,所以不能是默认的localhost。
安装方式说明本文主要是参考官方文档手工安装的方式,当然一些商业版本的Ceph已经实现了图形化安装,比如像Redhat最新版本RedHatCephStorage4已经实现图形化安装,如下图所示,有兴趣可以尝试下。



5.1配置防火墙
为了最大程度简化实验步骤,关闭每一台节点的防火墙功能,生产环境中请根据实际情况打开并开放相应端口。
systemctldisablefirewalld
5.2配置SELINUX
为了防止出现由于SELinux引起意外问题,关闭每一台的SELinux。
sed-i"s/SELINUX=enforcing/SELINUX=disabled/g"/etc/selinux/config
5.3配置安装工具源
在每一台节点上安装epel源。
vi/etc/
温馨提醒
此处必须设置FQDN,也就是完全合格域名,不能只是主机名,否者在启用iSCSI网关是会出现错误,在后方中会详细介绍故障现象,此处只要记住必须要设置FQDN就行;
cephdashboard中prometheus、iscsitarget以及mgrservice中都需要FQDN,所以这步比较重要,确保各主机能相互解析。
5.5配置NTP
每一台上安装NTP服务,并设置管理节点为NTPServer,其它节点为Client节点。
vi/etc//24
重启chrony服务。
vi/etc/
重启chrony服务。
chronycsources210Numberofsources=4MSName/IPaddressStratumPollReachLastRxLastsample===============================================================================^*ceph-admin39068m+39us[+45us]+/-18ms^-+5653us[+5653us]+/-71ms^?[-2286us]+/-97ms^?2402:f000:1:416:101:6:6:060-+0ns[+0ns]+/-0ns
5.6升级系统内核
由于需要配置iscsi网关,而iscsi网关需要操作系统内核版本为Linux内核(或更高版本),所以需要升级的系统内核。
查看当前使用的内核版本。
rpm--import
查看安装的内核版本。
grub2-set-default""
查看新设置的默认的启动项,并重启系统。
vi/etc//[ceph-noarch]name=Cephnoarchpackagesbaseurl=
6.2安装Ceph-Deploy
在部署节点安装Ceph-deploy工具,并查看版本为2.0.1,注意不配置Ceph-deployyum源,默认也可以下载ceph-deploy,但下载的是1.5,此版本有bug,需要安装额外缺失的包才能正常使用。
yuminstallceph-deploy-yssh-keygenssh-copy-idroot@
ceph-deploy生产一些文件到当前目录。执行部署时请确保您位于此目录下。
创建命名为ceph集群。
ceph-deploymoncreate-initial
部署mon。
推送配置文件到各Ceph节点。
ceph-deployosdcreate--data/dev//dev//dev//dev//dev/
在3个存储节点上都部署mgr。
6.5安装Dashboard
至此ceph群集安装完成,但还没有启用Dashboard插件,下面我们开始配置Dashboard插件
在所有dashboard节点上安装插件包。
cephmgrmoduleenabledashboard
禁用SSL。
cephconfigsetmgrmgr/dashboard/server_
温馨提醒
此处必须设置监控地址为0.0.0.0,而不能是直接IP地址,因为其监控的是所有本地地址包括IPV4和IPV6,同时也不能禁用IPV6地址。
配置监听端口。
cephdashboardac-user-createadmin123456administrator
查看已开启模块信息。
cephmgrmoduledisabledashboardcephmgrservices{"dashboard":""}访问CephDashboard地址

至此Dashboard安装完成,但其它的功能,如:rgw,cephfs,iscsi,监控等都需要手工启用,需要一个个启用这些功能,如下图所示:
rgw没有启用:

cephfs没有启用:

nfs没有启用:

iscsi没有启用:

监控没有启用:

6.6安装RGW
默认Ceph没有安装rgw,需要安装rgw,在所有rgw节点上安装。
命令执行后,可以通过http://rgw-node:7480测试是否安装成功,出现以下内容证明rgw安装成功。

6.7Dashboard中启用RGW
如前文所讲,CephDashboard默认安装好后,没有启用rgw,需要手工Dashboard中启用RGW,以下命令都在Ceph存储节点执行。
创建rgw系统账户。
radosgw-adminuserinfo--uid=rgw
为Dashboard设置access_key和secret_key。
cephdashboardset-rgw-api-secret-keysecret_key
禁用SSL。
创建池。
cephosdpoolcreatecephfs_metadata32
创建文件系统。
cephmdsstatcephfs:1{0==up:active}Cephfs不需要做其它集成工作,所以直接在Dashboard中就可以显示了。

6.9配置nfs
自从CephJewel版本,nfs-ganesha开始支持ceph,ganesha通过两种方式支持将ceph导出为nfs。一种通过rgw,一种通过cephfs,FSAL_RGW调用librgw2将NFS协议转义为S3协议再通过RGW存入到Ceph中,FSAL_CEPH调用libcephfs2将NFS转义为Cephfs协议再存入到Ceph中,但之前都是命令行方式的支持,在CephNautilus中CephDashboard现在也支持配置这两种方式的NFS。

在ganesha节点查看是否安装librgw2和libcephfs2软件包。
rpm-qa|_64
在ganesha节点上配置nfs-ganesha源。
yuminstallnfs-ganeshanfs-ganesha-cephnfs-ganesha-rgw-y
设置服务启动以及开机启动。
_data16
新建空的文本文件。
rados-pganesha__
温馨提醒
1.存入rados的文件名必须要是conf-xxxx,原因是要CephDashboard支持NFSGanesha管理功能,需要遵循关于每个服务守护进程的RADOS对象名称的约定。对象的名称必须是conf-daemon_id格式,其中daemon_id对应于运行此服务的节点名称。daemon_id是一个任意字符串,应唯一地标识该守护程序实例(例如,运行守护程序的主机名)。
2.当然我们创建这个文件现在是空的,后续通过Dashboard创建导出后,conf-daemon_id会有内容,每个conf-daemon_id都包含指向NFS-Ganesha守护程序应服务的导出的RADOSURL。这些URL的格式为:%urlrados://pool_name[/namespace]/export-id,在创建新的导出时也同时会创建export-id的文件,这个文件内容存放实际的导出的配置内容,也就是之前没有配置Dashboard时,直接配置在ganesha配置文件中的EXPORT{}的内容。
3.conf-daemon_id和export-id对象必须存储在同一个RADOS池/命名空间,当然如果是通过Dashboard配置的这两个文件肯定是在同个pool,如果手工创建的话就需要注意这点。
查看gaenshapool中存在。
cephauthlistinstalledauthentries::AQABu2decDx5IhAA4/7I9iNzFkQE9s4A6XQTtw==caps:[mon]allowrwcaps:[osd]allowrwx
编辑每一台节点ganesha配置文件,并根据当前所在节点输入以下内容,如下图显示的是存储节点3的配置信息,请根据情况替换成其它存储节点配置信息。
cephdashboardset-ganesha-clusters-rados-pool-namespaceganesha_data
温馨提醒
此处导出目录必须是前面创建的ganesha_data存储池,也就是导出的池必须有conf-xxx文件,在Dashboard中才能显示。
重启ganesha服务,并设置开机启动。
systemctlstatusnfs-ganesha
这时候打开CephDashboard就能看到NFS模块正常显示了:

6.10配置iscsigw
之前Ceph存储集群的块存储不支持iscsi,从CephLuminous版本开始支持iSCSI。
Ceph中实现iscsi方式有两种,一种是通过Linuxtargetframework(tgt)实现,一种是通过Linux-IOTarget(lio)实现,本文是使用的方式是LIO,LIO现在也是官方推荐的方式。
LIO的实现方式主要是利用TCMU与Ceph的librbd库进行交互,并将RBDimages映射给iSCSI客户端,所以需要有TCMU软件包安装在系统中。
启用iscsigateway需要满足以下条件:
正在运行的CephLuminous(12.2.x)集群或更高版本
(或更高版本);Linux内核(或更高版本)
该ceph-iscsi软件包安装在所有iSCSI网关节点上
如果CephiSCSI网关未位于OSD节点上,则将位于中的Ceph配置文件/etc/ceph/从存储集群中正在运行的Ceph节点复制到iSCSIGateway节点。Ceph配置文件必须存在于iSCSI网关节点下的/etc/ceph/。
iscsigw示意图如下:

在所有iscsigw节点上配置ceph-iscsiyum源。
yuminstallceph-iscsi-y
重启tcmu-runner。
i-imagescreate--size=2048'iscsi-gateway-image001'
查看pool中的image。
vi/etc/ceph/[config]cluster_client_name==iscsi-imagestrusted_ip_list=192.168.123.199,192.168.123.238,192.168.123.242minimum_gateways=1fqdn_enabled=trueLoglevellogger_level=WARNING
Trusted_ip_list是每个iscsi网关上IP地址的列表,这些IP地址将用于管理操作,例如目标创建,lun导出等。
重启rbd-target服务并设置开机启动。
:Couldnotloadpreferencesfile/root/.gwcli/:httpRestAPIport:5000Localpoint:http://localhost:5000/apiLocalCephCluster:ceph2ndaryAPIIP's:192.168.123.199,192.168.123.238,192.168.123.242
iscsi-gateway命令行工具gwcli用于创建/配置iscsi-target与rbdimage;其余较低级别命令行工具,如targetcli或rbd等,可用于查询配置,但不能用于修改gwcli所做的配置。
可以查看当前iscsigateway配置,当然gwcli只是命令行工具,当我们配置了Dashboard集成iscsi后,就不一定要用这个命令行工具配置了,可以使用图形界面配置也是一样的。
Dashboard启用用iscsi。
要禁用APISSL验证。
cephdashboardiscsi-gateway-addhttp://admin:admin@192.168.123.199:5000cephdashboardiscsi-gateway-addhttp://admin:admin@192.168.123.242:5000
温馨提醒
在本文的开始,说明了各节点的hosts配置文件中一定要是FQDN,就是因为添加每一台节点是默认都解析成了,所以会导致只能添加成功一个iscsigateway节点(原因是默认只有127.0.0.1配置FQDN)。
添加iscsigw网关的用户名admin,密码admin是根据iscsigw配置文件中定义的api_user以及api_password。
查看配置。
6.12配置grafana
CephDashboard中集成了grafanaprometheus,但需要手工启用,熟悉prometheus的人都知道其监控需要有exporter,cephmgr模块中内置了prometheusexporter模块,所以无需要手工单独安装exporter,由于CephDashboard中grafana还监控了Ceph存储节点的监控信息,所以每台存储节点中需要安装prometheusnodeexporter,借用redhat官方文档说明下这个架构:

在grafana节点上配置grafanayum源。
yum-yinstallgrafana-y
在/etc/grafana/中配置Grafana以适应匿名模式,并修改grafana默认风格,否者默认为暗黑,集成到cephdashboard中风格不匹配。
安装grafana插件。
grafana-clipluginsinstallgrafana-piechart-panel
重启grafana服务。
复制到目录中
/*/etc/prometheus
查看promethus版本。
vi/etc/systemd/system/[Unit]Description=PrometheusMonitoringSystemDocumentation=PrometheusMonitoringSystem[Service]ExecStart=/etc/prometheus/prometheus\--/etc/prometheus/\--=:9090[Install]WantedBy=
修改默认配置文件。
Thejobnameisaddedasalabel`job=job_name`'http'.-job_name:'prometheus'static_configs:-targets:['192.168.123.240:9090']-job_name:'ceph'honor_labels:truestatic_configs:-targets:[':9283']labels:instance:'ceph_cluster'-targets:[':9283']labels:instance:'ceph_cluster'-targets:[':9283']labels:instance:'ceph_cluster'-job_name:'node-exporter'static_configs:-targets:[':9100']-targets:[':9100']-targets:[':9100']
温馨提醒
以上配置文件targetes需要写成域名,否者cephdashboard中hostdetails中不能正常显示监控数据,而grafana中显示正常,grafana使用IP查询正常,cephdashboard因为他是使用的域名查询监控信息,而prometheus中写的是IP,导致查询不到,所以这里要写成域名。
honor_labels参数必须有并设置为true,否者会导致CephDashbaord中显示grafana某些面板没有数据出现。
加载系统服务。
systemctlstartprometheussystemctlenableprometheus
安装prometheusnode_exporter
从官方下载node_export软件包到每一台存储节点上,并解压。
mkdir/etc/node_exportervi/etc/systemd/system/node_[Unit]Description=Prometheusnode_exporter[Service]User=nobodyExecStart=/etc/node_exporter/node_=errorExecStop=/usr/bin/killallnode_exporter
启动服务。
systemctlenablenode__
查看监控端口。
cephmgrmoduleenableprometheus
查看启用的prometheus模块。
ss-tunpl|grep9283tcpLISTEN05:::9283:::*users:(("ceph-mgr",pid=1071,fd=22))输入、nodeexport、prometheus都正常。

想要ceph三个节点都显示"UP",必须在所有的Ceph节点中都启用MGR,否者只有一个是"UP"。
配置禁用SSL。
cephdashboardset-grafana-api-url
温馨提醒
此处的grafana地址不能为域名,必须为IP。
6.14配置grfana对接prometheus


选择prometheus。

输入名称以及IP。

完成配置。

6.15配置grfana模板
导入cephdashboardgrafana插件,有两种方式可以导入dashboard,一是github地址直接下载并导入,二是本地导入,其实在安装Dashboard的时候就会自动安装cephdashboardgrafana插件了。
github地址如下:
。
通过命令查看目录位置。
/etc/grafana/dashboards/ceph-dashboard/etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//etc/grafana/dashboards/ceph-dashboard//usr/share/doc//usr/share/doc//README/usr/share/doc//
打开grafana选择“导入”。

打开导入面板,选择"导入"。

导入所有的Dashboard模板文件,查看导入的模板文件。

查看导入模板的详细信息。

打开CephDashboard查看其内嵌有的Dashboard。

在此文编写过程中Ceph社区发了布了最新的CephOctopus版本,这个版本中最大的变化是使用了容器安装Ceph,只需要几条命令就能安装出一个带Dashboard的Ceph集群,也就无需像本文中这么折腾安装了。
新版本抛弃了Ceph-Deploy工具,只能使用Cephadm工具安装,而新的安装方式中Dashboard是默认启用的,也能看出未来Dashbaord在Ceph中的地位,不是像以前是可选的了,由于是新出的Cephadm,所以还有些功能是未开发完成的,比如无法安装iscsi等。
简单说几点新版本Ceph的改进:
1.Dashboard界面变成了多数WEB使用的侧边导航栏结构。
2.增加了监控功能,使用的是promethuesalert模块实现。
其它可参考官方release说明:
。