高可用OpenStack(Queen版)集羣-13.分佈式存儲Ceph

參考文檔:html

  1. Install-guide:https://docs.openstack.org/install-guide/
  2. OpenStack High Availability Guide:https://docs.openstack.org/ha-guide/index.html
  3. 理解Pacemaker:http://www.cnblogs.com/sammyliu/p/5025362.html
  4. Ceph原理:http://www.javashuo.com/article/p-gxtvpasn-cd.html

十七.分佈式存儲Ceph

1. 設置yum源

# 在所有控制與計算節點設置epel與ceph yum源(base yum源已更新),以controller01節點爲例;

# epel:http://mirrors.aliyun.com/repo/
[root@controller01 ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo

# ceph:http://mirrors.aliyun.com/ceph/
# 編輯ceph.repo文件,使用luminous版本
[root@controller01 ~]# vim /etc/yum.repos.d/ceph.repo 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc# 從新加載yum源
[root@controller01 ~]# yum clean all
[root@controller01 ~]# yum makecache

# 查看yum源
[root@controller01 ~]# yum repolist

2. 環境

基礎環境,如hosts,時間同步ntp,開放端口iptables等相關操做,請見:http://www.javashuo.com/article/p-anghufet-db.html前端

3. 建立用戶

1)建立用戶

[root@controller01 ~]# useradd -d /home/ceph -m cephde
[root@controller01 ~]# passwd cephde
New password: storage_pass
Retype new password: storage_pass

# 修改visudo文件,使cephde用戶在sudo列表中;
# 在92行」 root    ALL=(ALL)       ALL」下新增一行:」 cephde    ALL=(ALL)       ALL」
[root@controller01 ~]# visudo
93  cephde    ALL=(ALL)       ALL

2)用戶賦權

# 設置cephde用戶具有無密碼sudo(root)權限;
# 切換到cephde用戶下操做
[root@controller01 ~]# su - cephde
[cephde@controller01 ~]$ echo "cephde ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephde
[sudo] password for cephde:storage_pass
[cephde@controller01 ~]$ sudo chmod 0440 /etc/sudoers.d/cephde

4. 設置ssh免密登錄

1)生成祕鑰

# ceph-deploy不支持密碼輸入,須要在管理控制節點生成ssh祕鑰,並將公鑰分發到各ceph節點;
# 在用戶cephde下生成祕鑰,不能使用sudo或root用戶;
# 默認在用戶目錄下生成~/.ssh目錄,含生成的祕鑰對;
# 「Enter passphrase」時,回車,口令爲空;
# 另外3個控制節點均設置爲ceph管理節點,應該使3個控制管理節點均可以ssh免密登錄到其餘全部控制與存儲節點
[root@controller01 ~]# su - cephde
[cephde@controller01 ~]$ ssh-keygen -t rsa
Enter file in which to save the key (/home/ceph/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

2)分發密鑰

# 前提是各控制與存儲節點已生成相關用戶;
# 初次鏈接其餘節點時須要確認;
# 首次分發公鑰須要密碼;
# 分發成功後,在~/.ssh/下生成known_hosts文件,記錄相關登錄信息;
# 以controller01節點免密登錄controller02節點爲例;另外3個控制節點均設置爲ceph管理節點,應該使3各控制管理節點均可以ssh免密登錄到其餘全部控制與存儲節點
[cephde@controller01 ~]$ ssh-copy-id cephde@controller02
Are you sure you want to continue connecting (yes/no)? yes
cephde@controller02's password:

3)設置環境變量(optional)

# 在root帳號~目錄下,生成~/.ssh/config文件,這樣在控制管理節點上執行」ceph-deploy」時可不切換用戶或指定」--username {username}」;
[root@controller01 ~]# cat ~/.ssh/config 
# ceph-deploy
Host controller02
   Hostname controller02
   User cephde

Host controller03
   Hostname controller03
   User cephde

Host compute01
   Hostname compute01
   User cephde

Host compute02
   Hostname compute02
   User cephde

Host compute03
   Hostname compute03
   User cephde

5. 安裝ceph-deploy

# 在規劃的所有控制管理節點安裝ceph-deploy工具,以controller01節點爲例
[root@controller01 ~]# yum install ceph-deploy -y

6. 建立ceph集羣

1)建立集羣

# 在cephde帳戶下操做,切忌使用sudo操做
# 在管理節點上生成一個目錄用於存放集羣相關配置文件;
[root@controller01 ~]# su - cephde
[cephde@controller01 ~]$ mkdir cephcluster

# 後續ceph-deploy相關操做所有在所建立的目錄執行
# 將規劃中的MON(monitor)節點歸入集羣,即建立集羣
[cephde@controller01 ~]$ cd ~/cephcluster/
[cephde@controller01 cephcluster]$ ceph-deploy new controller01 controller02 controller03

2)修改集羣配置文件(optional)

# 生成集羣后在集羣目錄下生成3個文件,其中ceph.conf便是配置文件;
# 默承認不修改,爲使服務按規劃啓動,可作適當修改;
# 如下紅色字體部分是在默認生成的conf文件上新增的配置
[cephde@controller01 cephcluster]$ cat ceph.conf 
[global]
fsid = 9b606fef-1cde-4d4c-b269-90079d1d45dd
mon_initial_members = controller01, controller02, controller03
mon_host = 172.30.200.31,172.30.200.32,172.30.200.33
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

# public network:前端mon網絡,client訪問網絡;確保public network與mon_host在相同網段,不然初始化時可能會有錯誤;
# cluster network:後端osd心跳,數據/流複製恢復等網絡
public network = 172.30.200.0/24
cluster network = 10.0.0.0/24

# 默認的副本數爲3,實驗環境變動爲2
osd pool default size = 2

# 默認保護機制不容許刪除pool,根據狀況設置
mon_allow_pool_delete = true

7. 安裝ceph

# 在所有控制管理與存儲節點安裝ceph;
# 理論上在控制節點的ceph集羣目錄使用ceph-deploy可統一安裝,命令:ceph-deploy install controller01 controller02 controller03 compute01 compute02 compute03;
# 但因爲網速緣由大機率會失敗,可在各存儲節點獨立安裝ceph與ceph-radosgw,以controller01節點爲例
[root@controller01 ~]# yum install -y ceph ceph-radosgw

# 查看版本
[root@controller01 ~]# ceph -v

8. 初始化ceph_mon

# 在控制管理節點初始化monitor
[cephde@controller01 cephcluster]$ ceph-deploy mon create-initial

# 初始化完成後,在集羣目錄下新增多個祕鑰文件
[cephde@controller01 cephcluster]$ ls -l

# 查看狀態
[cephde@controller01 cephcluster]$ sudo systemctl status ceph-mon@controller01

9. 分發ceph.conf與祕鑰

# 分發ceph配置文件與祕鑰到其餘控制管理節點與存儲節點;
# 注意分發節點自己也須要包含在內,默認沒有祕鑰文件,須要分發;
# 若是被分發節點已經配置文件(統一變動配置文件場景),可使用以下命令:ceph-deploy --overwrite-conf admin xxx
# 分發的配置文件與祕鑰在各節點/etc/ceph/目錄 [cephde@controller01 cephcluster]$ ceph-deploy admin controller01 controller02 controller03 compute01 compute02 compute03

10. 安裝ceph_mgr

1)安裝mgr

# luminous版本必須安裝mgr(dashboard)
[cephde@controller01 cephcluster]$ ceph-deploy mgr create controller01:controller01_mgr controller02:controller02_mgr controller03:controller03_mgr

# 查看狀態;
[cephde@controller01 cephcluster]$ systemctl status ceph-mgr@controller01_mgr

[cephde@controller01 cephcluster]$ sudo netstat -tunlp | grep mgr

2)啓動mgr

# 可查看mgr默認開啓的服務:(sudo) ceph mgr module ls;
# 默認dashboard服務在可開啓列表中,但並未啓動,須要手工開啓
[cephde@controller01 cephcluster]$ sudo ceph mgr module enable dashboard

# dashboard服務已開啓,默認監聽所有地址的tcp7000端口;
# 若是須要設置dashboard的監聽地址與端口,以下:
# 設置監聽地址:(sudo) ceph config-key put mgr/dashboard/server_addr x.x.x.x
# 設置監聽端口:(sudo) ceph config-key put mgr/dashboard/server_port x
[cephde@controller01 cephcluster]$ sudo netstat -tunlp | grep mgr

web登錄:http://172.30.200.31:7000/web

11. 查看集羣狀態

# 查看monitor狀態
[cephde@controller01 cephcluster]$ sudo ceph mon stat

# 查看ceph狀態:ceph health (detail),ceph -s,ceph -w等;
# 狀態顯示mgr處於active-standby模式
[cephde@controller01 cephcluster]$ sudo ceph -s

# 可在各節點查看認證信息等
[cephde@controller01 cephcluster]$ sudo ceph auth list

# 檢查狀態:ceph quorum_status --format json-pretty
# 查看集羣詳細配置:ceph daemon mon.{CEPH-NODE} config show | more
# 查看mon詳細狀態:ceph daemon mon.{CEPH-NODE} mon_status
# 查看ceph log所在目錄:ceph-conf --name mon.{CEPH-NODE} --show-config-value log_fil
# 查看mon節點的admin socket:ceph-conf --name mon.ceph01 --show-config-value admin_socket

12. 建立osd(存儲)

1)建立osd

# osd位於存儲節點,可查看存儲節點磁盤情況,以compute01節點爲例;
# 或在管理節點採用命令:ceph-deploy disk list NODE1 NODE2 … NODEN;
# 若是節點磁盤有數據,可經過命令初始化(謹慎):ceph-deploy disk zap {NODE} {DISK},這裏{DISK}能夠是物理盤符,也但是分區
[root@compute01 ~]# lsblk

# 實際建立osd時,可經過管理節點使用ceph-deploy建立;
# 參數"--data"指定數據盤,參數"--journal"指定journal日誌盤,日誌盤能夠是logical volume(vg/lv)或GPT patition,是option操做
# 本例中有3個osd節點,每一個osd節點可運行4個osd進程(在6800~7300端口範圍內,每進程監聽1個本地端口);
# 另有命令:ceph-deploy osd prepare {NODE}:{DISK}[:{/PATH/TO/JOURNAL}]; ceph-deploy osd activate {NODE}:{DISK}[:{/PATH/TO/JOURNAL}],其中[:{/PATH/TO/JOURNAL}]是option操做,可建立具備journal日誌的osd守護進程(節點)
[cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdb [cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdc [cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sdd [cephde@controller01 cephcluster]$ ceph-deploy osd create compute01 --data /dev/sde [cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdb [cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdc [cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sdd [cephde@controller01 cephcluster]$ ceph-deploy osd create compute02 --data /dev/sde [cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdb [cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdc [cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sdd [cephde@controller01 cephcluster]$ ceph-deploy osd create compute03 --data /dev/sde

2)查看osd狀態

# 在管理節點查看
[cephde@controller01 cephcluster]$ ceph-deploy osd list compute01

# 在管理節點查看osd狀態等
[cephde@controller01 cephcluster]$ sudo ceph osd stat
[cephde@controller01 cephcluster]$ sudo ceph osd tree

# 在管理節點查看容量及使用狀況
[cephde@controller01 cephcluster]$ sudo ceph df

# 在osd節點查看
[root@compute01 ~]# lsblk

# ceph-osd進程,根據啓動順序,每一個osd進程有特定的序號
[root@compute01 ~]# systemctl status ceph-osd@0

# osd進程端口號;
# 或:ps aux | grep osd | grep -v grep
[root@compute01 ~]# netstat -tunlp | grep osd

 或登錄mgr_dashboard:http://172.30.200.31:7000json

相關文章
相關標籤/搜索