## 安裝ceph集群
注意版本更新非常快,有問題看官方文檔
官方文檔:
http://docs.ceph.com/docs/master
========================================
准備環境
系統版本:centos7.4 x86_64 server
硬件配置:5台vm,1核1G內存,每台node角色的機器至少掛載1塊不低於5個G的空閑盤為osd存儲
主機名 ip role
admin 192.168.1.101 admin--安裝ceph-deploy
node1 192.168.1.102 mon / mgr / osd
node2 192.168.1.103 osd
node3 192.168.1.104 osd
ceph-client 192.168.1.105 client
1.給三台node節點添加一塊大小5G以上的磁盤。
2.所有節點修改主機名並相互解析
3.關閉所有機器的防火牆和selinux
4.所有節點創建普通用戶並設置密碼--所有節點都操作
[root@admin ~]# useradd cephu
[root@admin ~]# passwd cephu
5.確保各 Ceph 節點上新創建的用戶都有 sudo 權限--所有節點操作
[root@admin ~]# visudo ----在root ALL=(ALL) ALL下面添加:
cephu ALL=(root) NOPASSWD:ALL
6.實現ssh無密碼登錄(admin節點操作)
[root@admin ~]# su - cephu
[cephu@admin ~]$ ssh-keygen
7.將admin節點cephu用戶生成的密鑰拷貝到各Ceph節點:
[cephu@admin ~]$ ssh-copy-id cephu@node1
[cephu@admin ~]$ ssh-copy-id cephu@node2
[cephu@admin ~]$ ssh-copy-id cephu@node3
[cephu@admin ~]$ ssh-copy-id cephu@ceph-client
8.在admin節點用root用戶添加~/.ssh/config配置文件,並進行如下設置,這樣 ceph-deploy 就能用你所建的用戶名登錄 Ceph 節點了
[root@admin ~]# mkdir ~/.ssh
[root@admin ~]# vim ~/.ssh/config
Host node1
Hostname node1
User cephu
Host node2
Hostname node2
User cephu
Host node3
Hostname node3
User cephu
9.添加下載源,安裝ceph-deploy(admin節點,root用戶)
[root@admin ~]# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
更新源,安裝ceph-deploy:
[root@admin ~]# yum makecache
[root@admin ~]# yum update
開啟yum緩存
[root@admin ~]# vim /etc/yum.conf
keepcache=1
安裝
[root@admin ~]# yum install ceph-deploy -y
10.安裝ntp(所有節點)
#注意!!選擇任何一台機器當ntp時間服務器,其他的節點當時間服務器的客戶端跟服務器同步時間
我選擇的是admin上:
[root@admin ~]# yum install -y ntp
[root@admin ~]# vim /etc/ntp.conf #有4行server的位置,把那4行server行注釋掉,填寫以下兩行
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
[root@admin ~]# systemctl start ntpd
[root@admin ~]# systemctl status ntpd
其他所有節點:
# yum install ntpdate -y
# ntpdate 時間服務器ip
部署ceph集群
#注意!!沒有特別說明以下所有操作均是在admin節點,cephu用戶下執行
1.創建cephu操作的目錄:
[root@qfedu.com-admin ~]# su - cephu
[cephu@admin ~]$ mkdir my-cluster #之后,所有ceph-deploy命令操作必須在該目錄下執行
2.創建集群---這里報錯查看后面的錯誤整理
首先在這里需要先下載一個包並安裝否則會報錯,然后在創建集群
[cephu@admin ~]$ wget https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
[cephu@admin ~]$ unzip distribute-0.7.3.zip
[cephu@admin ~]$ cd distribute-0.7.3
[cephu@admin distribute-0.7.3]$ sudo python setup.py install
創建集群
[cephu@admin ~]$ cd my-cluster/
[cephu@admin my-cluster]$ ceph-deploy new node1
[cephu@qfedu.com-admin my-cluster]$ ls
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
創建成功會有三個文件:ceph.conf, ceph.mon.keyring, and a log file
3.安裝luminous-12.2.13在(腳本方式在admin節點)
目標:在node1,node2,node3三個節點上安裝ceph和ceph-radosgw主包
方法1:利用官方腳本全自動安裝
#腳本會幫助node1,node2,node3創建epel源和ceph源,並且自動安裝ceph和ceph-radosgw主包
[cephu@admin my-cluster]$ ceph-deploy install --release luminous node1 node2 node3
#這一步時間很長,容易超時,可以利用手動安裝
如果ceph和ceph-radosgw安裝不上,則采用方法2
測試是否安裝完成:分別在node1 node2 node3中確認安裝版本為12.2.13
[cephu@node1 ~]$ ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
方法2:手動部署安裝三台機器分別創建:三台node節點相同操作
1)安裝epel源
# yum install -y epel*
2)創建Ceph源,內容如下:官方源
# vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
#下面的是阿里雲的ceph源
# vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
測試是否安裝完成:分別在node1 node2 node3中確認安裝版本為12.2.13
[cephu@node1 ~]$ ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
4.初始化mon:admin節點--cephu用戶執行
[cephu@admin my-cluster]$ ceph-deploy mon create-initial
5.賦予各個節點使用命令免用戶名權限:
[cephu@admin my-cluster]$ ceph-deploy admin node1 node2 node3
6.安裝ceph-mgr:只有luminous才有,為使用dashboard做准備
[cephu@admin my-cluster]$ ceph-deploy mgr create node1
7.添加osd:
注意:各個節點上提供存儲空間的磁盤大小不能太小,最好5G以上,注意檢查你的磁盤名字
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node1
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node2
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node3
命令中/dev/sdb是在各個節點上為osd准備的空閑磁盤(無需分區格式化,如果有分區需要指定具體分區),通過如下命令查看:
[cephu@admin my-cluster]$ ssh node1 lsblk -f
最后通過如下命令查看集群狀態:
[cephu@admin my-cluster]$ ssh node1 sudo ceph -s
如果顯示health_ok,3個osd up就成功了
Dashboard的配置:在node1上操作
把ceph-mgr和ceph-mon安裝在同一個主機上,最好只有一個ceph-mgr
[root@node1 ~]# su - cephu
1.創建管理域秘鑰:
[cephu@node1 ~]$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.node1]
key = AQAePadeYsvJLxAA9Pnmib3S+0Kj1jAeuSQcKw==
2.開啟 ceph-mgr 管理域
[cephu@node1 ~]$ sudo ceph-mgr -i node1
3.查看ceph的狀態:確認mgr的狀態為active
[cephu@node1 ~]$ sudo ceph status
cluster:
id: aec06bc6-428c-49ff-a2c1-2d84808bcb54
health: HEALTH_OK
services:
mon: 1 daemons, quorum node1
mgr: node1(active, starting)
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 3.01GiB used, 12.0GiB / 15.0GiB avail
pgs:
4.打開dashboard模塊:
[cephu@node1 ~]$ sudo ceph mgr module enable dashboard
5.綁定開啟dashboard模塊的ceph-mgr節點的ip地址:
[cephu@node1 ~]$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.1.102
set mgr/dashboard/node1/server_addr
# ip地址為mgr節點的ip地址,也就是node1的ip地址
5.web登錄:瀏覽器地址欄輸入:
mgr地址:7000
到這里ceph分布式集群完成!
配置客戶端使用
配置客戶端使用rbd:
# 創建塊設備之前需要創建存儲池,存儲池相關命令需要在mon節點執行--也就是規划好的node1節點
1.創建存儲池:
[cephu@node1 ~]$ sudo ceph osd pool create rbd 128 128
pool 'rbd' created
2.初始化存儲池
[cephu@node1 ~]$ sudo rbd pool init rbd
3.准備客戶端client:客戶端操作
#另備一台主機,系統centos7用來作為client。主機名為client,ip:192.168.1.105。修改hosts文件實現和admin節點的主機名互通。
3.1.升級client內核到4.x,方法在子目錄中
Centos7升級內核
更新前,內核版本為:
[root@ceph-client ~]# uname -r
3.10.0-693.el7.x86_64
升級方法:導入key:
[root@ceph-client ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
3.2.安裝elrepo的yum源:
[root@ceph-client ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
查看可用的系統內核包
[root@ceph-client ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
3.3安裝內核: 當前內核為最新5.6,也可以安裝4版本的內核
[root@ceph-client ~]# yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
#當前為5.6.7版本
Dependencies Resolved
===============================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================
Installing:
kernel-ml x86_64 5.6.7-1.el7.elrepo elrepo-kernel 49 M
kernel-ml-devel x86_64 5.6.7-1.el7.elrepo elrepo-kernel 13 M
Transaction Summary
===============================================================================================================================
Install 2 Packages
查看內核默認啟動順序
[root@ceph-client ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (5.6.7-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-8c5f0e6efaf047c5a0b72fdd72ee6575) 7 (Core)
默認啟動的順序是從0開始,新內核是從頭插入(目前位置在0,而5.6.7的是在1),所以需要選擇0。
[root@ceph-client ~]# grub2-set-default 0
然后reboot重啟,使用新的內核,下面是重啟后使用的內核版本:
[root@ceph-client ~]# reboot
[root@ceph-client ~]# uname -r
5.6.7-1.el7.elrepo.x86_64
4.刪除舊的內核
[root@ceph-client ~]# yum remove kernel -y
5.為client安裝ceph:
[root@ceph-client ~]# yum -y install python-setuptools #還要做着一步 否則報錯
5.1.參考部署ceph文檔開頭環境准備的2-5步
5.2.參考部署ceph集群中的第3步--安裝安裝luminous-12.2.13的第2中方式手動安裝ceph
5.2.1.安裝epel源
[root@ceph-client ~]# yum install -y epel*
5.2.2。創建ceph源
[root@ceph-client ~]# vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[root@ceph-client ~]# vim /etc/yum.conf #開啟yum緩存
keepcache=1
[root@ceph-client ~]# yum clean all
[root@ceph-client ~]# su - cephu
[cephu@ceph-client ~]$ sudo yum install ceph ceph-radosgw -y
[cephu@ceph-client ~]$ ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)
6.在admin節點賦予client使用命令免用戶名權限:
[cephu@admin my-cluster]$ ceph-deploy admin ceph-client
7.修改client下該文件的讀權限:
[cephu@ceph-client ~]$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
8.修改client下的ceph配置文件:這一步是為了解決映射鏡像時出錯問題
[cephu@ceph-client ~]$ sudo vi /etc/ceph/ceph.conf #在global section下添加:
rbd_default_features = 1
9.client節點創建塊設備鏡像:單位是M,這里是4個G
[cephu@ceph-client ~]$ rbd create foo --size 4096
10.client節點映射鏡像到主機:
[cephu@ceph-client ~]$ sudo rbd map foo --name client.admin
/dev/rbd0
11.client節點格式化塊設備:
[cephu@ceph-client ~]$ sudo mkfs.ext4 -m 0 /dev/rbd/rbd/foo
12.client節點mount塊設備:
[cephu@ceph-client ~]$ sudo mkdir /mnt/ceph-block-device #創建掛載點
[cephu@ceph-client ~]$ sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device #掛載
[cephu@ceph-client ~]$ cd /mnt/ceph-block-device
[cephu@ceph-client ceph-block-device]$ sudo touch a.txt
客戶端重起之后,設備需要重新作映射,不然可能會卡死