本文主要根據官方文檔使用ubuntu14.04安裝ceph集羣,而且簡單熟悉其基本操做。整個集羣包括一個admin節點(admin node,主機名爲node0)和3個存儲節點(主機名分別爲node1,node2,node3),全部節點均安裝ubuntu 14.04操做系統,除了admin節點,其他三個節點除了根磁盤,還額外配置一個磁盤做爲單獨的osd:node
lsblk
輸出結果:算法
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 422K 0 rom vda 253:0 0 20G 0 disk ├─vda1 253:1 0 19G 0 part / ├─vda2 253:2 0 1K 0 part └─vda5 253:5 0 1022M 0 part [SWAP] vdb 253:16 0 50G 0 disk
因爲咱們使用ustack的公有云申請的雲主機,所以磁盤是虛擬的,根磁盤爲vda,附加磁盤爲vdb。
全部主機均處於192.168.0.0/24
這個網絡,ip爲:json
192.168.0.2 node0 192.168.0.5 node1 192.168.0.7 node2 192.168.0.6 node3
咱們先設置一個mon節點,兩個osd節點,後續咱們再增長節點,其架構如圖所示:bootstrap
其中node1做爲mon節點,其他node2,node3做爲osd節點。ubuntu
注意:後續操做均使用root帳號,若是不使用root帳號登陸,須要建立一個新的帳號,該帳號必須具備免密碼sudo權限,不然後續使用ceph-deploy
時會失敗!centos
首先使用ssh-keygen
生成密鑰,位於~/.ssh/id_rsa.pub
,分別拷貝id_rsa.pub
文件到全部節點中,若沒有設置root密碼,能夠先拷貝到管理員帳號(安裝操做系統時使用的用戶,具備sudo
權限)home目錄,而後使用管理員帳號操做:bash
cat id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys
在node0節點分別測試,是否能夠免密碼登陸其餘節點:網絡
ssh node0 uptime ssh node1 uptime ssh node2 uptime ssh node3 uptime
結果應該不須要輸入密碼。架構
在admin節點安裝pssh包:ssh
apt-get install -y pssh
設置如下別名:
alias pssh='parallel-ssh' alias pscp='parallel-scp'
建立host文件列表hosts.txt
:
node0 node1 node2 node3
測試下pssh是否工做:
pssh -h hosts.txt uptime
若是所有結果都爲SUCCESS
,則說明正常工做。
爲了提升訪問速度,建議修改成國內鏡像源,咱們使用的是阿里雲鏡像源:
root@node0:~# cat /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
拷貝該文件到全部的節點:
pscp -h ~/hosts.txt /etc/apt/sources.list /etc/apt/
更新源:
pssh -h ~/hosts.txt 'apt-get update -y'
如下操做只須要在admin節點執行,首先須要增長ceph源:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - echo deb http://download.ceph.com/debian-{ceph-stable-release}/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
安裝ceph-deploy:
sudo apt-get update && sudo apt-get install ceph-deploy
生產環境還須要安裝ntp服務,保證集羣的時鐘一致,此次只是爲了測試,故省略這一步。另外因爲ubuntu默認防火牆是關的,SELinux也沒有安裝,故不須要任何操做。使用centos安裝時須要打開必要端口。
咱們使用ceph-deploy
部署,後續操做均在admin節點操做。
首先須要建立工做環境,該環境會保存全部的配置文件:
mkdir my-cluster cd my-cluster
接下分別執行如下步驟:
ceph-deploy new node1
其中node1是mon節點,執行該命令會生成ceph配置文件、monitor密鑰文件以及日誌文件。
因爲咱們目前只有兩個osd節點,而默認的冗餘份數是3,所以咱們須要設置爲2,若是osd節點大於2,則此步驟省略。
修改ceph.conf
文件,在[global]
下增長如下內容:
osd pool default size = 2
若是主機有多餘一個網卡,須要設置使用的網卡和網絡地址,因爲咱們主機只有一張網卡,此步驟省略。
ceph-deploy install node0 node1 node2 node3
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
完成以上步驟,安裝完成,但尚未配置osd節點。
首先格式化磁盤,注意咱們使用的是/dev/vdb
:
ceph-deploy disk zap node2:vdb ceph-deploy disk zap node3:vdb
以上步驟會清空磁盤的全部數據。
接下來建立osd,注意因爲咱們只是測試,故沒有使用單獨的磁盤做爲journal,實際在生產環境下,須要配備SSD分區做爲journal,可以最大化IO吞吐量。
ceph-deploy osd create node2:vdb ceph-deploy osd create node3:vdb
admin節點同時也做爲咱們的client節點,須要拷貝其餘節點的配置文件以及密鑰,使得不須要指定mon地址以及用戶信息就能夠直接管理咱們的ceph集羣,執行如下命令便可:
ceph-deploy admin node0 node1 node2 node3 sudo chmod +r /etc/ceph/ceph.client.admin.keyring # 保證具備讀取的密鑰的權限
運行如下命令:
ceph health
結果若返回active + clean
狀態,則說明部署成功!
增長node1也做爲osd節點:
ceph-deploy disk zap node1:vdb ceph-deploy osd create node1:vdb ceph-deploy osd create node1:vdb
若須要cephFS支持,即須要提供文件系統支持,須要部署metadata server:
ceph-deploy mds create node1
若須要Ceph Object Gateway支持,即對象存儲節點,須要部署一個RGW實例,
ceph-deploy rgw create node1
ceph集羣至少須要一個mon節點,爲了實現高可用,一般須要設置多個(通常設置爲3個)mon節點,咱們把node2,node3也做爲mon節點:
ceph-deploy mon add node2 node3
當有多個mon節點時,ceph將使用quorum算法進行同步,查看狀態:
ceph quorum_status --format json-pretty
咱們使用默認的rbd池,首先建立一個新的塊設備(cinder稱爲volume,ceph稱爲image):
rbd create foo --size 4096
查看剛剛建立的實例:
rbd ls # foo
映射實例到虛擬設備中:
rbd map foo # /dev/rbd1
建立文件系統並掛載到/mnt:
mkfs.ext4 /dev/rbd1 mount /dev/rbd1 /mnt df -h Filesystem 1K-blocks Used Available Use% Mounted on udev 1014072 12 1014060 1% /dev tmpfs 204988 808 204180 1% /run /dev/vda1 19478204 1936088 16529636 11% / none 4 0 4 0% /sys/fs/cgroup none 5120 0 5120 0% /run/lock none 1024932 0 1024932 0% /run/shm none 102400 0 102400 0% /run/user /dev/rbd1 3997376 8184 3763096 1% /mnt
把實例擴容到8GB:
rbd resize foo --size 8192 resize2fs /dev/rbd1 df -h Filesystem Size Used Avail Use% Mounted on udev 991M 12K 991M 1% /dev tmpfs 201M 808K 200M 1% /run /dev/vda1 19G 1.9G 16G 11% / none 4.0K 0 4.0K 0% /sys/fs/cgroup none 5.0M 0 5.0M 0% /run/lock none 1001M 0 1001M 0% /run/shm none 100M 0 100M 0% /run/user /dev/rbd1 7.8G 9.0M 7.4G 1% /mnt
建立實例快照:
rbd snap create test@test-snap
建立一個文件系統:
ceph osd pool create cephfs_data 128 ceph osd pool create cephfs_metadata 128 ceph fs new test_fs cephfs_metadata cephfs_data ceph fs ls # name: test_fs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
建立secret文件:
cat ceph.client.admin.keyring
輸出結果:
[client.admin] key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
把key值拷貝到secret文件:
echo "AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==" >admin.secret
安裝mount ceph插件:
apt-get install ceph-fs-common
掛載到本地文件系統/mnt
:
sudo mount -t ceph 192.168.0.5:6789:/ /mnt -o name=admin,secretfile=admin.secret
其中192.168.0.5
是node1 ip,也即mon節點ip地址。
運行df
命令查看是否掛載成功,成功便可像本地文件系統同樣操做。
省略。。。
http://docs.ceph.com/docs/master/