手动安装ceph
?
?
一、獲取軟件
?
獲取二進制包
?
準備工作:
所有 Ceph 部署都需要 Ceph 軟件包(除非是開發),你應該安裝相應的密鑰和推薦的軟件包
密鑰:(推薦) 不管你是用倉庫還是手動下載,你都需要用密鑰校驗軟件包。如果你沒有密鑰,就會收到安全警告。有兩個密鑰:一個用于發布(常用)、一個用于開發(僅適用于程序員和 QA ),請按需選擇,詳情見安裝密鑰。
Ceph:(必要) 所有 Ceph 部署都需要 Ceph 發布的軟件包,除非你部署開發版軟件包(僅有開發版、 QA 、和尖端部署)。詳情見添加 Ceph 庫。
Ceph Development:(可選) 如果你在做 Ceph 開發、為 Ceph 做構建測試、或者急需開發版中的尖端功能,可以安裝開發版軟件包,詳情見 添加 Ceph 開發庫 。
Apache/FastCGI:(可選) 如果你想部署 Ceph 對象存儲服務,那么必須安裝 Apache 和 FastCGI 。 Ceph 庫提供的 Apache 和 FastCGI 二進制包和來自 Apache 的是一樣的,但它打開了 100-continue 支持。如果你想啟用 Ceph 對象網關、且支持 100-continue ,那必須從 Ceph 庫下載 Apache/FastCGI 軟件包。詳情見添加 Apache/CGI 源。
?
?
安裝密鑰
?
?
把密鑰加入你系統的可信密鑰列表內,以消除安全告警。對主要發行版(如 dumpling 、 emperor 、 firefly )和開發版(如 release-name-rc1 、 release-name-rc2 )應該用 release.asc 密鑰;開發中的測試版應使用 autobuild.asc 密鑰(開發者和 QA )
?
注意:這里只針對centos而言
?
?
執行下列命令安裝 release.asc 密鑰
sudo rpm --import 'https://download.ceph.com/keys/release.asc'
?
執行下列命令安裝 autobuild.asc 密鑰(僅對 QA 和開發者):
?
sudo rpm --import 'https://download.ceph.com/keys/autobuild.asc'
?
添加 Ceph 庫
適合 CentOS/RHEL 和其他發行版(通過 YUM 安裝)的包位于:
?
http://download.ceph.com/rpm-{release-name}
?
RPM 二進制包
對于主要發布,你可以在 /etc/yum.repos.d/ 目錄下新增一個 Ceph 庫:創建 ceph.repo 。在下例中,需要用 Ceph 主要發布名(如 dumpling 、 emperor )替換 {ceph-release} 、用 Linux 發行版名( el6 、 rhel6 等)替換 {distro} 。你可以到 http://download.ceph.com/rpm-{ceph-release}/ 看看 Ceph 支持哪些發行版。有些 Ceph 包(如 EPEL )必須優先于標準包,所以你必須確保設置了 priority=2
[ceph] name=Ceph packages for $basearch baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/$basearch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/SRPMS enabled=0 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
?
如果想用開發版,你也可以用相應配置:
?
[ceph] name=Ceph packages for $basearch/$releasever baseurl=http://download.ceph.com/rpm-testing/{distro}/$basearch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-testing/{distro}/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-testing/{distro}/SRPMS enabled=0 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
?
下載軟件包
RPM 二進制包
Ceph 依賴一些第三方庫。執行下列命令添加 EPEL 庫:
su -c 'rpm -Uvh http://download.ceph.com/rpm-firefly/{distro}/noarch/ceph-{version}.{distro}.noarch.rpm'
?
Ceph依賴下列包
snappy leveldb gdisk python-argparse gperftools-libs
當前,我們為這些平臺 RHEL/CentOS6 ( el6 )、 Fedora 18 和 19 ( f18 和 f19 )、 OpenSUSE 12.2 ( opensuse12.2 )和 SLES ( sles11 )分別構建二進制包,倉庫包會在本地系統上裝好 Ceph 庫配置文件,這樣 yum 或 up2date 就可以使用這些配置文件自動安裝了。用自己的發行版名字替換 {distro}
?
su -c 'rpm -Uvh http://download.ceph.com/rpm-firefly/{distro}/noarch/ceph-{version}.{distro}.noarch.rpm'
?
例如,對于 CentOS 6 ( el6 )
su -c 'rpm -Uvh http://download.ceph.com/rpm-firefly/el6/noarch/ceph-release-1-0.el6.noarch.rpm'
?
你可以從這里直接下載RPM包:
http://download.ceph.com/rpm-firefly
?
對較老的 Ceph 發布,用 Ceph 發布名替換 {release-name} ,你可以執行 lsb_release -sc 命令獲取發行版代號。
su -c 'rpm -Uvh http://download.ceph.com/rpm-{release-name}/{distro}/noarch/ceph-{version}.{distro}.noarch.rpm'
?
二、安裝軟件
?
安裝 ceph-deploy
ceph-deploy 工具可用來裝配起或拆除 Ceph 集群,方便了開發、測試和概念驗證項目
要用 yum 安裝 ceph-deploy ,用此命令:
sudo yum install ceph-deploy
?
安裝 Ceph 存儲集群
?
此方法只適用于那些沒采用部署工具(如 ceph-deploy 、 chef 、 juju 等)的用戶
?
要用 RPM 安裝 Ceph ,可按如下步驟進行
1.安裝 yum-plugin-priorities 。
sudo yum install yum-plugin-priorities
?
2.確認 /etc/yum/pluginconf.d/priorities.conf 文件存在。
3.確認 priorities.conf 里面打開了插件支持。
?
[main] enabled = 1
4.確認你的 YUM ceph.repo 庫文件條目包含 priority=2
?
[ceph] name=Ceph packages for $basearch baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/$basearch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch enabled=1 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/SRPMS enabled=0 priority=2 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
?
5.安裝依賴的的軟件包
?
sudo yum install snappy leveldb gdisk python-argparse gperftools-libs
?
成功添加正式版或開發版軟件包的庫文件之后,或把 ceph.repo 文件放入 /etc/yum.repos.d 之后,你就可以安裝 Ceph 軟件包了
?
sudo yum install ceph
?
?
?
三、手動部署集群
把 Ceph 二進制包安裝到各節點后,你也可以手動部署集群。手動過程主要是讓部署腳本(如 Chef、Juju、Puppet 等)的開發者們驗證程序的
?
手動部署
所有 Ceph 集群都需要至少一個監視器、且 OSD 數量不小于副本數。
自舉引導初始監視器是部署 Ceph 存儲集群的第一步,監視器的部署也為整個集群奠定了重要框架,
如存儲池副本數、每個 OSD 擁有的歸置組數量、心跳周期、是否需認證等,其中大多數選項都有默認值,但是建設生產集群時仍需要您熟知它們。
按照安裝(快速)里的相同配置,我們能配置起監視器為 node1 , OSD 節點為 node2 、 node3 的集群
?
?
?
?
?監視器的自舉引導
?
?自舉引導監視器(理論上是 Ceph 存儲集群)需要以下幾個條件
惟一標識符: fsid 是集群的惟一標識,它是 Ceph 作為文件系統時的文件系統標識符。現在, Ceph 還支持原生接口、塊設備、和對象存儲網關接口,所以 fsid 有點名不符實了。集群名稱: 每個 Ceph 集群都有自己的名字,它是個不含空格的字符串。默認名字是 ceph 、但你可以更改;尤其是運營著多個集群時,需要用名字來區分要操作哪一個。比如,當你以聯盟架構運營多個集群時,集群名字(如 us-west 、 us-east )將作為標識符出現在 CLI 界面上。注意:要在命令行下指定某個集群,可以指定以集群名為前綴的配置文件(如 ceph.conf 、 us-west.conf 、 us-east.conf 等);也可以參考 CLI 用法( ceph --cluster {cluster-name} )。監視器名字: 同一集群內的各監視器例程都有惟一的名字,通常都用主機名作為監視器名字(我們建議每臺主機只運行一個監視器、并且不要與 OSD 主機復用。短主機名可以用 hostname -s 獲取。監視器圖: 自舉引導初始監視器需要生成監視器圖,為此,需要有 fsid 、集群名(或用默認)、至少一個主機名及其 IP 。監視器密鑰環: 監視器之間通過密鑰通訊,所以你必須把監視器密鑰加入密鑰環,并在自舉引導時提供。管理密鑰環: 要使用 ceph 這個命令行工具,你必須有 client.admin 用戶,所以你要創建此用戶及其密鑰,并把他們加入密鑰環。
?
前述必要條件并未提及 Ceph 配置文件的創建,然而,實踐中最好創建個配置文件,并寫好 fsid 、 mon initial members 和 mon host 配置。
你也可以查看或設置運行時配置。 Ceph 配置文件可以只包含非默認配置, Ceph 配置文件的配置將覆蓋默認值,把這些配置保存在配置文件里可簡化維護。
具體過程如下:
?
?
1.登錄到初始監視器節點:ssh {hostname}如:ssh node1
2.確保保存 Ceph 配置文件的目錄存在, Ceph 默認使用 /etc/ceph 。安裝 ceph 軟件時,安裝器也會自動創建 /etc/ceph/ 目錄。ls /etc/ceph注意:部署工具在清除集群時可能刪除此目錄(如 ceph-deploy purgedata {node-name} 、 ceph-deploy purge {node-name} )。
3.創建 Ceph 配置文件, Ceph 默認使用 ceph.conf ,其中的 ceph 是集群名字。sudo vim /etc/ceph/ceph.conf
4.給集群分配惟一 ID (即 fsid )。uuidgen
5.把此 ID 寫入 Ceph 配置文件。fsid = {UUID}例如:fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
6.把初始監視器寫入 Ceph 配置文件。mon initial members = {hostname}[,{hostname}]例如:mon initial members = node1
7.把初始監視器的 IP 地址寫入 Ceph 配置文件、并保存。mon host = {ip-address}[,{ip-address}]例如:mon host = 192.168.0.1注意: 你也可以寫 IPv6 地址,但是必須設置 ms bind ipv6 = true 。詳情見網絡配置參考。
8.為此集群創建密鑰環、并生成監視器密鑰。ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
9.生成管理員密鑰環,生成 client.admin 用戶并加入密鑰環。ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'
10.把 client.admin 密鑰加入 ceph.mon.keyring 。ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
11.用規劃好的主機名、對應 IP 地址、和 FSID 生成一個監視器圖,并保存為 /tmp/monmap 。monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap例如:monmaptool --create --add node1 192.168.0.1 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap
12.在監視器主機上分別創建數據目錄。sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}例如:sudo mkdir /var/lib/ceph/mon/ceph-node1詳情見監視器配置參考——數據。
13.用監視器圖和密鑰環組裝守護進程所需的初始數據。ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring例如:ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
?
14.仔細斟酌 Ceph 配置文件,公共的全局配置包括這些
?
[global] fsid = {cluster-id} mon initial members = {hostname}[, {hostname}] mon host = {ip-address}[, {ip-address}] public network = {network}[, {network}] cluster network = {network}[, {network}] auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = {n} filestore xattr use omap = true osd pool default size = {n} # Write an object n times. osd pool default min size = {n} # Allow writing n copy in a degraded state. osd pool default pg num = {n} osd pool default pgp num = {n} osd crush chooseleaf type = {n}
?
?
按前述實例, [global] 段的配置大致如下:
?
[global] fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993 mon initial members = node1 mon host = 192.168.0.1 public network = 192.168.0.0/24 auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = 1024 filestore xattr use omap = true osd pool default size = 2 osd pool default min size = 1 osd pool default pg num = 333 osd pool default pgp num = 333 osd crush chooseleaf type = 1
?
15.建一個空文件 done ,表示監視器已創建、可以啟動了
sudo touch /var/lib/ceph/mon/ceph-node1/done ?
16.啟動監視器
在 Debian/CentOS/RHEL 上用 sysvinit
sudo /etc/init.d/ceph start mon.node1
?
17.驗證下 Ceph 已經創建了默認存儲池。
ceph osd lspools
你應該會看到這樣的輸出:
0 data,1 metadata,2 rbd,
?
18.確認下集群在運行。
ceph -s
?
你應該從輸出里看到剛剛啟動的監視器在正常運行,并且應該會看到一個健康錯誤:它表明歸置組卡在了 stuck inactive 狀態。輸出大致如此
?
cluster a7f64266-0894-4f1e-a635-d0aeaca0e993health HEALTH_ERR 192 pgs stuck inactive; 192 pgs stuck unclean; no osdsmonmap e1: 1 mons at {node1=192.168.0.1:6789/0}, election epoch 1, quorum 0 node1osdmap e1: 0 osds: 0 up, 0 inpgmap v2: 192 pgs, 3 pools, 0 bytes data, 0 objects0 kB used, 0 kB / 0 kB avail192 creating
?
注意: 一旦你添加了 OSD 并啟動,歸置組健康錯誤應該消失,詳情見下一節。
?
添加 OSD
?
你的初始監視器可以正常運行后就可以添加 OSD 了。要想讓集群達到 active + clean 狀態,必須安裝足夠多的 OSD 來處理對象副本(如 osd pool default size = 2 需要至少 2 個 OSD )。在完成監視器自舉引導后,集群就有了默認的 CRUSH 圖,但現在此圖還是空的,里面沒有任何 OSD 映射到 Ceph 節點。
?
精簡型
Ceph 軟件包提供了 ceph-disk 工具,用于準備硬盤:可以是分區或用于 Ceph 的目錄。 ceph-disk 可通過遞增索引來創建 OSD ID ;還能把 OSD 加入 CRUSH 圖。 ceph-disk 的詳細用法可參考 ceph-disk -h ,此工具把后面將提到的精簡型里面的步驟都自動化了。
為按照精簡型創建前兩個 OSD ,在 node2 和 node3 上執行下列命令:
?
1.準備OSD
ssh {node-name}
sudo ceph-disk prepare --cluster {cluster-name} --cluster-uuid {uuid} --fs-type {ext4|xfs|btrfs} {data-path} [{journal-path}] ?
例如:
?
ssh node1 sudo ceph-disk prepare --cluster ceph --cluster-uuid a7f64266-0894-4f1e-a635-d0aeaca0e993 --fs-type ext4 /dev/hdd1
?
2.激活 OSD
?
sudo ceph-disk activate {data-path} [--activate-key {path}] ?
例如:
sudo ceph-disk activate /dev/hdd1
?
注: 如果你的 Ceph 節點上沒有 /var/lib/ceph/bootstrap-osd/{cluster}.keyring ,那么應該外加 --activate-key 參數
?
?
細致型
要是不想借助任何輔助工具,可按下列步驟創建 OSD 、將之加入集群和 CRUSH 圖。按下列詳細步驟可在 node2 和 node3 上增加前 2 個 OSD
?
1.登錄到OSD主機。
?
ssh {node-name} ?
2.給 OSD 分配 UUID
uuidgen
?
3.創建 OSD 。如果沒有指定 UUID ,將會在 OSD 首次啟動時分配一個。下列命令執行完成后將輸出 OSD 號,在后續步驟里還會用到這個號。
ceph osd create [{uuid} [{id}]] ?
4.在新 OSD 主機上創建默認目錄。
?
ssh {new-osd-host}
sudo mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number} ?
5.如果要把 OSD 裝到非系統盤的獨立硬盤上,先創建文件系統、然后掛載到剛創建的目錄下:
?
ssh {new-osd-host}
sudo mkfs -t {fstype} /dev/{hdd}
sudo mount -o user_xattr /dev/{hdd} /var/lib/ceph/osd/{cluster-name}-{osd-number} ?
?
6.初始化 OSD 數據目錄:
?
ssh {new-osd-host}
sudo ceph-osd -i {osd-num} --mkfs --mkkey --osd-uuid [{uuid}] 加 --mkkey 選項運行 ceph-osd 之前,此目錄必須是空的;另外,如果集群名字不是默認值,還要給 ceph-osd 指定 --cluster 選項。
?
7.注冊此 OSD 的密鑰。路徑內 ceph-{osd-num} 里的 ceph 其含義為 $cluster-$id ,如果你的集群名字不是 ceph ,請指定自己的集群名:
?
sudo ceph auth add osd.{osd-num} osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/{cluster-name}-{osd-num}/keyring ?
8.把此節點加入 CRUSH 圖
?
ceph [--cluster {cluster-name}] osd crush add-bucket {hostname} host ?
例如:
ceph osd crush add-bucket node1 host
?
9.把此 Ceph 節點放入 default 根下。
?
ceph osd crush move node1 root=default ?
10.把此 OSD 加入 CRUSH 圖之后,它就能接收數據了。你也可以反編譯 CRUSH 圖、把此 OSD 加入設備列表、對應主機作為桶加入(如果它還不在 CRUSH 圖里)、然后此設備作為主機的一個條目、分配權重、重新編譯、注入集群
?
ceph [--cluster {cluster-name}] osd crush add {id-or-name} {weight} [{bucket-type}={bucket-name} ...] ?
例如:
ceph osd crush add osd.0 1.0 host=node1
?
11.把 OSD 加入 Ceph 后, OSD 已經在配置里了。但它還沒開始運行,這時處于 down 且 in 狀態,要啟動進程才能收數據。
?
在 Debian/CentOS/RHEL 上用 sysvinit 啟動:
sudo /etc/init.d/ceph start osd.{osd-num} [--cluster {cluster-name}] ?
例如:
sudo /etc/init.d/ceph start osd.0 sudo /etc/init.d/ceph start osd.1
?
要讓守護進程開機自啟,必須創建一個空文件:
sudo touch /var/lib/ceph/osd/{cluster-name}-{osd-num}/sysvinit ?
例如:
?
sudo touch /var/lib/ceph/osd/ceph-0/sysvinit sudo touch /var/lib/ceph/osd/ceph-1/sysvinit
?
OSD 啟動后,它應該處于 up 且 in 狀態。
?
總結
監視器和兩個 OSD 開始正常運行后,你就可以通過下列命令觀察歸置組互聯過程了:
?
ceph -w
?
執行下列命令查看 OSD樹:
?
ceph osd tree
?
你應該會看到類似如下的輸出:
# id weight type name up/down reweight -1 2 root default -2 2 host node1 0 1 osd.0 up 1 -3 1 host node2 1 1 osd.1 up 1
?
?
四、升級軟件
?
Ceph 的各個版本都可能有特定的步驟,升級前請參考與此版本相關的章節和發布說明文檔,以確定有哪些特定于此版本的步驟
?
概述
?
你可以在 Ceph 集群在線且提供服務時升級守護進程!某些類型的守護進程依賴其他的,如 Ceph 元數據服務器和 Ceph 對象網關依賴于 Ceph 監視器和 OSD 守護進程,所以我們建議按以下順序升級:
ceph-deploy 工具
Ceph 監視器
Ceph OSD 守護進程
Ceph 元數據服務器
Ceph 對象網關 ?
作為普適規則,我們建議一次升級一類的所有守護進程(如所有 ceph-osd 、所有 ceph-mon 等),這樣才能確保它們屬于同一版本
?
升級過程相對簡單,只要參照此版本特定的章節即可。基本過程有三個:
1.用 ceph-deploy 為各主機升級軟件包(用 ceph-deploy install 命令),或者分別登錄各主機手動升級。例如,升級監視器時, ceph-deploy 語法大致如此
?
ceph-deploy install --release {release-name} ceph-node1[ ceph-node2]
ceph-deploy install --release firefly mon1 mon2 mon3 ?
注: ceph-deploy install 命令會把指定節點上的舊版本升級為你所指定的版本,沒有 ceph-deploy upgrade 這樣的升級命令。
?
2.登錄各節點并重啟各相關 Ceph 守護進程
3.確認集群健康狀況
?
一旦升級完,就不能降級了
?
ceph-deploy 工具
升級 Ceph 守護進程前,應該先升級 ceph-deploy 工具。
sudo pip install -U ceph-deploy
或者:
sudo yum install ceph-deploy python-pushy ?
Cuttlefish 到 Dumpling
?
從 Cuttlefish (v0.61-v0.61.7) 開始可以滾動升級。但還有幾點要特別注意:首先,你必須升級 ceph 這個命令行工具,因為它變動很大;其次,你必須把所有監視器升級到 Dumpling ,因為協議有變動
?
在 CentOS/Red Hat 發行版上可刪除舊源
?
sudo rm /etc/yum.repos.d/ceph.repo
?
然后用下列內容創建個新倉庫 ceph.repo
?
[ceph] name=Ceph Packages and Backports $basearch baseurl=http://download.ceph.com/rpm/el6/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
注意:
1.確保使用與自己發行版相匹配的 URL ,對應發行版請檢查 http://download.ceph.com/rpm 。
2.如果你可以用 ceph-deploy 升級軟件,那你只需要把倉庫加到運行 ceph 或 ceph-deploy 命令的客戶端節點即可。
?
?
?
Dumpling 到 Emperor
?
Dumpling (v0.64) 可滾動升級
?
在 CentOS/Red Hat 發行版上可刪除舊源
?
sudo rm /etc/yum.repos.d/ceph.repo
?
然后新增軟件庫 ceph.repo ,其內容如下,要用自己的發行版名字(如 el6 、 rhel6 等等)替換 {disro}
[ceph] name=Ceph Packages and Backports $basearch baseurl=http://download.ceph.com/rpm-emperor/{distro}/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
?
注意:
確保使用與自己發行版相匹配的 URL ,對應發行版請檢查 http://download.ceph.com/rpm 。
如果你可以用 ceph-deploy 升級軟件,那你只需要把倉庫加到運行 ceph 或 ceph-deploy 命令的客戶端節點即可。
?
命令行工具
?
在 v0.65 中, ceph 命令行接口( CLI )工具變動很大;老的 CLI 不能與 Dumpling 通訊,也就是說,要用 ceph 命令訪問 Ceph 存儲集群的所有節點其 ceph-common 庫必須升級。
確保你已安裝最新版( v0.67 或更新)。如果還沒有,你也許得卸載、清除相關依賴,然后重新安裝
?
監視器
Dumpling (v0.67) 版本的 ceph-mon 守護進程與 v0.66 及更早版本相比,內部協議有所變更,也就是說它不能與 v0.66 或更老的版本通訊。大多數監視器升級完后,它們就能用新協議形成法定人數了,舊版監視器將被排斥在外,正因如此,我們建議要一次性升級所有監視器(或者較快的節奏),以最小化可能的當機時間。
?
混用版本的集群不要運行太長時間
?
Dumpling 到 Firefly
?
如果您的現有集群運行著低于 v0.67 Dumpling 的版本,請先升級到最新的 Dumpling 版,然后再升級到 v0.80 Firefly 版
?
監視器
Dumpling (v0.67) 版本的 ceph-mon 守護進程與 v0.66 及更早版本相比,內部協議有所變更,也就是說它不能與 v0.66 或更老的版本通訊。大多數監視器升級完后,它們就能用新協議形成法定人數了,舊版監視器將被排斥在外,正因如此,我們建議要一次性升級所有監視器(或者較快的節奏),以最小化可能的當機時間。
?
混用版本的集群不要運行太長時間
?
Ceph 配置文件變更
?
我們建議升級前先把下列配置加入 ceph.conf 配置文件的 [mon] 段下:
mon warn on legacy crush tunables = false 此配置可消除因用著老 CRUSH 歸置法而引起的健康告警。雖說可以在全集群范圍內重均衡已有數據,但我們不建議生產集群做,因為它涉及大量數據,而且重均衡會導致嚴重的性能降級。
?
命令行工具
?
在 V0.65 版中, ceph 命令行界面( CLI )工具有重大改變,老版的 CLI 不能用于 Firefly 。也就是說,在升級 Ceph 守護進程前,要用 ceph 命令訪問存儲集群的節點都必須升級 ceph-common 庫。
?
在 CentOS/RHEL 上可用此命令:
sudo yum install ceph-common
?
確保你已安裝最新版。如果還沒有,你也許得卸載、清除相關依賴,然后重新安裝
?
升級順序
對于 CentOS/Red Hat 發行版,先刪除舊版軟件庫
sudo rm /etc/yum.repos.d/ceph.repo
然后新增一個 ceph.repo 軟件庫條目,其內容如下,還有把 {distro} 替換為你的發行版名字(如 el6 、 rhel6 、 rhel7 等等)
?
[ceph] name=Ceph Packages and Backports $basearch baseurl=http://download.ceph.com/rpm-firefly/{distro}/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
?
按如下順序升級守護進程:
?
監視器: 如果 ceph-mon 守護進程晚于 ceph-osd 守護進程啟動,那么這些監視器就不能正確注冊其能力,新功能也不可用,除非再次重啟。 OSD 元數據服務器: 如果 ceph-mds 守護進程先被重啟了,它只能先等著,直到所有 OSD 都升級完,它才能完全啟動。 網關: 一起升級 radosgw 守護進程。多片上傳功能有微小的行為變化,它會阻止由新版 radosgw 發起、卻由舊版 radosgw 完成的多片上傳請求
?
確保先升級完所有 Ceph 監視器、而且重啟完畢,然后再升級并重啟各OSD、各元數據服務器和網關。
?
?
Emperor 到 Firefly
?
如果您的現有集群運行著低于 v0.67 Dumpling 的版本,請先升級到最新的 Dumpling 版,然后再升級到 v0.80 Firefly 版。詳細步驟請參考 Cuttlefish 到 Dumpling 和 Firefly 發布說明。若從 Emperor 之后的版本升級,請參考 Firefly 發布說明
?
Ceph 配置文件變更
我們建議升級前先把下列配置加入 ceph.conf 配置文件的 [mon] 段下:
?
mon warn on legacy crush tunables = false ?
此配置可消除因用著老 CRUSH 歸置法而引起的健康告警。雖說可以在全集群范圍內重均衡已有數據,但我們不建議生產集群做,因為它涉及大量數據,而且重均衡會導致嚴重的性能降級
?
升級順序
對于 CentOS/Red Hat 發行版,先刪除舊版軟件庫
?
sudo rm /etc/yum.repos.d/ceph.repo
?
然后新增一個 ceph.repo 軟件庫條目,其內容如下,還有把 {distro} 替換為你的發行版名字(如 el6 、 rhel6 、 rhel7 等等)
[ceph] name=Ceph Packages and Backports $basearch baseurl=http://download.ceph.com/rpm/{distro}/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
?
注意:
確保使用與自己發行版相匹配的 URL ,對應發行版請檢查 http://download.ceph.com/rpm 。
如果你可以用 ceph-deploy 升級軟件,那你只需要把倉庫加到運行 ceph 或 ceph-deploy 命令的客戶端節點即可。
?
按如下順序升級守護進程:
?
監視器: 如果 ceph-mon 守護進程晚于 ceph-osd 守護進程啟動,那么這些監視器就不能正確注冊其能力,新功能也不可用,除非再次重啟。 OSD 元數據服務器: 如果 ceph-mds 守護進程先被重啟了,它只能先等著,直到所有 OSD 都升級完,它才能完全啟動。 網關: 一起升級 radosgw 守護進程。多片上傳功能有微小的行為變化,它會阻止由新版 radosgw 發起、卻由舊版 radosgw 完成的多片上傳請求。
?
?
升級過程
Ceph 的各版本可能有不同的步驟,所以升級前請參考此版本特定的升級步驟
?
?
升級監視器
要升級監視器,執行下列步驟:
1.升級各守護進程的二進制包
你可以用 ceph-deploy 一次升級所有監視器節點,如:
ceph-deploy install --release {release-name} ceph-node1[ ceph-node2]
ceph-deploy install --release hammer mon1 mon2 mon3 ?
在 CentOS/Red Hat 主機上相應的命令如下:
?
ssh {mon-host}
sudo yum update && sudo yum install ceph ?
?
2.重啟各監視器。CentOS/Red Hat/Debian 發行版的命令如下:
sudo /etc/init.d/ceph restart {mon-id} 用 ceph-deploy 部署的 CentOS/Red Hat 發行版,其監視器 ID 通常是 mon.{hostname} 。
?
3.確保各監視器都重回法定人數。
ceph mon stat
?
再次確認你完成了所有監視器的升級
?
升級單個 OSD
?
升級單個 OSD 守護進程的步驟如下:
1.升級 OSD 守護進程對應的軟件包。
你可以用 ceph-deploy 一次升級所有 OSD 守護進程,如:
?
ceph-deploy install --release {release-name} ceph-node1[ ceph-node2]
ceph-deploy install --release hammer osd1 osd2 osd3 ?
你也可以用包管理器挨個升級各節點。在 CentOS/Red Hat 主機上相應的命令如下:
ssh {osd-host}
sudo yum update && sudo yum install ceph ?
2.重啟 OSD ,其中 N 是 OSD 號。對于CentOS/Red Hat/Debian 發行版,用:
sudo /etc/init.d/ceph restart N
?
3.確保升級后的 OSD 重新加入了集群:
ceph osd stat
再次確認所有 OSD 守護進程已升級完
?
?
?
升級單個元數據服務器
?
要升級單個 Ceph 元數據服務器,挨個執行下列步驟:
1.升級二進制包。你可以用 ceph-deploy 一次升級所有 MDS 節點,也可以在各節點用包管理器升級,如
ceph-deploy install --release {release-name} ceph-node1
ceph-deploy install --release hammer mds1 ?
在 CentOS/Red Hat 主機上則是:
?
ssh {mon-host}
sudo yum update && sudo yum install ceph-mds ?
2.重啟元數據服務器。在 CentOS/Red Hat/Debian 上用:
?
sudo /etc/init.d/ceph restart mds.{hostname} 用 ceph-deploy 部署的集群其 {hostname} 通常是所在主機的主機名。
?
3.確保元數據服務器已啟動,且運行著:
ceph mds stat
?
mon 和 osd 目錄需用 /var/lib/ceph 之下的默認子目錄。
?
OSDs: 路徑應該是 /var/lib/ceph/osd/ceph-$id MON: 路徑應該是 /var/lib/ceph/mon/ceph-$id
?
在這些目錄下都應該有一個名為 keyring 的密鑰環文件
?
轉載于:https://www.cnblogs.com/zhongguiyao/p/7889903.html
總結
- 上一篇: 这次武汉赵本山捐了多少钱?
- 下一篇: 创建一个Scalar-valued Fu