centos7 安裝配置ceph

來源:互聯網
上載者:User

標籤:

前期準備:

規劃:8台機器
IP               hostname         role

192.168.2.20     mon              mon.mon
192.168.2.21     osd1             osd.0,mon.osd1
192.168.2.22     osd2             osd.1,mds.b(standby)
192.168.2.23     osd3             osd.2
192.168.2.24     osd4             osd.3
192.168.2.27     client           mds.a,mon.client
192.168.2.28     osd5             osd.4
192.168.2.29     osd6             osd.5 

關閉 SELINUX
[root@admin ceph]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config
[root@admin ceph]# setenforce 0

開啟 Ceph 需要的連接埠
[root@admin ceph]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
[root@admin ceph]# firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent
[root@admin ceph]# firewall-cmd --reload


安裝 ntp 同步時間
[[email protected] ceph]# yum -y install ntp ntpdate ntp-doc
[[email protected] ceph]# ntpdate 0.us.pool.ntp.org
[[email protected] ceph]# hwclock --systohc
[[email protected] ceph]# systemctl enable ntpd.service
[[email protected] ceph]# systemctl start ntpd.service


ssh無密碼訪問:
[[email protected] ceph]#ssh-keygen
[[email protected] ceph]#ssh-copy-id {username}@node1


安裝:
安裝ceph(需要在每個節點上面做)

前面要安裝依賴包,大概20個左右,也可以邊做邊裝(比較麻煩,不推薦)

[[email protected] ceph]#yum install -y make automake autoconf  boost-devel fuse-devel gcc-c++ libtool libuuid-devel  libblkid-devel  keyutils-libs-devel  cryptopp-devel  fcgi-devel  libcurl-devel expat-devel gperftools-devel                                   libedit-devel libatomic_ops-devel snappy-devel leveldb-devel libaio-devel xfsprogs-devel git libudev-devel btrfs-progs


使用yum 安裝ceph,要配置yum源,配置方式參考官網,http://ceph.com/docs/master/install/get-packages/
[[email protected] ceph]#yum install -y ceph-deploy ceph

如果安裝不了,可以直接去ceph官網下載要安裝的ceph版本,然後手動安裝


叢集配置(手動,不推薦)

mon安裝:

1.給叢集分配惟一 ID (即 fsid )
[[email protected] ceph]# uuidgen
d437c823-9d58-43dc-b586-6b36cf286d4f

2.建立 Ceph 設定檔, Ceph 預設使用 ceph.conf ,其中的 ceph 是叢集名字。
[[email protected] ceph]#sudo vi /etc/ceph/ceph.conf
將上面建立的fsid放到ceph.conf
fsid = d437c823-9d58-43dc-b586-6b36cf286d4f

3.把初始監視器及初始監視器的 IP 位址寫入 Ceph 設定檔,多個用逗號隔開
mon initial members =mon
mon host =192.168.2.20

4.為此叢集建立密鑰環、並產生監視器密鑰。
[[email protected] ceph]#ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon ‘allow *‘

5.產生管理員密鑰環,產生 client.admin 使用者並加入密鑰環。
[[email protected] ceph]#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‘

6.把 client.admin 密鑰加入 ceph.mon.keyring 。

[[email protected] ceph]#ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring


7.用規劃好的主機名稱、對應 IP 位址、和 FSID 產生一個監視器圖,並儲存為 /tmp/monmap
[[email protected] ceph]#monmaptool --create --add mon 192.168.2.20 --fsid d437c823-9d58-43dc-b586-6b36cf286d4f /tmp/monmap

8.在監視器主機上分別建立資料目錄
 [[email protected] ceph]# mkdir /var/lib/ceph/mon/ceph-mon

9.用監視器圖和密鑰環組裝守護進程所需的初始資料。
[[email protected] ceph]#ceph-mon --mkfs -i mon --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

10.修改Ceph 設定檔,目前配置應包括這些
[global]
fsid = d437c823-9d58-43dc-b586-6b36cf286d4f
mon initial members = mon
mon host = 192.168.2.20
public network = 192.168.2.0/24
cluster network = 192.168.2.0/24
auth_cluster_required = cephx
auth_service _equired = cephx
auth_client_required = cephx
auth supported = none
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

[mon]
mon data = /var/lib/ceph/mon/$name

[mon.mon]

host=admin
mon addr=192.168.2.20:6789

11.建一個空檔案 done ,表示監視器已建立、可以啟動了:
 [[email protected] ceph]#touch /var/lib/ceph/mon/ceph-mon/done

12.啟動監視器
[[email protected] ceph]#/etc/init.d/ceph start mon.mon

13.查看狀態
[[email protected] ceph]# ceph -s

 

添加MON

一台主機上只能有一個mon,現在在其他節點中添加Mon
1.在新監視器主機上建立預設目錄:
[[email protected] ceph]# mkdir /var/lib/ceph/mon/ceph-{mon-id}
如:mkdir /var/lib/ceph/mon/ceph-osd1

2.擷取監視器密鑰環。
[[email protected] ceph]# ceph auth get mon. -o /tmp/ceph.mon.keyring
如果這一步做不成功,可以直接複製其他mon節點上的到相應目錄。

3.擷取監視器運行圖
[[email protected] ceph]# ceph mon getmap -o /tmp/ceph.mon.map

4.準備第一步建立的監視器資料目錄。必須指定監視器運行圖路徑,這樣才能獲得監視器法定人數和它們 fsid 的資訊;還要指定監視器密鑰環路徑。
[[email protected] ceph]# ceph-mon -i {mon-id} --mkfs --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring
如:[[email protected] ceph]# ceph-mon -i osd1 --mkfs --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring

5.把新監視器添加到叢集的監視器列表裡(運行時),這允許其它節點開始啟動時使用這個節點
[[email protected] ceph]# ceph mon add <mon-id> <ip>[:<port>]
如:[[email protected] ceph]#ceph mon add osd1 192.168.2.21:6789

6.啟動新監視器,它會自動加入機器。守護進程需知道綁定到哪個地址,通過 --public-addr {ip:port} 或在 ceph.conf 裡的相應段設定 mon addr 可以指定。
[[email protected] ceph]#ceph-mon -i {mon-id} --public-addr {ip:port}
如:[[email protected] ceph]#ceph-mon -i osd1 --public-addr 192.168.2.21:6789


刪除mon:

[[email protected] ceph]#ceph mon remove node1

 

 


添加OSD
1.修改mon節點/etc/ceph/ceph.conf檔案,如下所示:

[global]
fsid = d437c823-9d58-43dc-b586-6b36cf286d4f
mon initial members =mon
mon host =192.168.2.20
public network = 192.168.2.0/24
cluster network = 192.168.2.0/24
auth_cluster_required = cephx
auth_service _equired = cephx
auth_client_required = cephx
auth supported = none
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

[mon]
mon data = /data/mon/$name

[mon.mon]

host=mon
mon addr=192.168.2.20:6789

[osd]
osd journal size = 1024
osd journal = /data/$name/journal
osd data = /data/$name

[osd.0]
host = osd1
devs = /dev/sda2


[osd.1]
host = osd2
devs = /dev/sda2


[osd.2]
host = osd3
devs = /dev/sda2


並複製到要建立osd的節點/etc/ceph目錄下
[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf
[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf
[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf
[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf

2.分別在osd節點上面建立資料目錄並掛載

[[email protected] ~]#mkdir /data/osd.0
[[email protected] ~]#mount /dev/sda2 /data/osd.0
檔案系統使用xfs的,具體如何分區參考其他資料。

3.建立 OSD 。如果沒有指定 UUID ,將會在 OSD 初次開機時分配一個。下列命令執行完成後將輸出 OSD 號,在後續步驟裡還會用到這個號。
[[email protected] ~]#uuidgen
8c907505-be2b-49ce-b30e-587d992fceec
[[email protected] ~]#ceph osd create 8c907505-be2b-49ce-b30e-587d992fceec

4.初始化 OSD 資料目錄
[[email protected] ~]#ceph-osd -i 0 --mkfs --mkkey --osd-uuid 8c907505-be2b-49ce-b30e-587d992fceec

5.註冊此 OSD 的密鑰。
[[email protected] ~]#ceph auth add osd.0 osd ‘allow *‘ mon ‘allow profile osd‘ -i /data/osd.0/keyring

6.把此節點加入 CRUSH 圖。
[[email protected] ~]#ceph osd crush add-bucket osd1 host

7.把此 Ceph-節點放入 default 根下。
[[email protected] ~]#ceph osd crush move osd1 root=default

8.把此 OSD 加入 CRUSH 圖之後,它就能接收資料了。
[[email protected] ~]#ceph osd crush add osd.0 1.0 host=osd1

9.啟動osd
[[email protected] ~]#ceph-osd -i 0

10.查看狀態,三個osd都添加成功之後,下面會顯示如下內容
[[email protected] osd.1]# ceph -s
    cluster d437c823-9d58-43dc-b586-6b36cf286d4f
     health HEALTH_OK
     monmap e1: 1 mons at {mon=192.168.2.20:6789/0}, election epoch 2, quorum 0 mon
     osdmap e22: 3 osds: 3 up, 3 in
      pgmap v58: 192 pgs, 3 pools, 0 bytes data, 0 objects
            3175 MB used, 5550 GB / 5553 GB avail
                 192 active+clean


如果在添加osd時遇到Error EINVAL: entity osd.0 exists but key does not match錯誤,執行:
[[email protected] ~]#  ceph auth del osd.0
再重新裝


刪除osd

1.down掉一個osd硬碟
[[email protected] ~]# ceph osd down 0
#down掉osd.0節點

2. 在叢集中刪除一個osd硬碟
[[email protected] ~]# ceph osd rm 0
removed osd.0

3. 在叢集中刪除一個osd 硬碟 crush map
[[email protected] ~]# ceph osd crush rm osd.0

4. 在叢集中刪除一個osd的host節點
[[email protected] ~]# ceph osd crush rm node1
removed item id -2 name ‘node1‘ from crush map
5. ceph osd tree 檢測

 


添加MDS伺服器及client配置

添加MDS伺服器
方法1:
1.在mon節點/etc/ceph/ceph.conf中添加mds配置,並複製到其他節點。
[[email protected] ceph]# vi ceph.conf
[mds.0]
host=client

[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf
[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf
[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf
[[email protected] ceph]#scp /etc/ceph/ceph.conf [email protected]:/etc/ceph/ceph.conf

2.為mds中繼資料服務器建立一個目錄
[[email protected] ceph]#mkdir -p /var/lib/ceph/mds/ceph-a

3.為bootstrap-mds用戶端建立一個密鑰
[[email protected] ceph]#ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds

4. 在ceph auth庫中建立bootstrap-mds用戶端,賦予許可權添加之前建立的密鑰
[[email protected] ceph]#ceph auth add client.bootstrap-mds mon ‘allow profile bootstrap-mds‘ -i /var/lib/ceph/bootstrap-mds/ceph.keyring

5. 在ceph auth庫中建立mds.0使用者,並賦予許可權和建立密鑰,密鑰儲存在/var/lib/ceph/mds/ceph-0/keyring檔案裡
[[email protected] ceph]#ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.a osd ‘allow rwx‘ mds ‘allow‘ mon ‘allow profile mds‘ -o /var/lib/ceph/mds/ceph-a/keyring

6.啟動mds服務進程
[[email protected] ceph]#ceph-mds -i a
或[[email protected] ceph]# service ceph start mds.a

7.查看叢集狀態
[[email protected] ceph]# ceph -s
    cluster d437c823-9d58-43dc-b586-6b36cf286d4f
     health HEALTH_OK
     monmap e1: 1 mons at {mon=192.168.2.20:6789/0}, election epoch 2, quorum 0 mon
     mdsmap e4: 1/1/1 up {0=0=up:active}
     osdmap e22: 3 osds: 3 up, 3 in
      pgmap v60: 192 pgs, 3 pools, 1884 bytes data, 20 objects
            3175 MB used, 5550 GB / 5553 GB avail
                 192 active+clean
  client io 2 B/s wr, 0 op/s

 

方法2:
或直接執行
[[email protected] ceph]#ceph-mds -i client -n mds.0 -c /etc/ceph/ceph.conf -m 192.168.2.20:6789

[[email protected] ceph]#ceph mds stat

 

8.用戶端掛載cephfs(需要mds服務)
用戶端要首先安裝ceph-fuse包
[[email protected] ceph]# yum install ceph-fuse –y
建立目錄
[[email protected] ceph]# mkdir /data/mycephfs
掛載
[[email protected] ceph]# ceph-fuse -m 192.168.2.20:6789 /data/mycephfs
查看
[[email protected] ceph]# df -h
檔案系統        容量  已用  可用 已用% 掛載點
devtmpfs        940M     0  940M    0% /dev
tmpfs           948M     0  948M    0% /dev/shm
tmpfs           948M  8.5M  940M    1% /run
tmpfs           948M     0  948M    0% /sys/fs/cgroup
/dev/sda3       7.8G  1.7G  5.8G   22% /
/dev/sda1      1022M  9.8M 1013M    1% /boot/efi
/dev/sda2       1.9T   33M  1.9T    1% /data
ceph-fuse       5.5T  3.2G  5.5T    1% /data/mycephfs

 

rbd方式掛載(不需要mds服務)

1.建立一個ceph pool
ceph osd pool create {pool-name} {pg-num} [{pgp-num}]
如:
[[email protected] ceph]#ceph osd pool create rbdpool 100 100

2.在pool中建立一個鏡像
[[email protected] ceph]#rbd create rbdpoolimages --size 1048576 -p rbdpool
或者
[[email protected] ceph]#rbd create rbdpool/rbdpoolimages --size 102400
大小自己控制

3.列出塊裝置在一個特定的池
rbd ls {POOLNAME}
[[email protected] ceph]#rbd ls rbdpool

4.查詢一個池內的鏡像資訊
rbd --image {image-name} -p {pool-name} info
如:
[[email protected] ceph]#rbd --image rbdpoolimages -p rbdpool info

5.把鏡像映射到pool塊裝置中
[[email protected] ceph]#rbd map rbdpoolimages -p rbdpool   

(如果要取消映射塊裝置使用命令:rbd unmap /dev/rbd1)

6.查看鏡像映射map
[[email protected] ceph]#rbd showmapped

7.格式化映射的裝置塊
[[email protected] ceph]#mkfs.xfs /dev/rbd1

8.掛載建立的分區
[[email protected] ceph]#mkdir  /data/rbddir
[[email protected] ceph]#mount /dev/rbd1 /data/rbddir

9.修改/etc/fstab檔案,將掛載資訊添加進去。
/dev/rbd1   /data/rbddir1  xfs    defaults      0 0

10.查看
[[email protected] ceph]#df -Th

 

 

對象檔案上傳方式(這種方式使用不是很方便,不建議使用)

1:建立一個pool
#rados mkpool

2:上傳rados put {object-name} {file-path} --pool=putdir

樣本

  rados put zabbix_client_install.tar.gz ./zabbix_client_install.tar.gz --pool=putdir

3:查看上傳內容:

 rados -p putdir ls

zabbix_client_install.tar.gz

4:下載對象檔案

下載 rados get {object-name} {file-path} --pool=putdir

rados get zabbix_client_install.tar.gz  /workspace/zabbix_client_install.tar.gz -p putdir

 

centos7 安裝配置ceph

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.