ubuntu ceph集羣安裝以及簡單使用

ubuntu ceph安裝以及使用

1.安裝環境

本文主要根據官方文檔使用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

2.安裝前工做

1.設置admin節點root免密碼登陸其餘節點

首先使用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

結果應該不須要輸入密碼。架構

2.安裝並行ssh命令

在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,則說明正常工做。

3.使用國內鏡像源

爲了提升訪問速度,建議修改成國內鏡像源,咱們使用的是阿里雲鏡像源:

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'

4.安裝ceph-deploy

如下操做只須要在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安裝時須要打開必要端口。

3.開始安裝ceph集羣

咱們使用ceph-deploy部署,後續操做均在admin節點操做。
首先須要建立工做環境,該環境會保存全部的配置文件:

mkdir my-cluster
cd my-cluster

接下分別執行如下步驟:

1.建立集羣

ceph-deploy new node1

其中node1是mon節點,執行該命令會生成ceph配置文件、monitor密鑰文件以及日誌文件。

2.修改默認冗餘份數

因爲咱們目前只有兩個osd節點,而默認的冗餘份數是3,所以咱們須要設置爲2,若是osd節點大於2,則此步驟省略。

修改ceph.conf文件,在[global]下增長如下內容:

osd pool default size = 2

3.配置網卡和網絡

若是主機有多餘一個網卡,須要設置使用的網卡和網絡地址,因爲咱們主機只有一張網卡,此步驟省略。

4.開始安裝ceph

ceph-deploy install node0 node1 node2 node3

5.初始化mon節點和收集密鑰信息

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節點。

6.配置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

7.配置admin節點

admin節點同時也做爲咱們的client節點,須要拷貝其餘節點的配置文件以及密鑰,使得不須要指定mon地址以及用戶信息就能夠直接管理咱們的ceph集羣,執行如下命令便可:

ceph-deploy admin node0 node1 node2 node3
sudo chmod +r /etc/ceph/ceph.client.admin.keyring # 保證具備讀取的密鑰的權限

8.測試結果

運行如下命令:

ceph health

結果若返回active + clean狀態,則說明部署成功!

4.擴展節點

增長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

5.塊存儲rbd使用

咱們使用默認的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

6.分佈式文件系統使用

建立一個文件系統:

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命令查看是否掛載成功,成功便可像本地文件系統同樣操做。

7.對象存儲

省略。。。

參考

http://docs.ceph.com/docs/master/

相關文章
相關標籤/搜索