Ceph Dashboad全功能安裝集成


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 實現。

640?wx_fmt=png


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已經實現圖形化安裝,如下圖所示,有興趣可以嘗試下。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg


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

640?wx_fmt=png



至此Dashboard安裝完成,但其它的功能,如:rgw,cephfs,iscsi,監控等都需要手工啓用,需要一個個啓用這些功能,如下圖所示:

rgw沒有啓用:

640?wx_fmt=png

cephfs沒有啓用:

640?wx_fmt=png

nfs沒有啓用:

640?wx_fmt=png

iscsi沒有啓用:

640?wx_fmt=png

監控沒有啓用:

640?wx_fmt=png

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安裝成功。

640?wx_fmt=png

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信息能正常顯示了。

640?wx_fmt=png

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中就可以顯示了。

640?wx_fmt=png

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。

640?wx_fmt=png


在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”功能中顯示爲空,不能正常選擇要導出節點名稱。


640?wx_fmt=png


要在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模塊正常顯示了:

image.png



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需要滿足以下條件:


  1. 正在運行的Ceph Luminous(12.2.x)集羣或更高版本

  2. CentOS 7.5(或更高版本);Linux內核v4.16(或更高版本)

  3. 該ceph-iscsi軟件包安裝在所有iSCSI網關節點上

  4. 如果Ceph iSCSI網關未位於OSD節點上,則將位於中的Ceph配置文件/etc/ceph/從存儲集羣中正在運行的Ceph節點複製到iSCSI Gateway節點。Ceph配置文件必須存在於iSCSI網關節點下的/etc/ceph/。

iscsi gw示意圖如下:

640?wx_fmt=png

在所有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確認網關節點正常。

640?wx_fmt=png


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官方文檔說明下這個架構:

640?wx_fmt=png

在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界面:

640?wx_fmt=png

查看已安裝的插件。

640?wx_fmt=png


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都正常。

640?wx_fmt=png

想要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界面,點擊“配置”中的數據源。

640.png

點擊“增加數據源”。

640?wx_fmt=png

選擇prometheus。

640.png

輸入名稱以及IP。

640?wx_fmt=png

完成配置。

640?wx_fmt=png



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選擇“導入”。

640?wx_fmt=png

打開導入面板,選擇"導入"。

640?wx_fmt=png

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

640?wx_fmt=png

查看導入模板的詳細信息。

640?wx_fmt=png

打開Ceph Dashboard查看其內嵌有的Dashboard。

640?wx_fmt=png


No.7

結尾


在此文編寫過程中Ceph社區發了布了最新的Ceph Octopus版本,這個版本中最大的變化是使用了容器安裝Ceph,只需要幾條命令就能安裝出一個帶Dashboard的Ceph集羣,也就無需像本文中這麼折騰安裝了。

新版本拋棄了Ceph-Deploy工具,只能使用Cephadm工具安裝,而新的安裝方式中Dashboard是默認啓用的,也能看出未來Dashbaord在Ceph中的地位,不是像以前是可選的了,由於是新出的Cephadm,所以還有些功能是未開發完成的,比如無法安裝iscsi等。

簡單說幾點新版本Ceph的改進:

1.Dashboard界面變成了多數WEB使用的側邊導航欄結構。

640?wx_fmt=png

2.增加了監控功能,使用的是promethues alert模塊實現。

其它可參考官方release說明:


https://ceph.io/releases/v15-2-0-octopus-released/。


由於本文章是從微信公衆號直接複製過來的,所以格式上不太美觀,想查看原本格式,可以關注公衆號查看。


IMG_2478的副本.JPG






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章