No.1
引言
在這個特殊的時期裏,有比較多的時間折騰技術,在前段時間折騰完Cobbler以及Ansible Tower後,想着要折騰啥?這時候想起來,之前看技術文章知道最新版本的Ceph Nautilus官方集成了Dashboard界面,只是看過截圖,感覺是很炫酷,在Ceph經歷了多年的使用多種第三方Dashboard工具,如:Calamari、VSM等後,終於迎來了官方Dashboard,最初只是想體驗下原生的Dashboard是什麼樣子的,在開始搭建的過程中,發現Dashboard的模式不是直接啓用模塊所有的功能就能正常使用,初始安裝好只有最基本的Ceph集羣以及RBD管理等功能,像文件存儲、對象存儲、iSCSI網關、NFS網關、監控都是沒有集成的,都需要單獨集成,Ceph啓用Dashboard的資料網上能找到的多數是直接啓用Dashboard模塊,集成其它模塊的中文資料也很少,因此也開啓了一路不斷踩坑不斷驗證的模式,歷時數十天終於安裝集成完畢,現總結下經驗,供同行參考,避免大家浪費時間踩坑,故引出此文。
No.2
Ceph Dashboard介紹
Ceph的官方Dashboard正式是從Ceph luminous版本開始,最初是一個簡單的只讀視圖,可查看Ceph集羣的各種運行時信息和性能數據,而無需身份驗證或任何管理功能。
Ceph Nautilus後的Dashboard可實現管理Ceph的功能,其來源於suse收購的的商業Ceph管理軟件openATTIC的功能移植。
現在的Ceph Dashboard後端代碼使用CherryPy框架和自定義REST API實現。WebUI基於Angular 實現。
No.3
實驗環境介紹
本實驗環境使用4臺虛擬機,使用workstation搭建,部署節點使用2vCPU、2GB內存,20Gb磁盤,存儲節點每臺虛擬機配置2vCPU、2GB內存、1塊20Gb系統盤、3塊100G數據盤,1塊網卡(爲了簡單沒有區分羣集網和存儲網),節點使用的操作系統爲CentOS7.7最小化安裝。
實驗環境 | 角色 | IP | 主機名 | 說明 |
ceph實驗環境說明 | 部署節點 | 192.168.123.240 | ceph-admin.localdomain | ntp server prometheus grafana |
存儲節點1 | 192.168.123.199 | ceph-node1.localdomain | mon osd rgw cephfs fs-ganesha iscsi gw dashboard mgr | |
存儲節點2 | 192.168.123.238 | ceph-node2.localdomain | mon osd rgw iscsi gw cephfs fs-ganesha mgr dashboard | |
存儲節點3 | 192.168.123.242 | ceph-node3.localdomain | mon osd rgw iscsi gw cephfs nfs-ganesha rbd mirror mgr dashboard |
注意:每臺虛擬機主機名稱必須按照上表中的名稱命名,因爲在安裝MON的時候會調用每一臺的主機名,所以不能是默認的localhost。
No.4
安裝方式說明
本文主要是參考官方文檔手工安裝的方式,當然一些商業版本的Ceph已經實現了圖形化安裝,比如像Redhat 最新版本Red Hat Ceph Storage 4已經實現圖形化安裝,如下圖所示,有興趣可以嘗試下。
No.5
準備工作
5.1
配置防火牆
爲了最大程度簡化實驗步驟,關閉每一臺節點的防火牆功能,生產環境中請根據實際情況打開並開放相應端口。
#systemctl stop firewalld #systemctl disable firewalld
5.2
配置SELINUX
爲了防止出現由於SELinux引起意外問題,關閉每一臺的SELinux。
#setenforce 0 #sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
5.3
配置安裝工具源
在每一臺節點上安裝epel源。
#yum install https://mirrors.cloud.tencent.com/epel/epel-release-latest-7.noarch.rpm -y
5.4
配置域名解析
配置本地主機名解析。
#vi /etc/hosts 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
溫馨
提醒
此處必須設置FQDN,也就是完全合格域名,不能只是主機名,否者在啓用iSCSI網關是會出現錯誤,在後方中會詳細介紹故障現象,此處只要記住必須要設置FQDN就行;
ceph dashboard中 prometheus、iscsi target以及mgr service中都需要FQDN,所以這步比較重要,確保各主機能相互解析。
5.5
配置NTP
每一臺上安裝NTP服務,並設置管理節點爲NTP Server,其它節點爲Client節點。
#yum install chrony -y
配置Ceph-admin節點爲ntp server。
#vi /etc/chrony.conf allow 192.168.123.0/24
重啓chrony服務。
#systemctl restart chronyd
配置其它Ceph節點爲ntp client。
#vi /etc/chrony.conf server ceph-admin iburst
重啓chrony服務。
#systemctl restart chronyd
在其它節點確認配置好了NTP
#chronyc sources 210 Number of sources = 4MS 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 5.6
升級系統內核
由於需要配置iscsi網關,而iscsi網關需要操作系統內核版本爲Linux內核v4.16(或更高版本),所以需要升級CentOS7.7的系統內核。
查看當前使用的內核版本。
#uname -r 3.10.0-862.el7.x86_64
導入public key。
#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y #yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
查看安裝的內核版本。
#rpm -qa | grep kernel kernel-ml-5.5.8-1
設置kernel默認啓動項。
# grub2-set-default "kernel-ml-5.5.8-1"
查看新設置的默認的啓動項,並重啓系統。
#grub2-editenv list
No.6
正式開始搭建Ceph
6.1
配置Ceph源
在部署節點配置Ceph-deploy工具的國內yum源。
#vi /etc/yum.repos.d/ceph.repo [ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.163.com/ceph/rpm-nautilus/el7/noarch enabled=1 gpgcheck=1 priority=1 type=rpm-md gpgkey=http://mirrors.163.com/ceph/keys/release.asc
6.2
安裝Ceph-Deploy
在部署節點安裝Ceph-deploy工具,並查看版本爲2.0.1,注意不配置Ceph-deploy yum源,默認也可以下載ceph-deploy,但下載的是1.5,此版本有bug,需要安裝額外缺失的包才能正常使用。
#yum install python-setuptools -y #yum install ceph-deploy -y #ceph-deploy --version 2.0.1
6.3
配置無密碼登錄
配置無密碼登錄。
#ssh-keygen #ssh-copy-id [email protected] #ssh-copy-id [email protected] #ssh-copy-id [email protected]
6.4
開始安裝Ceph
創建初始化目錄。
#mkdir my-cluster&&cd my-cluster
ceph-deploy生產一些文件到當前目錄。執行部署時請確保您位於此目錄下。
創建命名爲ceph集羣。
#ceph-deploy new ceph-node1.localdomain ceph-node2.localdomain ceph-node3.localdomain
檢查當前目錄中會出現ceph.conf,ceph.mon.keyring文件。
安裝Ceph軟件包,默認ceph-deploy會自動下載匹配版本的ceph,想要自動定義安裝版本使用--release指定安裝的Ceph版本以及使用--repo-url指定自動配置的Ceph yum源,不指定--repo-url,Ceph-deploy會自動配置成國外的Ceph源,國內訪問慢,容易安裝失敗。
這裏指定的主機名需要和做ssh免密碼登錄的主機名相同,否者還是會提示輸入密碼。
#ceph-deploy install --release nautilus ceph-node1.localdomain ceph-node2.localdomain ceph-node3.localdomain --repo-url http://mirrors.163.com/ceph/rpm-nautilus/el7/ --gpg-url http://mirrors.163.com/ceph/keys/release.asc
部署mon。
#ceph-deploy mon create-initial
溫馨
提醒
執行此命令前需要確保每臺存儲節點主機名爲第三章節中規劃的主機名,否者會報錯。
執行此命令後會生成如下文件。
#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
推送配置文件到各Ceph節點。
#ceph-deploy admin ceph-node1.localdomain ceph-node2.localdomain ceph-node3.localdomain
初始化OSD。
#ceph-deploy osd create --data /dev/sdb ceph-node1.localdomain #ceph-deploy osd create --data /dev/sdc ceph-node1.localdomain #ceph-deploy osd create --data /dev/sdd ceph-node1.localdomain #ceph-deploy osd create --data /dev/sdb ceph-node2.localdomain #ceph-deploy osd create --data /dev/sdc ceph-node2.localdomain #ceph-deploy osd create --data /dev/sdd ceph-node2.localdomain #ceph-deploy osd create --data /dev/sdb ceph-node3.localdomain #ceph-deploy osd create --data /dev/sdc ceph-node3.localdomain #ceph-deploy osd create --data /dev/sdd ceph-node3.localdomain
在3個存儲節點上都部署mgr。
#ceph-deploy mgr create ceph-node1.localdomain #ceph-deploy mgr create ceph-node2.localdomain #ceph-deploy mgr create ceph-node3.localdomain
檢查Ceph羣集狀態。
#ceph -s
6.5
安裝Dashboard
至此ceph羣集安裝完成,但還沒有啓用Dashboard插件,下面我們開始配置Dashboard插件
在所有dashboard節點上安裝插件包。
#yum install -y ceph-mgr-dashboard -y
開啓插件。
#ceph mgr module enable dashboard
禁用SSL。
#ceph config set mgr mgr/dashboard/ssl false
配置監聽IP。
#ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
溫馨
提醒
此處必須設置監控地址爲0.0.0.0,而不能是直接IP地址,因爲其監控的是所有本地地址包括IPV4和IPV6,同時也不能禁用IPV6地址。
配置監聽端口。
#ceph config set mgr mgr/dashboard/server_port 8443
設置用戶及密碼。
#ceph dashboard ac-user-create admin 123456 administrator
查看已開啓模塊信息。
#ceph mgr services
使用配置生效。
#ceph mgr module disable dashboard #ceph mgr module enable dashboard
通過查看ceph mgr services命令輸出地址。
#ceph mgr services { "dashboard": "http://ceph-node1.localdomain:8443/" }
訪問Ceph Dashboard地址http://192.168.123.199:8443/#/dashboard
至此Dashboard安裝完成,但其它的功能,如:rgw,cephfs,iscsi,監控等都需要手工啓用,需要一個個啓用這些功能,如下圖所示:
rgw沒有啓用:
cephfs沒有啓用:
nfs沒有啓用:
iscsi沒有啓用:
監控沒有啓用:
6.6
安裝RGW
默認Ceph沒有安裝rgw,需要安裝rgw,在所有rgw節點上安裝。
#ceph-deploy install --rgw --release nautilus ceph-node1.localdomain ceph-node2.localdomain ceph-node3.localdomain --repo-url http://mirrors.163.com/ceph/rpm-nautilus/el7/ --gpg-url http://mirrors.163.com/ceph/keys/release.asc
創建rgw實例。
#ceph-deploy rgw create ceph-node1.localdomain #ceph-deploy rgw create ceph-node2.localdomain #ceph-deploy rgw create ceph-node3.localdomain
命令執行後,可以通過http://rgw-node:7480測試是否安裝成功,出現以下內容證明rgw安裝成功。
6.7
Dashboard中啓用RGW
如前文所講,Ceph Dashboard默認安裝好後,沒有啓用rgw,需要手工Dashboard中啓用RGW,以下命令都在Ceph存儲節點執行。
創建rgw系統賬戶。
#radosgw-admin user create --uid=rgw --display-name=rgw --system
記下輸出的access_key 和 secret_key的值,當初沒有記下也可以通過以下命令查看(可選)
#radosgw-admin user info --uid=rgw
爲Dashboard設置access_key 和 secret_key。
#ceph dashboard set-rgw-api-access-key <access_key> #ceph dashboard set-rgw-api-secret-key <secret_key>
禁用SSL。
#ceph dashboard set-rgw-api-ssl-verify False
這時候打開Dashboard就能看到rgw信息能正常顯示了。
6.8
安裝Cephfs
如前文所講,Ceph Dashboard默認安裝好後,沒有啓用ceogfs,需要手工Dashboard中啓用cephfs,以下命令除了ceph-deploy命令在部署節點執行,其他命令都在ceph節點執行。
#ceph-deploy mds create ceph-node1.localdomain #ceph-deploy mds create ceph-node2.localdomain #ceph-deploy mds create ceph-node3.localdomain
創建池。
#ceph osd pool create cephfs_data 32 #ceph osd pool create cephfs_metadata 32
創建文件系統。
#ceph fs new cephfs cephfs_metadata cephfs_data
查看mds狀態。
#ceph mds stat cephfs:1 {0=node3.localdomain=up:active}
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軟件包。
#rpm -qa |grep librgw librgw2-14.2.7-0.el7.x86_64
# rpm -qa |grep libcephfs libcephfs2-14.2.7-0.el7.x86_64
在ganesha節點上配置nfs-ganesha源。
#vi /etc/yum.repos.d/nfs-ganesha.repo [nfs-ganesha] name=nfs-ganesha baseurl=http://us-west.ceph.com/nfs-ganesha/rpm-V2.7-stable/nautilus/x86_64/ enabled=1 priority=1
在所有ganesha節點上安裝ganesha。
#yum install nfs-ganesha nfs-ganesha-ceph nfs-ganesha-rgw -y
設置服務啓動以及開機啓動。
#systemctl start nfs-ganesha.service #systemctl status nfs-ganesha.service #systemctl enable nfs-ganesha.service
新建ganesha_data的pool,此pool專門用來存放一些配置文件,Dashboard管理NFS需要有些配置文件存放在Rados pool中。
#ceph osd pool create ganesha_data 16
新建空的daemon.txt文本文件。
#touch daemon.txt
導入daemon文件到ganesha_data pool中。
#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
溫馨
提醒
1.存入rados的文件名必須要是conf-xxxx,原因是要Ceph Dashboard支持NFS Ganesha管理功能,需要遵循關於每個服務守護進程的RADOS對象名稱的約定。對象的名稱必須是conf-<daemon_id>格式,其中<daemon_id>對應於運行此服務的節點名稱。<daemon_id>
是一個任意字符串,應唯一地標識該守護程序實例(例如,運行守護程序的主機名)。
2.當然我們創建這個文件現在是空的,後續通過Dashboard創建導出後,conf-<daemon_id>會有內容,每個conf-<daemon_id>
都包含指向NFS-Ganesha守護程序應服務的導出的RADOS URL。這些URL的格式爲:%url rados://<pool_name>[/<namespace>]/export-<id>,在創建新的導出時也同時會創建export-id的文件,這個文件內容存放實際的導出的配置內容,也就是之前沒有配置Dashboard時,直接配置在ganesha配置文件中的EXPORT{}的內容。
3.conf-<daemon_id>
和export-<id>
對象必須存儲在同一個RADOS池/命名空間,當然如果是通過Dashboard配置的這兩個文件肯定是在同個pool,如果手工創建的話就需要注意這點。
查看gaensha pool中存在conf-ceph-node3.localdomain。
#rados -p ganesha_data ls conf-ceph-node1.localdomain conf-ceph-node2.localdomain conf-ceph-node3.localdomain
查看當前Ceph節點的rgw認證信息,如,下圖輸出client.rgw.ceph-node3.localdomain,爲後續每一臺虛擬機ganesha配置文件中RGW部分name的值。
#ceph auth list installed auth entries: client.rgw.ceph-node3.localdomain key: AQABu2decDx5IhAA4/7I9iNzFkQE9s4A6XQTtw== caps: [mon] allow rw caps: [osd] allow rwx
編輯每一臺節點ganesha配置文件,並根據當前所在節點輸入以下內容,如下圖顯示的是存儲節點3的配置信息,請根據情況替換成其它存儲節點配置信息。
#vi /etc/ganesha/ganesha.conf RADOS_URLS { ceph_conf = "/etc/ceph/ceph.conf"; Userid = "admin"; watch_url = "rados://ganesha_data/conf-ceph-node3.localdomain"; } %url rados://ganesha_data/conf-ceph-node3.localdomain RGW { ceph_conf = "/etc/ceph/ceph.conf"; name = "client.rgw.ceph-node3.localdomain"; cluster = "ceph"; }
此配置文件包括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。
#ceph dashboard set-ganesha-clusters-rados-pool-namespace ganesha_data
溫馨
提醒
此處導出目錄必須是前面創建的ganesha_data存儲池,也就是導出的池必須有conf-xxx文件,在Dashboard中才能顯示。
重啓ganesha服務,並設置開機啓動。
#systemctl restart nfs-ganesha
#systemctl status nfs-ganesha
這時候打開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源。
#vi /etc/yum.repos.d/ceph-iscsi.repo [ceph-iscsi] name=ceph-iscsi noarch packages baseurl=http://download.ceph.com/ceph-iscsi/3/rpm/el7/noarch enabled=1gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc type=rpm-md [ceph-iscsi-source] name=ceph-iscsi source packages baseurl=http://download.ceph.com/ceph-iscsi/3/rpm/el7/SRPMS enabled=0 gpgcheck=1 gpgkey=https://download.ceph.com/keys/release.asc type=rpm-md [tcmu-runner] name=tcmu-runner baseurl=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-config baseurl=https://3.chacra.ceph.com/r/ceph-iscsi-config/master/7496f1bc418137230d8d45b19c47eab3165c756a/centos/7/flavors/default/noarch/ priority=1 gpgcheck=0
溫馨
提醒
tcmul軟件包沒有包括在常用的第三方的yum源中,只有redhat官方的源,但沒有訂閱的話不能使用,所以有個人用戶搞了tcmu-runner 源,但個人源不能保證一直有效。
在每個iSCSI網關節點上安裝ceph-iscsi-tools軟件包,安裝ceph-iscsi會自動安裝tcmu-runner 包。
#yum install ceph-iscsi -y
重啓tcmu-runner。
#systemctl start tcmu-runner.service #systemctl status tcmu-runner.service #systemctl enable tcmu-runner.service
創建image pool。
#ceph osd pool create iscsi-images 32 32 replicated #ceph osd pool application enable iscsi-images rbd
創建image。
#rbd --pool iscsi-images create --size=2048 'iscsi-gateway-image001'
查看pool中的image。
#rbd ls -p iscsi-images iscsi-gateway-image001
配置每一個iscsi gw節點上iscsi gateway配置文件,cluster_client_name爲client.admin用戶,trusted_ip_list 爲所有iscsi gateway IP地址,api端口爲5000,user爲admin。
#vi /etc/ceph/iscsi-gateway.cfg [config] cluster_client_name = client.admin pool = iscsi-images trusted_ip_list = 192.168.123.199,192.168.123.238,192.168.123.242 minimum_gateways = 1 fqdn_enabled=true #Additional API configuration options are as follows, defaults shown. api_port = 5000 api_user = admin api_password = admin api_secure = false #Log levellogger_level = WARNING
Trusted_ip_list是每個iscsi網關上IP地址的列表,這些IP地址將用於管理操作,例如目標創建,lun導出等。
重啓rbd-target服務並設置開機啓動。
#systemctl start rbd-target-api.service #systemctl status rbd-target-api.service #systemctl enable rbd-target-api.service
查看網關服務狀態。
#gwcli info Warning: Could not load preferences file /root/.gwcli/prefs.bin. HTTP mode : http Rest API port : 5000 Local endpoint : http://localhost:5000/api Local Ceph Cluster : ceph 2ndary API IP's : 192.168.123.199,192.168.123.238,192.168.123.242
iscsi-gateway命令行工具gwcli用於創建/配置iscsi-target與rbd image;其餘較低級別命令行工具,如targetcli或rbd等,可用於查詢配置,但不能用於修改gwcli所做的配置。
可以查看當前iscsi gateway配置,當然gwcli只是命令行工具,當我們配置了Dashboard集成iscsi後,就不一定要用這個命令行工具配置了,可以使用圖形界面配置也是一樣的。
Dashboard啓用用iscsi。
要禁用API SSL驗證。
#ceph dashboard set-iscsi-api-ssl-verification false
使用以下命令定義可用的iSCSI網關,添加iscsi-gateway之前,需要在每一個網關上啓動rbd-api服務。
#ceph dashboard iscsi-gateway-add http://admin:[email protected]:5000 #ceph dashboard iscsi-gateway-add http://admin:[email protected]:5000 #ceph dashboard iscsi-gateway-add http://admin:[email protected]:5000
溫馨
提醒
在本文的開始,說明了各節點的hosts配置文件中一定要是FQDN,就是因爲添加每一臺節點是默認都解析成了localhost.localdomain,所以會導致只能添加成功一個iscsi gateway節點(原因是默認只有127.0.0.1配置FQDN)。
添加iscsi gw網關的用戶名admin,密碼admin是根據iscsi gw配置文件中定義的api_user以及api_password。
查看配置。
#ceph dashboard iscsi-gateway-list
{"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"}}}
登錄Dashbaord確認網關節點正常。
6.11
配置RBD Mirorr
Ceph Dashboard中界面中默認啓用了rbd mirror的配置界面,但沒有安裝rbd mirror服務,需要手工安裝下,當初這個配置使用就屬於後話了,有機會在下一篇文章中寫怎麼配置使用rbd mirror。
#yum install rbd-mirror #systemctl enable ceph-rbd-mirror.target #systemctl start ceph-rbd-mirror.target
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源。
#vi /etc/yum.repos.d/grafana.repo [grafana] name=grafanabase url=https://mirrors.cloud.tencent.com/grafana/yum/el7/ enabled=1 gpgcheck=0
通過yum命令安裝grafana。
#yum -y install grafana -y
在/etc/grafana/grafana.ini中配置Grafana 以適應匿名模式,並修改grafana默認風格,否者默認爲暗黑,集成到ceph dashboard中風格不匹配。
#vi /etc/grafana/grafana.ini default_theme = light[auth.anonymous]enabled = trueorg_name = Main Org.org_role = Viewer
溫馨
提醒
注意Main Org後面的個點“.”不要忘記!
在較新版本的Grafana(從6.2.0-beta1開始)中,`allow_embedding`引入了一個名爲的新設置 。該設置需要明確設置`true`,Ceph Dashboard中的Grafana集成才能正常使用,因爲其默認值爲`false`。
啓動grafana並設爲開機自啓。
#systemctl start grafana-server.service #systemctl status grafana-server.service #systemctl enable grafana-server.service
安裝grafana插件。
#grafana-cli plugins install vonage-status-panel #grafana-cli plugins install grafana-piechart-panel
重啓grafana服務。
#systemctl restart grafana-server
打開瀏覽器輸入grafana地址。http://192.168.123.240:3000,輸入默認用戶名admin,默認密碼admin,打開grfana界面:
查看已安裝的插件。
6.12
安裝promethues
安裝prometheus。
從官方下載prometheus軟件包並解壓。
#tar prometheus-2.14.0.linux-amd64.tar.gz
複製到目錄中
#mkdir /etc/prometheus #mv prometheus-2.13.1.linux-amd64/* /etc/prometheus
查看promethus版本。
#./prometheus --version
配置系統服務啓動。
#vi /etc/systemd/system/prometheus.service [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
修改默認配置文件。
vi /etc/prometheus/prometheus.yml scrape_interval: 5s scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. # metrics_path defaults to '/metrics' # scheme defaults to 'http'. - 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']
溫馨
提醒
以上配置文件targetes需要寫成域名,否者ceph dashboard 中host details 中不能正常顯示監控數據,而grafana中顯示正常,grafana使用IP查詢正常,ceph dashboard因爲他是使用的域名查詢監控信息,而prometheus中寫的是IP,導致查詢不到,所以這裏要寫成域名。
honor_labels參數 必須有並設置爲true,否者會導致Ceph Dashbaord中顯示grafana 某些面板沒有數據出現。
加載系統服務。
#systemctl daemon-reload
啓動服務和添加開機自啓動。
#systemctl start prometheus #systemctl status prometheus #systemctl enable prometheus
安裝prometheus node_exporter
從官方下載node_export軟件包到每一臺存儲節點上,並解壓。
#tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz
複製到目錄。
#mkdir /etc/node_exporter #cp node_exporter-0.18.1.linux-amd64/* /etc/node_exporter/
配置成系統服務啓動。
#vi /etc/systemd/system/node_exporter.service [Unit] Description=Prometheus node_exporter [Service] User=nobody ExecStart=/etc/node_exporter/node_exporter --log.level=error ExecStop=/usr/bin/killall node_exporter
啓動服務。
#systemctl daemon-reload #systemctl enable node_exporter.service #systemctl start node_exporter.service #systemctl status node_exporter.service
查看監控端口。
#ss -tunpl |grep 9100 tcp LISTEN 0 128 :::9100 :::* users:(("node_exporter",pid=6776,fd=3))
6.13
啓用Ceph exporter
通過運行以下命令啓用作爲Ceph Manager模塊附帶的Ceph Exporter。
#ceph mgr module enable prometheus
查看啓用的prometheus模塊。
#ceph mgr services { "dashboard": "http://ceph-node1.localdomain:8080/", "prometheus": "http://ceph-node1.localdomain:9283/" }
確認端口正在監控,正常情況只要開戶prometheus,每一臺存儲節點上都會開啓9283端口。
#ss -tunpl |grep 9283 tcp LISTEN 0 5 :::9283 :::* users:(("ceph-mgr",pid=1071,fd=22))
輸入http://192.168.123.240:9090,打開prometheus target界面確認ceph mgr、node export、prometheus都正常。
想要ceph三個節點都顯示"UP",必須在所有的Ceph節點中都啓用MGR,否者只有一個是"UP"。
配置禁用SSL。
# ceph dashboard set-grafana-api-ssl-verify False
設置grafana的地址。
#ceph dashboard set-grafana-api-url http://192.168.123.240:3000
溫馨
提醒
此處的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。
通過命令查看目錄位置。
#rpm -qa |grep dashboard ceph-grafana-dashboards-14.2.8-0.el7.noarch ceph-mgr-dashboard-14.2.8-0.el7.noarch #rpm -ql ceph-grafana-dashboards-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
打開grafana選擇“導入”。
打開導入面板,選擇"導入"。
導入所有的Dashboard模板文件,查看導入的模板文件。
查看導入模板的詳細信息。
打開Ceph Dashboard查看其內嵌有的Dashboard。
No.7
結尾
在此文編寫過程中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/。
由於本文章是從微信公衆號直接複製過來的,所以格式上不太美觀,想查看原本格式,可以關注公衆號查看。