引言
在這個特殊的時期裡,有比較多的時間折騰技術,在前段時間折騰完Cobbler以及Ansible Tower後,想著要折騰啥?這時候想起來,之前看技術文章知道最新版本的Ceph Nautilus官方集成了Dashboard界面,只是看過截圖,感覺是很炫酷,在Ceph經歷了多年的使用多種第三方Dashboard工具,如:Calamari、VSM等後,終於迎來了官方Dashboard,最初只是想體驗下原生的Dashboard是什麼樣子的,在開始搭建的過程中,發現Dashboard的模式不是直接啟用模塊所有的功能就能正常使用,初始安裝好只有最基本的Ceph集群以及RBD管理等功能,像文件存儲、對象存儲、iSCSI網關、NFS網關、監控都是沒有集成的,都需要單獨集成,Ceph啟用Dashboard的資料網上能找到的多數是直接啟用Dashboard模塊,集成其它模塊的中文資料也很少,因此也開啟了一路不斷踩坑不斷驗證的模式,歷時數十天終於安裝集成完畢,現總結下經驗,供同行參考,避免大家浪費時間踩坑,故引出此文。
Ceph Dashboard介紹
Ceph的官方Dashboard正式是從Ceph luminous版本開始,最初是一個簡單的只讀視圖,可查看Ceph集群的各種運行時信息和性能數據,而無需身份驗證或任何管理功能。
Ceph Nautilus後的Dashboard可實現管理Ceph的功能,其來源於suse收購的的商業Ceph管理軟件openATTIC的功能移植。
現在的Ceph Dashboard後端代碼使用CherryPy框架和自定義REST API實現。WebUI基於Angular 實現。
實驗環境介紹
本實驗環境使用4臺虛擬機,使用workstation搭建,部署節點使用2vCPU、2GB內存,20Gb磁盤,存儲節點每臺虛擬機配置2vCPU、2GB內存、1塊20Gb系統盤、3塊100G數據盤,1塊網卡(為了簡單沒有區分群集網和存儲網),節點使用的操作系統為CentOS7.7最小化安裝。
注意:每臺虛擬機主機名稱必須按照上表中的名稱命名,因為在安裝MON的時候會調用每一臺的主機名,所以不能是默認的localhost。
安裝方式說明
本文主要是參考官方文檔手工安裝的方式,當然一些商業版本的Ceph已經實現了圖形化安裝,比如像Redhat 最新版本Red Hat Ceph Storage 4已經實現圖形化安裝,如下圖所示,有興趣可以嘗試下。
準備工作
5.1 配置防火牆
為了最大程度簡化實驗步驟,關閉每一臺節點的防火牆功能,生產環境中請根據實際情況打開並開放相應端口。
<code>systemctl stop firewalld
systemctl
disable
firewalld /<code>
5.2 配置SELINUX
為了防止出現由於SELinux引起意外問題,關閉每一臺的SELinux。
<code> /<code>
5.3 配置安裝工具源
在每一臺節點上安裝epel源。
<code>/<code>
5.4 配置域名解析
配置本地主機名解析。
<code>192.168
.123
.240
ceph-admin
ceph-admin.localdomain
192.168
.123
.199
ceph-node1
ceph-node1.localdomain
192.168
.123
.238
ceph-node2
ceph-node2.localdomain
192.168
.123
.242
ceph-node3
ceph-node3.localdomain
/<code>
溫馨提醒
此處必須設置FQDN,也就是完全合格域名,不能只是主機名,否者在啟用iSCSI網關是會出現錯誤,在後方中會詳細介紹故障現象,此處只要記住必須要設置FQDN就行;
ceph dashboard中 prometheus、iscsi target以及mgr service中都需要FQDN,所以這步比較重要,確保各主機能相互解析。
5.5 配置NTP
每一臺上安裝NTP服務,並設置管理節點為NTP Server,其它節點為Client節點。
<code> /<code>
配置Ceph-admin節點為ntp server。
<code>allow
192.168
.123
.0
/24
/<code>
重啟chrony服務。
<code>/<code>
配置其它Ceph節點為ntp client。
<code>server
ceph-admin iburst/<code>
重啟chrony服務。
<code> /<code>
在其它節點確認配置好了NTP
<code>210
Number
of
sources
=
4
MS
Name/IP
address
Stratum
Poll
Reach
LastRx
Last
sample
===============================================================================
^*
ceph-admin
3
9
0
68m
+39us[
+45us]
+/-
18ms
^-
time.cloudflare.com
3
10
352
49m
+5653us[+5653us]
+/-
71ms
^?
de-user.deepinid.deepin.>
3
10
21
21m
-2286us[-2286us]
+/-
97ms
^?
2402
:f000:1:416:101:6:6:>
0
6
0
-
+0ns[
+0ns]
+/-
0ns
/<code>
5.6 升級系統內核
由於需要配置iscsi網關,而iscsi網關需要操作系統內核版本為Linux內核v4.16(或更高版本),所以需要升級CentOS7.7的系統內核。
查看當前使用的內核版本。
<code>#uname
-r
3.10
.0-862
.el7
.x86_64
/<code>
導入public key。
<code> /<code>
查看安裝的內核版本。
<code>kernel
-ml-5.5.8-1/<code>
設置kernel默認啟動項。
<code># grub2-set
-default
"kernel-ml-5.5.8-1"
/<code>
查看新設置的默認的啟動項,並重啟系統。
<code>/<code>
正式開始搭建Ceph
6.1 配置Ceph源
在部署節點配置Ceph-deploy工具的國內yum源。
<code>[ceph-noarch]
name
=Ceph noarch packagesbaseurl
=http://mirrors.163
.com/ceph/rpm-nautilus/el7/noarchenabled
=1
gpgcheck
=1
priority
=1
type
=rpm-mdgpgkey
=http://mirrors.163
.com/ceph/keys/release.asc/<code>
6.2 安裝Ceph-Deploy
在部署節點安裝Ceph-deploy工具,並查看版本為2.0.1,注意不配置Ceph-deploy yum源,默認也可以下載ceph-deploy,但下載的是1.5,此版本有bug,需要安裝額外缺失的包才能正常使用。
<code>#yum
install
python-setuptools
-y
#yum
install
ceph-deploy
-y
#ceph-deploy
--version
2.0
.1
/<code>
6.3 配置無密碼登錄
配置無密碼登錄。
<code> /<code>
6.4 開始安裝Ceph
創建初始化目錄。
<code>mkdir my-cluster&&
cd
my-cluster/<code>
ceph-deploy生產一些文件到當前目錄。執行部署時請確保您位於此目錄下。
創建命名為ceph集群。
<code>#ceph-deploy
new
ceph-node1
.localdomain
ceph-node2
.localdomain
ceph-node
.localdomain
/<code>
檢查當前目錄中會出現ceph.conf,ceph.mon.keyring文件。
安裝Ceph軟件包,默認ceph-deploy會自動下載匹配版本的ceph,想要自動定義安裝版本使用--release指定安裝的Ceph版本以及使用--repo-url指定自動配置的Ceph yum源,不指定--repo-url,Ceph-deploy會自動配置成國外的Ceph源,國內訪問慢,容易安裝失敗。
這裡指定的主機名需要和做ssh免密碼登錄的主機名相同,否者還是會提示輸入密碼。
<code>/<code>
部署mon。
<code>/<code>
溫馨提醒
執行此命令前需要確保每臺存儲節點主機名為第三章節中規劃的主機名,否者會報錯。
執行此命令後會生成如下文件。
<code>#cd
my-cluster
&ls
ceph
.client
.admin
.keyring
ceph
.bootstrap-mgr
.keyring
ceph
.bootstrap-osd
.keyring
ceph
.bootstrap-mds
.keyring
ceph
.bootstrap-rgw
.keyring
ceph
.bootstrap-rbd
.keyring
ceph
.bootstrap-rbd-mirror
.keyring
/<code>
推送配置文件到各Ceph節點。
<code>#ceph-deploy
admin
ceph-node1
.localdomain
ceph-node2
.localdomain
ceph-node3
.localdomain
/<code>
初始化OSD。
<code>#ceph-deploy osdcreate
#ceph-deploy osdcreate
#ceph-deploy osdcreate
#ceph-deploy osdcreate
#ceph-deploy osdcreate
#ceph-deploy osdcreate
#ceph-deploy osdcreate
#ceph-deploy osdcreate
#ceph-deploy osdcreate
/<code>
在3個存儲節點上都部署mgr。
<code>#ceph-deploy
mgr
create
ceph-node1
.localdomain
#ceph-deploy
mgr
create
ceph-node2
.localdomain
#ceph-deploy
mgr
create
ceph-node3
.localdomain
/<code>
檢查Ceph群集狀態。
<code>/<code>
6.5 安裝Dashboard
至此ceph群集安裝完成,但還沒有啟用Dashboard插件,下面我們開始配置Dashboard插件
在所有dashboard節點上安裝插件包。
<code>/<code>
開啟插件。
<code>ceph mgr module
enable
dashboard/<code>
禁用SSL。
<code>ceph config
set
mgr mgr/dashboard/sslfalse
/<code>
配置監聽IP。
<code>ceph config
set
mgr mgr/dashboard/server_addr 0.0.0.0/<code>
溫馨提醒
此處必須設置監控地址為0.0.0.0,而不能是直接IP地址,因為其監控的是所有本地地址包括IPV4和IPV6,同時也不能禁用IPV6地址。
配置監聽端口。
<code>ceph config
set
mgr mgr/dashboard/server_port 8443/<code>
設置用戶及密碼。
<code>/<code>
查看已開啟模塊信息。
<code>/<code>
使用配置生效。
<code>ceph mgr module
disable
dashboardceph mgr module
enable
dashboard/<code>
通過查看ceph mgr services命令輸出地址。
<code> {"dashboard"
:"http://ceph-node1.localdomain:8443/"
}/<code>
訪問Ceph Dashboard地址
http://192.168.123.199:8443/#/dashboard
至此Dashboard安裝完成,但其它的功能,如:rgw,cephfs,iscsi,監控等都需要手工啟用,需要一個個啟用這些功能,如下圖所示:
rgw沒有啟用:
cephfs沒有啟用:
nfs沒有啟用:
iscsi沒有啟用:
監控沒有啟用:
6.6 安裝RGW
默認Ceph沒有安裝rgw,需要安裝rgw,在所有rgw節點上安裝。
<code>/<code>
創建rgw實例。
<code>#ceph-deploy
rgw
create
ceph-node1
.localdomain
#ceph-deploy
rgw
create
ceph-node2
.localdomain
#ceph-deploy
rgw
create
ceph-node3
.localdomain
/<code>
命令執行後,可以通過http://rgw-node:7480測試是否安裝成功,出現以下內容證明rgw安裝成功。
6.7 Dashboard中啟用RGW
如前文所講,Ceph Dashboard默認安裝好後,沒有啟用rgw,需要手工Dashboard中啟用RGW,以下命令都在Ceph存儲節點執行。
創建rgw系統賬戶。
<code>#radosgw-admin usercreate
/<code>
記下輸出的access_key 和 secret_key的值,當初沒有記下也可以通過以下命令查看(可選)
<code>/<code>
為Dashboard設置access_key 和 secret_key。
<code> /<code>
禁用SSL。
<code>ceph dashboard
set
-rgw-api-ssl-verify False/<code>
這時候打開Dashboard就能看到rgw信息能正常顯示了。
6.8 安裝Cephfs
如前文所講,Ceph Dashboard默認安裝好後,沒有啟用ceogfs,需要手工Dashboard中啟用cephfs,以下命令除了ceph-deploy命令在部署節點執行,其他命令都在ceph節點執行。
<code>#ceph-deploy
mds
create
ceph-node1
.localdomain
#ceph-deploy
mds
create
ceph-node2
.localdomain
#ceph-deploy
mds
create
ceph-node3
.localdomain
/<code>
創建池。
<code> /<code>
創建文件系統。
<code>/<code>
查看mds狀態。
<code>cephfs:1 {0=node3.localdomain=up:active}
/<code>
Ceph fs不需要做其它集成工作,所以直接在Dashboard中就可以顯示了。
6.9 配置nfs
自從Ceph Jewel版本,nfs-ganesha開始支持ceph,ganesha通過兩種方式支持將ceph導出為nfs。一種通過rgw,一種通過cephfs,FSAL_RGW調用librgw2將NFS協議轉義為S3協議再通過RGW存入到Ceph中,FSAL_CEPH 調用libcephfs2將NFS轉義為Cephfs協議再存入到Ceph 中,但之前都是命令行方式的支持,在Ceph Nautilus中Ceph Dashboard現在也支持配置這兩種方式的NFS。
在ganesha節點查看是否安裝librgw2和libcephfs2軟件包。
<code>librgw2
-14.2.7-0.el7.x86_64libcephfs2
-14.2.7-0.el7.x86_64/<code>
在ganesha節點上配置nfs-ganesha源。
<code>[nfs-ganesha]
name
=nfs-ganeshabaseurl
=http://us-west.ceph.com/nfs-ganesha/rpm-V2.7
-stable/nautilus/x86_64
/enabled
=1
priority
=1
/<code>
在所有ganesha節點上安裝ganesha。
<code>/<code>
設置服務啟動以及開機啟動。
<code>#systemctl
start
nfs-ganesha
.service
#systemctl
status
nfs-ganesha
.service
#systemctl
enable
nfs-ganesha
.service
/<code>
新建ganesha_data的pool,此pool專門用來存放一些配置文件,Dashboard管理NFS需要有些配置文件存放在Rados pool中。
<code>/<code>
新建空的daemon.txt文本文件。
<code>#touch
daemon
.txt
/<code>
導入daemon文件到ganesha_data pool中。
<code>#rados
-p
ganesha_data
put
conf-ceph-node1
.localdomain
daemon
.txt
#rados
-p
ganesha_data
put
conf-ceph-node2
.localdomain
daemon
.txt
#rados
-p
ganesha_data
put
conf-ceph-node3
.localdomain
daemon
.txt
/<code>
溫馨提醒
1.存入rados的文件名必須要是conf-xxxx,原因是要Ceph Dashboard支持NFS Ganesha管理功能,需要遵循關於每個服務守護進程的RADOS對象名稱的約定。對象的名稱必須是conf-格式,其中對應於運行此服務的節點名稱。是一個任意字符串,應唯一地標識該守護程序實例(例如,運行守護程序的主機名)。
2.當然我們創建這個文件現在是空的,後續通過Dashboard創建導出後,conf-會有內容,每個conf-都包含指向NFS-Ganesha守護程序應服務的導出的RADOS URL。這些URL的格式為:%url rados://[/]/export-,在創建新的導出時也同時會創建export-id的文件,這個文件內容存放實際的導出的配置內容,也就是之前沒有配置Dashboard時,直接配置在ganesha配置文件中的EXPORT{}的內容。
3.conf-和export-對象必須存儲在同一個RADOS池/命名空間,當然如果是通過Dashboard配置的這兩個文件肯定是在同個pool,如果手工創建的話就需要注意這點。
查看gaensha pool中存在
conf-ceph-node3.localdomain。
<code>#rados
-p
ganesha_data
ls
conf-ceph-node1
.localdomain
conf-ceph-node2
.localdomain
conf-ceph-node3
.localdomain
/<code>
查看當前Ceph節點的rgw認證信息,如,下圖輸出
client.rgw.ceph-node3.localdomain,為後續每一臺虛擬機ganesha配置文件中RGW部分name的值。
<code>installed
auth entries:
client.rgw.ceph-node3.localdomain
key
:AQABu2decDx5IhAA4/7I9iNzFkQE9s4A6XQTtw==
caps
:[mon] allow rw
caps
:[osd] allow rwx
/<code>
編輯每一臺節點ganesha配置文件,並根據當前所在節點輸入以下內容,如下圖顯示的是存儲節點3的配置信息,請根據情況替換成其它存儲節點配置信息。
<code> RADOS_URLS { ceph_conf ="/etc/ceph/ceph.conf"
; Userid ="admin"
; watch_url ="rados://ganesha_data/conf-ceph-node3.localdomain"
; } %url rados: RGW { ceph_conf ="/etc/ceph/ceph.conf"
; name ="client.rgw.ceph-node3.localdomain"
; cluster ="ceph"
; } /<code>
此配置文件包括3部分內容:
1.RADOS_URLS部分
- ceph_confi主要是配置ceph的配置文件路徑
- Userid主要是配置訪問rados的用戶名admin
- watch_url主要是配置,當通過Dashboard生成新的配置文件存入在rados中,ganesha進程可以讀取新的內容並通過SIGHUP重新加載配置文件。
2.%url部分
- NFS Ganesha支持從RADOS對象讀取配置。該 %url指令允許指定一個RADOS URL,該URL標識RADOS對象的位置。
3.RGW部分
- cluster 設置一個Ceph集群名稱(必須與正在導出的集群匹配,默認使用ceph-deploy部署的ceph群集名稱為ceph)
- name 設置RGW實例名稱(必須與正在導出的集群中的rgw節點的認證信息匹配,使用ceph auth list可以查看以client.rgw.開頭的信息)
- ceph_conf 給出了要使用的非默認ceph.conf文件的路徑,默認路徑可以省略此行。
溫馨提醒
想要在Dashbaord中能顯示NFS配置界面,不能像網上的文章沒有配置Dashboard中使用NFS步驟一樣,在Dashbaord中顯示NFS配置,需要有部分配置文件存儲在Rados對象存儲中:
1.原先在ganesha配置文件中的EXPORT部分內容需要存放在rados文件中,這部分是直接通過Dashboard中配置生成以export-id並存放在rados中。
2.Dashboard中有需要選擇"add deamon“菜單內容,這裡正常是能顯示對應的主機名稱,要想顯示這內容,需要部分配置的內容是需要存放在rados的pool中,也就是pool中存放這conf-xxx,同時需要導出的目錄也是存放conf-xxx的目錄,否者Dashboard NFS配置中“add deamon”功能中顯示為空,不能正常選擇要導出節點名稱。
要在Ceph儀表板中啟用NFS-Ganesha管理,我們只需要告訴儀表板要導出哪個pool,比如以下是導出cephfs_data pool。
<code>ceph dashboard
set
-ganesha-clusters-rados-pool-namespace ganesha_data/<code>
溫馨提醒
此處導出目錄必須是前面創建的ganesha_data存儲池,也就是導出的池必須有conf-xxx文件,在Dashboard中才能顯示。
重啟ganesha服務,並設置開機啟動。
<code> /<code>
這時候打開Ceph Dashboard就能看到NFS模塊正常顯示了:
6.10 配置iscsi gw
之前Ceph存儲集群的塊存儲不支持iscsi,從Ceph Luminous版本開始支持iSCSI。
Ceph中實現iscsi 方式有兩種,一種是通過Linux target framework(tgt)實現,一種是通過Linux-IO Target(lio)實現,本文是使用的方式是LIO,LIO現在也是官方推薦的方式。
LIO的實現方式主要是利用TCMU與Ceph的librbd庫進行交互,並將RBD images映射給iSCSI客戶端,所以需要有TCMU軟件包安裝在系統中。
啟用iscsi gateway需要滿足以下條件:
- 正在運行的Ceph Luminous(12.2.x)集群或更高版本
- CentOS 7.5(或更高版本);Linux內核v4.16(或更高版本)
- 該ceph-iscsi軟件包安裝在所有iSCSI網關節點上
- 如果Ceph iSCSI網關未位於OSD節點上,則將位於中的Ceph配置文件/etc/ceph/從存儲集群中正在運行的Ceph節點複製到iSCSI Gateway節點。Ceph配置文件必須存在於iSCSI網關節點下的/etc/ceph/。
iscsi gw示意圖如下:
在所有iscsi gw節點上配置ceph-iscsi yum源。
<code>[ceph-iscsi]
name
=ceph-iscsi noarch packagesbaseurl
=http://download.ceph.com/ceph-iscsi/3
/rpm/el7/noarchenabled
=1
gpgcheck
=1
gpgkey
=https://download.ceph.com/keys/release.asctype
=rpm-md[ceph-iscsi-source]
name
=ceph-iscsi source packagesbaseurl
=http://download.ceph.com/ceph-iscsi/3
/rpm/el7/SRPMSenabled
=0
gpgcheck
=1
gpgkey
=https://download.ceph.com/keys/release.asctype
=rpm-md[tcmu-runner]
name
=tcmu-runnerbaseurl
=https://3
.chacra.ceph.com/r/tcmu-runner/master/eef511565078fb4e2ed52caaff16e6c7e75ed6c3/centos/7
/flavors/default/x86_64
/priority
=1
gpgcheck
=0
[ceph-iscsi-conf]
name
=ceph-iscsi-configbaseurl
=https://3
.chacra.ceph.com/r/ceph-iscsi-config/master/7496
f1bc418137230d8d45b19c47eab3165c756a/centos/7
/flavors/default/noarch/priority
=1
gpgcheck
=0
/<code>
溫馨提醒
tcmul軟件包沒有包括在常用的第三方的yum源中,只有redhat官方的源,但沒有訂閱的話不能使用,所以有個人用戶搞了tcmu-runner 源,但個人源不能保證一直有效。
在每個iSCSI網關節點上安裝ceph-iscsi-tools軟件包,安裝ceph-iscsi會自動安裝tcmu-runner 包。
<code>/<code>
重啟tcmu-runner。
<code>#systemctl
start
tcmu-runner
.service
#systemctl
status
tcmu-runner
.service
#systemctl
enable
tcmu-runner
.service
/<code>
創建image pool。
<code>ceph osd pool create iscsi-images 32 32 replicated
ceph osd pool application
enable
iscsi-images rbd/<code>
創建image。
<code>rbd --pool iscsi-images create --size=2048
'iscsi-gateway-image001'
/<code>
查看pool中的image。
<code>iscsi
-gateway-image001/<code>
配置每一個iscsi gw節點上iscsi gateway配置文件,cluster_client_name為client.admin用戶,trusted_ip_list 為所有iscsi gateway IP地址,api端口為5000,user為admin。
<code>[config]
cluster_client_name
= client.adminpool
= iscsi-imagestrusted_ip_list
=192.168
.123.199
,192.168
.123.238
,192.168
.123.242
minimum_gateways
=1
fqdn_enabled
=true
api_port
=5000
api_user
= adminapi_password
= adminapi_secure
=false
logger_level
= WARNING /<code>
Trusted_ip_list是每個iscsi網關上IP地址的列表,這些IP地址將用於管理操作,例如目標創建,lun導出等。
重啟rbd-target服務並設置開機啟動。
<code>#systemctl
start
rbd-target-api
.service
#systemctl
status
rbd-target-api
.service
#systemctl
enable
rbd-target-api
.service
/<code>
查看網關服務狀態。
<code> Warning: Could notload
preferencesfile
/root/.gwcli/prefs.bin.HTTP
mode
:http
Rest API port :5000
Local
endpoint :http
://localhost:5000
/apiLocal
Ceph Cluster : ceph2
ndary API IP's : 192.168.123.199,192.168.123.238,192.168.123.242
/<code>
iscsi-gateway命令行工具gwcli用於創建/配置iscsi-target與rbd image;其餘較低級別命令行工具,如targetcli或rbd等,可用於查詢配置,但不能用於修改gwcli所做的配置。
可以查看當前iscsi gateway配置,當然gwcli只是命令行工具,當我們配置了Dashboard集成iscsi後,就不一定要用這個命令行工具配置了,可以使用圖形界面配置也是一樣的。
Dashboard啟用用iscsi。
要禁用API SSL驗證。
<code>ceph dashboard
set
-iscsi-api-ssl-verificationfalse
/<code>
使用以下命令定義可用的iSCSI網關,添加iscsi-gateway之前,需要在每一個網關上啟動rbd-api服務。
<code> /<code>
溫馨提醒
在本文的開始,說明了各節點的hosts配置文件中一定要是FQDN,就是因為添加每一臺節點是默認都解析成了localhost.localdomain,所以會導致只能添加成功一個iscsi gateway節點(原因是默認只有127.0.0.1配置FQDN)。
添加iscsi gw網關的用戶名admin,密碼admin是根據iscsi gw配置文件中定義的api_user以及api_password。
查看配置。
<code> {"gateways"
: {"ceph-node2.localdomain"
: {"service_url"
:"http://admin:[email protected]:5000"
},"ceph-node3.localdomain"
: {"service_url"
:"http://admin:[email protected]:5000"
},"ceph-node1.localdomain"
: {"service_url"
:"http://admin:[email protected]:5000"
}}}/<code>
登錄Dashbaord確認網關節點正常。
6.11 配置RBD Mirorr
Ceph Dashboard中界面中默認啟用了rbd mirror的配置界面,但沒有安裝rbd mirror服務,需要手工安裝下,當初這個配置使用就屬於後話了,有機會在下一篇文章中寫怎麼配置使用rbd mirror。
<code>#yum
install
rbd-mirror
#systemctl
enable
ceph-rbd-mirror
.target
#systemctl
start
ceph-rbd-mirror
.target
/<code>
6.12 配置grafana
Ceph Dashboard中集成了grafana&prometheus,但需要手工啟用,熟悉prometheus的人都知道其監控需要有exporter,ceph mgr模塊中內置了prometheus exporter模塊,所以無需要手工單獨安裝exporter,由於Ceph Dashboard中grafana還監控了Ceph存儲節點的監控信息,所以每臺存儲節點中需要安裝prometheus node exporter,借用redhat官方文檔說明下這個架構:
在grafana節點上配置grafana yum源。
<code>[grafana]
name
=grafanabaseurl
=https://mirrors.cloud.tencent.com/grafana/yum/el7/enabled
=1
gpgcheck
=0
/<code>
通過yum命令安裝grafana。
<code>/<code>
在/etc/grafana/grafana.ini中配置Grafana 以適應匿名模式,並修改grafana默認風格,否者默認為暗黑,集成到ceph dashboard中風格不匹配。
<code>default_theme
= light[auth.anonymous]
enabled
=true
org_name
= Main Org.org_role
= Viewer/<code>
溫馨提醒
注意Main Org後面的個點“.”不要忘記!
在較新版本的Grafana(從6.2.0-beta1開始)中,`allow_embedding`引入了一個名為的新設置 。該設置需要明確設置`true`,Ceph Dashboard中的Grafana集成才能正常使用,因為其默認值為`false`。
啟動grafana並設為開機自啟。
<code>#systemctl
start
grafana-server
.service
#systemctl
status
grafana-server
.service
#systemctl
enable
grafana-server
.service
/<code>
安裝grafana插件。
<code> /<code>
重啟grafana服務。
<code>/<code>
打開瀏覽器輸入grafana地址。
http://192.168.123.240:3000,輸入默認用戶名admin,默認密碼admin,打開grfana界面:
查看已安裝的插件。
6.12 安裝promethues
安裝prometheus。
從官方下載prometheus軟件包並解壓。
<code>#tar
prometheus-2
.14
.0
.linux-amd64
.tar
.gz
/<code>
複製到目錄中
<code> /<code>
查看promethus版本。
<code>/<code>
配置系統服務啟動。
<code>[Unit]
Description
=Prometheus Monitoring System
Documentation
=Prometheus Monitoring System
[Service]
ExecStart
=/etc/prometheus/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --web.listen-address=:9090
[Install]
WantedBy
=multi-user.target
/<code>
修改默認配置文件。
<code>scrape_interval:
5s
scrape_configs:
-
job_name:
'prometheus'
static_configs:
-
targets:
['192.168.123.240:9090']
-
job_name:
'ceph'
honor_labels:
true
static_configs:
-
targets:
['ceph-node1.localdomain:9283']
labels:
instance:
'ceph_cluster'
-
targets:
['ceph-node2.localdomain:9283']
labels:
instance:
'ceph_cluster'
-
targets:
['ceph-node3.localdomain:9283']
labels:
instance:
'ceph_cluster'
-
job_name:
'node-exporter'
static_configs:
-
targets:
['ceph-node1.localdomain:9100']
-
targets:
['ceph-node2.localdomain:9100']
-
targets:
['ceph-node3.localdomain:9100']
/<code>
溫馨提醒
以上配置文件targetes需要寫成域名,否者ceph dashboard 中host details 中不能正常顯示監控數據,而grafana中顯示正常,grafana使用IP查詢正常,ceph dashboard因為他是使用的域名查詢監控信息,而prometheus中寫的是IP,導致查詢不到,所以這裡要寫成域名。
honor_labels參數 必須有並設置為true,否者會導致Ceph Dashbaord中顯示grafana 某些面板沒有數據出現。
加載系統服務。
<code>/<code>
啟動服務和添加開機自啟動。
<code>systemctl start prometheus
systemctl status prometheus
systemctl
enable
prometheus/<code>
安裝prometheus node_exporter
從官方下載node_export軟件包到每一臺存儲節點上,並解壓。
<code>#tar
-zxvf
node_exporter-0
.18
.1
.linux-amd64
.tar
.gz
/<code>
複製到目錄。
<code> /<code>
配置成系統服務啟動。
<code>[Unit]
Description
=Prometheus node_exporter[Service]
User
=nobodyExecStart
=/etc/node_exporter/node_exporter --log.level=errorExecStop
=/usr/bin/killall node_exporter/<code>
啟動服務。
<code>#systemctl
daemon-reload
#systemctl
enable
node_exporter
.service
#systemctl
start
node_exporter
.service
#systemctl
status
node_exporter
.service
/<code>
查看監控端口。
<code>tcp
LISTEN0
128
:::9100
:::* users:(("node_exporter"
,pid=6776
,fd=3
))/<code>
6.13 啟用Ceph exporter
通過運行以下命令啟用作為Ceph Manager模塊附帶的Ceph Exporter。
<code>ceph mgr module
enable
prometheus/<code>
查看啟用的prometheus模塊。
<code> {"dashboard"
:"http://ceph-node1.localdomain:8443/"
,"prometheus"
:"http://ceph-node1.localdomain:9283/"
} /<code>
確認端口正在監控,正常情況只要開戶prometheus,每一臺存儲節點上都會開啟9283端口。
<code>tcp
LISTEN0
5
:::9283
:::* users:(("ceph-mgr"
,pid=1071
,fd=22
))/<code>
輸入
http://192.168.123.240:9090,打開prometheus target界面確認ceph mgr、node export、prometheus都正常。
想要ceph三個節點都顯示"UP",必須在所有的Ceph節點中都啟用MGR,否者只有一個是"UP"。
配置禁用SSL。
<code>ceph dashboard
set
-grafana-api-ssl-verify False/<code>
設置grafana的地址。
<code>/<code>
溫馨提醒
此處的grafana地址不能為域名,必須為IP。
6.14 配置grfana對接prometheus
打開grafana界面,點擊“配置”中的數據源。
點擊“增加數據源”。
選擇prometheus。
輸入名稱以及IP。
完成配置。
6.15 配置grfana模板
導入ceph dashboard grafana插件,有兩種方式可以導入dashboard,一是github地址直接下載並導入,二是本地導入,其實在安裝Dashboard的時候就會自動安裝ceph dashboard grafana插件了。
github地址如下:
https://github.com/ceph/ceph/tree/master/monitoring/grafana/dashboards。
通過命令查看目錄位置。
<code> ceph-grafana-dashboards-14.2.8-0.el7.noarch ceph-mgr-dashboard-14.2.8-0.el7.noarch /etc/grafana/dashboards/ceph-dashboard /etc/grafana/dashboards/ceph-dashboard/ceph-cluster.json /etc/grafana/dashboards/ceph-dashboard/cephfs-overview.json /etc/grafana/dashboards/ceph-dashboard/host-details.json /etc/grafana/dashboards/ceph-dashboard/hosts-overview.json /etc/grafana/dashboards/ceph-dashboard/osd-device-details.json /etc/grafana/dashboards/ceph-dashboard/osds-overview.json /etc/grafana/dashboards/ceph-dashboard/pool-detail.json /etc/grafana/dashboards/ceph-dashboard/pool-overview.json /etc/grafana/dashboards/ceph-dashboard/radosgw-detail.json /etc/grafana/dashboards/ceph-dashboard/radosgw-overview.json /etc/grafana/dashboards/ceph-dashboard/rbd-overview.json /usr/share/doc/ceph-grafana-dashboards-14.2.8 /usr/share/doc/ceph-grafana-dashboards-14.2.8/README /usr/share/doc/ceph-grafana-dashboards-14.2.8/README.md/<code>
打開grafana選擇“導入”。
打開導入面板,選擇"導入"。
導入所有的Dashboard模板文件,查看導入的模板文件。
查看導入模板的詳細信息。
打開Ceph Dashboard查看其內嵌有的Dashboard。
結尾
在此文編寫過程中Ceph社區發了布了最新的Ceph Octopus版本,這個版本中最大的變化是使用了容器安裝Ceph,只需要幾條命令就能安裝出一個帶Dashboard的Ceph集群,也就無需像本文中這麼折騰安裝了。
新版本拋棄了Ceph-Deploy工具,只能使用Cephadm工具安裝,而新的安裝方式中Dashboard是默認啟用的,也能看出未來Dashbaord在Ceph中的地位,不是像以前是可選的了,由於是新出的Cephadm,所以還有些功能是未開發完成的,比如無法安裝iscsi等。
簡單說幾點新版本Ceph的改進:
1.Dashboard界面變成了多數WEB使用的側邊導航欄結構。
2.增加了監控功能,使用的是promethues alert模塊實現。
其它可參考官方release說明:
https://ceph.io/releases/v15-2-0-octopus-released/。