Ceph集羣配置

一、基本配置:


1、集羣基本環境:
部署節點: 10.9.32.86(ceph-deploy)
osd節點 : 10.9.32.81,10.9.32.82,10.9.32.83,10.9.32.84
mon節點 :10.9.32.85,10.9.32.86
mds節點 :10.9.32.85,10.9.32.86
主操作系統統一使用debian7.7系統,但osd節點的/dev/sda5分區單獨劃分出來,作爲一個volume storage使用,其文件系統爲xfs。


2、添加源:
echo "deb http://mirrors.sohu.com/debian/ wheezy main non-free contrib"  /etc/apt/sources.list

3、安裝基本軟件(需要提前配通外網):
apt-get install ntp ntpdate wget sudo openssh-server


4、創建集羣用戶並設置權限,一般爲ceph,也可以使用root用戶,該步驟可以省略,但不推薦:
useradd -d /home/{username} -m {username}
passwd {username}
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username}
sudo chmod 0440 /etc/sudoers.d/{username}


5、添加/etc/hosts本地解析文件:
10.9.32.81 osd-1
10.9.32.82 osd-2
10.9.32.83 osd-3
10.9.32.84 osd-4
10.9.32.85 mds-1
10.9.32.86 mds-2

##以上步驟需要在ceph集羣的每個節點設置##


二、部署節點配置(admin-node)


1、獲取密鑰,添加源:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo deb http://au.ceph.com/debian-giant wheezy main | sudo tee /etc/apt/sources.list.d/ceph.list
2、升級系統:
sudo apt-get update && sudo apt-get install ceph-deploy
3、生成密鑰,實現各節點的無密碼登陸:
ssh-keygen -t rsa
cp id_rsa.pub authorized_keys
chmod 600 authorized_keys 
scp -r .ssh/ osd-1:/root
scp -r .ssh/ osd-2:/root
scp -r .ssh/ osd-3:/root
scp -r .ssh/ osd-4:/root
scp -r .ssh/ mds-1:/root
scp -r .ssh/ mds-2:/root

4、開啓防火牆端口(如果防火牆存在的話):
iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT
/sbin/service iptables save
mon節點開啓6789端口,osd節點開啓6800:7100端口


三、對象存儲集羣部署:
注意:一切部署操作都是在部署節點進行的。
1、創建目錄,存放配置文檔:
mkdir my-cluster
cd my-cluster
默認生成的配置文件放在當前目錄,所以在執行進一步操作前,應該先跳轉到你創建的目錄。
2、如果你在任何時候配置出錯且需要重新配置的,可以執行以下命令清除配置:
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
清除軟件包可以使用如下命令,重新配置需要重裝軟件:
ceph-deploy purge {ceph-node} [{ceph-node}]
3、創建集羣(eg表示舉例):
ceph-deploy --cluster {cluster-name} new {initial-monitor-node(s)}
例如: 
ceph-deploy new mds-1 mds-2
本地文件夾會生成三個文件,如下:ceph.conf 、ceph.log 、ceph.mon.keyring;
4、調整當前目錄下的ceph.conf配置文件,添加如下行:
[global]
osd pool default size = 3(存儲文件的總副本數,默認保留3個副本,實驗環境可以修改爲2個副本)
osd journal size = 1024
osd pool default pg num = 133 (推薦每個osd節點使用100個pg,計算方法:4x100/3(副本數))
osd pool default pgp num = 133
public network = 10.9.32.0/24 (如果有多塊網卡的話,需要指定對外服務的公共網絡,CIDR格式,例如:10.9.32.0/24,沒有的話可以省略;
cluster network = 10.80.20.0/24 (單網卡情形下,cluster_network可以忽略不設)
[mon]
mon_clock_drift_allowed = .15 (mon管理節點時間同步允許誤差)
mon_clock_drift_warn_backoff = 30
[client]
rbd cache = true
rbd cache writethrough until flush = true
5、安裝ceph組件(未指定版本下,默認安裝ceph的最新版本):
ceph-deploy install --release giant/hammer {ceph-node}[{ceph-node} ...]
例如:
ceph-deploy install --release hammer mds-1 mds-2 osd-1 osd-2 osd-3 osd-4
6、初始化mon節點:
ceph-deploy mon create-initial  (ceph-deploy v1.1.3)
老版的ceph-deploy需要執行倆步:
第一步: ceph-deploy mon create {ceph-node}
例如 : ceph-deploy mon create node1
第二步:ceph-deploy gatherkeys {ceph-node}
例如 :ceph-deploy gatherkeys node1
這一步會產生三個文件,分別爲:{cluster-name}.client.admin.keyring、{cluster-name}.bootstrap-osd.keyring、{cluster-name}.bootstrap-mds.keyring
7、添加osd節點:
由於我們使用一塊單獨的xfs分區作爲osd的後端文件存儲空間,部署如下:
列出目標osd節點的磁盤分區情況,命令如下:
ceph-deploy disk list {node-name [node-name]...}

如果分區不是我們使用的xfs存儲分區格式,則需要先對其進行格式化,在osd節點上執行如下命令:
mkfs.xfs -f /dev/sda5
格式化整塊磁盤使用命令(慎用):
ceph-deploy disk zap {osd-server-name}:{disk-name}
例如:
ceph-deploy disk zap osd-1:sdb

創建並激活osd節點:
ceph-deploy osd create {node-name}:{disk}[:{path/to/journal}]
例如:
ceph-deploy osd create osd-1:/dev/sda5
或者使用以下步驟分別進行準備和激活:
準備osd節點:
ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]
例如:
ceph-deploy osd prepare osd-1:/dev/sda5[:/dev/ssd]
(如果你有SSD固態硬盤的話,可以用來作文日誌存儲,沒有的話日誌默認存儲在osd卷存儲分區中)
激活osd節點:
ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}]
例如:
ceph-deploy osd activate osd-1:/dev/sda5:/dev/ssd1
創建掛載點以及配置開機自動掛載:
方法一:
mkdir /var/lib/ceph/osd/ceph-{osd-number};
修改fstab文件,添加如下行:
{data-disk-partition}  /var/lib/ceph/osd/ceph-{osd-number} xfs  defaults  0  2
例如(注意的是:defaults, 而不是default):
/dev/sda5  /var/lib/ceph/osd/ceph-5  xfs  defaults  0  2
方法二:
編輯rc.local文件,添加如下行:
/bin/mount -t xfs /dev/sda5  /var/lib/ceph/osd/ceph-5
/etc/init.d/ceph -a start
這種方法更加有效些。
8、拷貝並分發配置文件至個節點:
ceph-deploy admin {admin-node} {ceph-node}
例如:
ceph-deploy admin admin-node node1 node2 node3
9、修改權限:
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
10、檢查集羣狀況:
ceph health
ceph -s
如下:
cluster 86d446a0-221b-44d4-95c1-7fe174d94946
health HEALTH_OK (只有在創建了pool後集羣狀態纔會顯示爲"HEALTH_OK"狀態)
monmap e2: 2 mons at {mds-1=10.9.32.85:6789/0,mds-2=10.9.32.86:6789/0}, election epoch 32, quorum 0,1 mds-1,mds-2
mdsmap e16: 1/1/1 up {0=mds-1=up:active}, 1 up:standby
osdmap e52: 4 osds: 4 up, 4 in
pgmap v25841: 832 pgs, 4 pools, 50133 MB data, 13376 objects
            208 GB used, 6495 GB / 6703 GB avail
                 832 active+clean
11、添加元數據節點(如果不使用的ceph文件系統,則該步驟可以省略):
ceph-deploy mds create {ceph-node}
例如:
ceph-deploy mds create node1
現在ceph集羣運行只有一個mds節點,你可能想要更多,但當前ceph集羣裏還沒有對ceph多元數據節點的非商業支持。
12、如果你想添加額外的mon節點可以使用以下命令:
ceph-deploy mon create {ceph-node}
ceph quorum_status --format json-pretty (檢查同步狀態)
例如:
ceph-deploy mon create node2 node3


三、ceph文件系統使用:
在客戶端安裝ceph軟件並獲取配置文件:
ceph-deploy install client-node
ceph-deploy admin client-node
查看集羣狀態:
ceph -s [-m {monitor-ip-address}] [-k {path/to/ceph.client.admin.keyring}]
創建文件系統:
ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>
ceph fs new <fs_name> cephfs_metadata cephfs_data
創建祕鑰文件:
cat ceph.client.admin.keyring
結果:
[client.admin]
key = AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==
拷貝祕鑰AQCj2YpRiAe6CxAA7/ETt7Hcl9IyxyYciVs47w==到一個新的文件(e.g admin.secret)
修改該文件權限,確保該文件只對指定的用戶(eg:admin)開放,不對其他用戶開放。
掛載主機:
mkdir /mnt/mycephfs
內核驅動(對系統內核版本有要求):
mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
用戶空間(fuse):
apt-get install ceph-fuse
ceph-fuse -k ./ceph.client.admin.keyring -m 192.168.0.1:6789 /mnt/mycephfs

四、Ceph塊存儲使用:
創建與掛載:
1、在客戶端,執行命令創建一個塊設備(不指定pool-name的話,默認使用rbd池):
rbd map {pool-name}/{image-name}
例如:
rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
2、查詢塊設備信息使用如下命令:
rbd info foo
3、在客戶端,執行如下命令將塊設備映射到本地:
rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]
4、按需求格式化映射到本地的rbd塊:
mkfs.ext4 /dev/rbd0
5、掛載分區到本地目錄:
mkdir /home/block
mount /dev/rbd0 /home/block
卸載與銷燬:
1、卸載Rbd分區:
umount /dev/rbd0
2、取消遠程塊設備的本地映射:
rbd unmap foo
3、銷燬塊設備:
rbd rm foo

備註:
開啓或關閉服務:
/etc/init.d/ceph -a [start/stop/status] [mon/osd/mds.{num}]

建立ceph管理員權限的主機:
ceph-deploy admin {host-name [host-name]...};

升級集羣配置文件:
ceph-deploy config push {host-name [host-name]...};
ceph-deploy config hostname{1,2,3,4,5},基於基本主機名和id自增長。


恢復配置文件:
ceph-deploy config pull {host-name [host-name]...};

mon:
添加mon節點:ceph-deploy mon create {host-name [host-name]...};
刪除mon節點:ceph-deploy mon destroy {host-name [host-name]...};

mds:
添加mon節點:ceph-deploy mds create {host-name}[:{daemon-name}] [{host-name}[:{daemon-name}] ...]
刪除mds節點:/etc/init.d/ceph stop mon
ceph mds rm <int[0-]> <name (hostname)>
apt-get autoremove ceph-fuse ceph-mds libcephfs1 -y
apt-get purge ceph-fuse ceph-mds libcephfs1 -y
(使用cephfs最起碼要保留一個mds節點)
 
osd:
添加osd節點:ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}];
ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}];
(一步完成: ceph-deploy osd create {node-name}:{disk}[:{path/to/journal}])
刪除osd節點:
方法一: ceph-deploy disk list {node-name [node-name]...};
ceph-deploy disk zap {osd-server-name}:{disk-name};(這將會刪除相應osd節點的所有數據)
方法二: ceph osd out osd.{osd-num} ( 例如:osd.5 )
/etc/init.d/ceph stop osd.{osd-num}
ceph osd crush remove osd.{osd-num}
ceph auth del osd.{osd-num}
ceph osd rm {osd-num}
移除ceph.conf配置文件中的相關osd節點信息:[osd.1]host = {hostname}
pg/pgp:
Less than 5 OSDs set pg_num to 128
Between 5 and 10 OSDs set pg_num to 512
Between 10 and 50 OSDs set pg_num to 4096
If you have more than 50 OSDs, you need to understand the tradeoffs and how to calculate the pg_num value by yourself
            (OSDs * 100)
Total PGs =  ------------       [ this could help you get a baseline]
 pool size
參考文檔:
http://docs.ceph.com/docs/master/
http://docs.ceph.com/docs/hammer/rados/operations/placement-groups/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章