CentOS 7 下安裝 Ceph 儲存叢集

來源:互聯網
上載者:User

標籤:storage   iss   keygen   cal   srpm   sea   linu   nec   目錄   

目錄

  • 一、準備機器
  • 二、ceph節點安裝
  • 三、搭建叢集
  • 四、擴充叢集(擴容)

 

一、準備機器

一共4台機器,其中1個是管理節點,其他3個是ceph節點:

hostname ip role 描述
admin-node 192.168.0.130 ceph-deploy 管理節點
node1 192.168.0.131 mon.node1 ceph節點,監控節點
node2 192.168.0.132 osd.0 ceph節點,OSD節點
node3 192.168.0.133 osd.1 ceph節點,OSD節點

管理節點:admin-node

ceph節點:node1, node2, node3

所有節點:admin-node, node1, node2, node3

1. 修改主機名稱
# vi /etc/hostname
2. 修改hosts檔案
# vi /etc/hosts
192.168.0.130 admin-node192.168.0.131 node1192.168.0.132 node2192.168.0.133 node3
3. 確保聯通性(管理節點)

用 ping 短主機名稱( hostname -s )的方式確認網路聯通性。解決掉可能存在的主機名稱解析問題。

$ ping node1$ ping node2$ ping node3

 

二、ceph節點安裝1. 安裝NPT(所有節點)

我們建議在所有 Ceph-節點上安裝 NTP 服務(特別是 Ceph Monitor 節點),以免因時鐘漂移導致故障,詳情見時鐘。

# sudo yum install ntp ntpdate ntp-doc
2. 安裝SSH(所有節點)
# sudo yum install openssh-server
3. 建立部署 CEPH 的使用者(所有節點)

ceph-deploy 工具必須以普通使用者登入 Ceph-節點,且此使用者擁有無密碼使用 sudo 的許可權,因為它需要在安裝軟體及設定檔的過程中,不必輸入密碼。
建議在叢集內的所有 Ceph-節點上給 ceph-deploy 建立一個特定的使用者,但不要用 “ceph” 這個名字。

1) 在各 Ceph-節點建立新使用者

$ sudo useradd -d /home/zeng -m zeng$ sudo passwd zeng

2) 確保各 Ceph-節點上新建立的使用者都有 sudo 許可權

$ echo "zeng ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/zeng$ sudo chmod 0440 /etc/sudoers.d/zeng
4. 允許無密碼SSH登入(管理節點)

因為 ceph-deploy 不支援輸入密碼,你必須在管理節點上產生 SSH 金鑰並把其公開金鑰分發到各 Ceph-節點。 ceph-deploy 會嘗試給初始 monitors 產生 SSH 金鑰對。

1) 產生 SSH 金鑰對

不要用 sudoroot 使用者。提示 “Enter passphrase” 時,直接斷行符號,口令即為空白:

//切換使用者,如不特別說明,後續的操作均在該使用者下進行# su zeng//產生金鑰組$ ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/home/zeng/.ssh/id_rsa): Created directory ‘/home/zeng/.ssh‘.Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/zeng/.ssh/id_rsa.Your public key has been saved in /home/zeng/.ssh/id_rsa.pub.The key fingerprint is:SHA256:Tb0VpUOZtmh+QBRjUOE0n2Uy3WuoZVgXn6TBBb2SsGk [email protected]The key‘s randomart image is:+---[RSA 2048]----+|          [email protected]=OO*||           *[email protected]=||          ..O+Xo+||         o E+O.= ||        S oo=.o  ||           .. .  ||             .   ||                 ||                 |+----[SHA256]-----+

2) 把公開金鑰拷貝到各 Ceph-節點

$ ssh-copy-id [email protected]$ ssh-copy-id [email protected]$ ssh-copy-id [email protected]

完成後, /home/zeng/.ssh/ 路徑下:

  • admin-node 多了檔案 id_rsaid_rsa.pubknown_hosts
  • node1, node2, node3 多了檔案authorized_keys

3) 修改~/.ssh/config 檔案

修改 ~/.ssh/config 檔案(沒有則新增),這樣 ceph-deploy 就能用你所建的使用者名稱登入 Ceph-節點了。

// 必須使用sudo$ sudo vi ~/.ssh/config
Host admin-node   Hostname admin-node   User zengHost node1   Hostname node1   User zengHost node2   Hostname node2   User zengHost node3   Hostname node3   User zeng

4) 測試ssh能否成功

$ ssh [email protected]$ exit$ ssh [email protected]$ exit$ ssh [email protected]$ exit
  • 問題:如果出現 "Bad owner or permissions on /home/zeng/.ssh/config",執行命令修改檔案許可權。
$ sudo chmod 644 ~/.ssh/config
5. 引導時連網(ceph節點)

Ceph 的各 OSD 進程通過網路互聯並向 Monitors 上報自己的狀態。如果網路預設為 off ,那麼 Ceph 叢集在啟動時就不能上線,直到你開啟網路。

$ cat /etc/sysconfig/network-scripts/ifcfg-enp0s3//確保ONBOOT 設定成了 yes 
6. 開放所需連接埠(ceph節點)

Ceph Monitors 之間預設使用 6789 連接埠通訊, OSD 之間預設用 6800:7300 這個範圍內的連接埠通訊。Ceph OSD 能利用多個網路連接進行與用戶端、monitors、其他 OSD 間的複製和心跳的通訊。

$ sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent// 或者關閉防火牆$ sudo systemctl stop firewalld$ sudo systemctl disable firewalld
7. 終端(TTY)(ceph節點)

在 CentOS 和 RHEL 上執行 ceph-deploy 命令時可能會報錯。如果你的 Ceph-節點預設設定了 requiretty ,執行

$ sudo visudo

找到 Defaults requiretty 選項,把它改為 Defaults:ceph !requiretty 或者直接注釋掉,這樣 ceph-deploy 就可以用之前建立的使用者(建立部署 Ceph 的使用者 )串連了。

編輯設定檔 /etc/sudoers 時,必須用 sudo visudo 而不是文字編輯器。

8. 關閉selinux(ceph節點)
$ sudo setenforce 0

要使 SELinux 配置永久生效(如果它的確是問題根源),需修改其設定檔 /etc/selinux/config:

$ sudo vi /etc/selinux/config

修改 SELINUX=disabled

9. 配置EPEL源(管理節點)
$ sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && sudo yum install --nogpgcheck -y epel-release && sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && sudo rm /etc/yum.repos.d/dl.fedoraproject.org*
10. 把軟體包源加入軟體庫(管理節點)
$ sudo vi /etc/yum.repos.d/ceph.repo

把如下內容粘帖進去,儲存到 /etc/yum.repos.d/ceph.repo 檔案中。

[Ceph]name=Ceph packages for $basearchbaseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/enabled=1gpgcheck=0type=rpm-mdgpgkey=https://mirrors.aliyun.com/ceph/keys/release.ascpriority=1[Ceph-noarch]name=Ceph noarch packagesbaseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/enabled=1gpgcheck=0type=rpm-mdgpgkey=https://mirrors.aliyun.com/ceph/keys/release.ascpriority=1[ceph-source]name=Ceph source packagesbaseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS/enabled=1gpgcheck=0type=rpm-mdgpgkey=https://mirrors.aliyun.com/ceph/keys/release.ascpriority=1
11. 更新軟體庫並安裝ceph-deploy(管理節點)
$ sudo yum update && sudo yum install ceph-deploy$ sudo yum install yum-plugin-priorities

時間可能比較久,耐心等待。

 

三、搭建叢集

管理節點 下執行如下步驟:

1. 安裝準備,建立檔案夾

在管理節點上建立一個目錄,用於儲存 ceph-deploy 產生的設定檔和金鑰組。

$ cd ~$ mkdir my-cluster$ cd my-cluster

註:若安裝ceph後遇到麻煩可以使用以下命令進行清除包和配置:

// 刪除安裝包$ ceph-deploy purge admin-node node1 node2 node3// 清除配置$ ceph-deploy purgedata admin-node node1 node2 node3$ ceph-deploy forgetkeys
2. 建立叢集和監控節點

建立叢集並初始化監控節點

$ ceph-deploy new {initial-monitor-node(s)}

這裡node1是monitor節點,所以執行:

$ ceph-deploy new node1

完成後,my-clster 下多了3個檔案:ceph.confceph-deploy-ceph.logceph.mon.keyring

  • 問題:如果出現 "[ceph_deploy][ERROR ] RuntimeError: remote connection got closed, ensure requiretty is disabled for node1",執行 sudo visudo 將 Defaults requiretty 注釋掉。
3. 修改設定檔
$ cat ceph.conf

內容如下:

[global]fsid = 89933bbb-257c-4f46-9f77-02f44f4cc95cmon_initial_members = node1mon_host = 192.168.0.131auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephx

把 Ceph 設定檔裡的預設副本數從 3 改成 2 ,這樣只有兩個 OSD 也可以達到 active + clean 狀態。把 osd pool default size = 2 加入 [global] 段:

$ sed -i ‘$a\osd pool default size = 2‘ ceph.conf

如果有多個網卡,
可以把 public network 寫入 Ceph 設定檔的 [global] 段:

public network = {ip-address}/{netmask}
4. 安裝Ceph

在所有節點上安裝ceph:

$ ceph-deploy install admin-node node1 node2 node3
  • 問題:[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: yum -y install epel-release

解決方案:

sudo yum -y remove epel-release
5. 配置初始 monitor(s)、並收集所有密鑰
$ ceph-deploy mon create-initial

完成上述操作後,目前的目錄裡應該會出現這些密鑰環:

{cluster-name}.client.admin.keyring{cluster-name}.bootstrap-osd.keyring{cluster-name}.bootstrap-mds.keyring{cluster-name}.bootstrap-rgw.keyring
6. 添加2個OSD

1) 登入到 Ceph-節點、並給 OSD 守護進程建立一個目錄,並添加許可權。

$ ssh node2$ sudo mkdir /var/local/osd0$ sudo chmod 777 /var/local/osd0/$ exit$ ssh node3$ sudo mkdir /var/local/osd1$ sudo chmod 777 /var/local/osd1/$ exit

2) 然後,從管理節點執行 ceph-deploy 來準備 OSD 。

$ ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1

3) 最後,啟用 OSD 。

$ ceph-deploy osd activate node2:/var/local/osd0 node3:/var/local/osd1
7.把設定檔和 admin 密鑰拷貝到管理節點和 Ceph-節點
$ ceph-deploy admin admin-node node1 node2 node3
8. 確保你對 ceph.client.admin.keyring 有正確的操作許可權
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
9. 檢查叢集的健康情況和OSD節點狀況
[[email protected] my-cluster]$ ceph healthHEALTH_OK[[email protected] my-cluster]$ ceph -s    cluster a3dd419e-5c99-4387-b251-58d4eb582995     health HEALTH_OK     monmap e1: 1 mons at {node1=192.168.0.131:6789/0}            election epoch 3, quorum 0 node1     osdmap e10: 2 osds: 2 up, 2 in            flags sortbitwise,require_jewel_osds      pgmap v22: 64 pgs, 1 pools, 0 bytes data, 0 objects            12956 MB used, 21831 MB / 34788 MB avail                  64 active+clean                  [[email protected] my-cluster]$ ceph osd dfID WEIGHT  REWEIGHT SIZE   USE    AVAIL  %USE  VAR  PGS  0 0.01659  1.00000 17394M  6478M 10915M 37.24 1.00  64  1 0.01659  1.00000 17394M  6478M 10915M 37.25 1.00  64               TOTAL 34788M 12956M 21831M 37.24          MIN/MAX VAR: 1.00/1.00  STDDEV: 0
四、擴充叢集(擴容)

1. 添加OSD

在 node1 上添加一個 osd.2。

1) 建立目錄

$ ssh node1$ sudo mkdir /var/local/osd2$ sudo chmod 777 /var/local/osd2/$ exit

2) 準備OSD

$ ceph-deploy osd prepare node1:/var/local/osd2

3) 啟用OSD

$ ceph-deploy osd activate node1:/var/local/osd2

4) 檢查叢集的健康情況和OSD節點狀況:

[[email protected] my-cluster]$ ceph -s    cluster a3dd419e-5c99-4387-b251-58d4eb582995     health HEALTH_OK     monmap e1: 1 mons at {node1=192.168.0.131:6789/0}            election epoch 3, quorum 0 node1     osdmap e15: 3 osds: 3 up, 3 in            flags sortbitwise,require_jewel_osds      pgmap v37: 64 pgs, 1 pools, 0 bytes data, 0 objects            19450 MB used, 32731 MB / 52182 MB avail                  64 active+clean[[email protected] my-cluster]$ ceph osd dfID WEIGHT  REWEIGHT SIZE   USE    AVAIL  %USE  VAR  PGS  0 0.01659  1.00000 17394M  6478M 10915M 37.24 1.00  41  1 0.01659  1.00000 17394M  6478M 10915M 37.24 1.00  43  2 0.01659  1.00000 17394M  6494M 10899M 37.34 1.00  44               TOTAL 52182M 19450M 32731M 37.28          MIN/MAX VAR: 1.00/1.00  STDDEV: 0.04
2. 添加MONITORS

在 ndoe2 和 node3 添加監控節點。

1) 修改 mon_initial_membersmon_hostpublic network 配置:

[global]fsid = a3dd419e-5c99-4387-b251-58d4eb582995mon_initial_members = node1,node2,node3mon_host = 192.168.0.131,192.168.0.132,192.168.0.133auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephxosd pool default size = 2public network = 192.168.0.120/24

2) 推送至其他節點:

$ ceph-deploy --overwrite-conf config push node1 node2 node3

3) 添加監控節點:

$ ceph-deploy mon add node2 node3

4) 查看監控節點:

[[email protected] my-cluster]$ ceph -s    cluster a3dd419e-5c99-4387-b251-58d4eb582995     health HEALTH_OK     monmap e3: 3 mons at {node1=192.168.0.131:6789/0,node2=192.168.0.132:6789/0,node3=192.168.0.133:6789/0}            election epoch 8, quorum 0,1,2 node1,node2,node3     osdmap e25: 3 osds: 3 up, 3 in            flags sortbitwise,require_jewel_osds      pgmap v3919: 64 pgs, 1 pools, 0 bytes data, 0 objects            19494 MB used, 32687 MB / 52182 MB avail                  64 active+clean

 

參考連結:
PREFLIGHT
STORAGE CLUSTER QUICK START

CentOS 7 下安裝 Ceph 儲存叢集

相關文章

聯繫我們

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

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

Tags Index: