【mimic】ceph集羣手動搭建

1 核心組件介紹

Object

  • Ceph最底層的存儲單元是Object對象,每個Object包含元數據和原始數據。

OSD

  • OSD全稱Object Storage Device,也就是負責響應客戶端請求返回具體數據的進程。一個Ceph集羣一般都有很多個OSD。

PG

  • PG全稱Placement Grouops,是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層其實是爲了更好的分配數據和定位數據。

Monitor

  • 一個Ceph集羣需要多個Monitor組成的小集羣,它們通過Paxos同步數據,用來保存OSD的元數據。

RADOS

  • RADOS全稱Reliable Autonomic Distributed Object Store,是Ceph集羣的精華,用戶實現數據分配、Failover等集羣操作。

Libradio

  • Librados是Rados提供庫,因爲RADOS是協議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支持。

CRUSH

  • CRUSH是Ceph使用的數據分佈算法,類似一致性哈希,讓數據分配到預期的地方。

RBD

  • RBD全稱RADOS block device,是Ceph對外提供的塊設備服務。

RGW

  • RGW全稱RADOS gateway,是Ceph對外提供的對象存儲服務,接口與S3和Swift兼容。

MDS

  • MDS全稱Ceph Metadata Server,是CephFS服務依賴的元數據服務。

CephFS

  • CephFS全稱Ceph File System,是Ceph對外提供的文件系統服務。


2 安裝準備

操作系統:CentOS Linux release 7.4.1708 (Core)

內核版本:3.10.0-693.el7.x86_64


服務器使用規劃

Node

Host Name

Ceph Deploy

Ceph Admin

Mon

OSD

MDS

MGR

RGW

192.168.2.241

node1



192.168.2.242

node2




192.168.2.243

node3






192.168.2.244

node4







192.168.2.245

node5








存儲準備

node4、node5兩個osd節點單獨掛載一個5G大小的存儲盤


目錄規劃

  • /install           #用來存放安裝文件


創建以上目錄(node1)

mkdir /install


依次修改主機名,xx請替換1-5

hostnamectl set-hostname nodexx

配置免密訪問(管理節點)

ssh-keygen
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
ssh-copy-id node4
ssh-copy-id node5

修改主機hosts配置(管理節點)

vi /etc/hosts
192.168.2.241 node1
192.168.2.242 node2
192.168.2.243 node3
192.168.2.244 node4
192.168.2.245 node5

同步hosts配置到其他節點

scp /etc/hosts node2:/etc/
scp /etc/hosts node3:/etc/
scp /etc/hosts node4:/etc/
scp /etc/hosts node5:/etc/

關閉防火牆(所有節點)

setenforce 0
systemctl stop firewalld && systemctl disable firewalld

時間同步(所有節點)

yum install ntp ntpdate -y
ntpdate cn.pool.ntp.org
systemctl enable ntpd
systemctl start ntpd

內核優化(node1)

vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_keepalive_time = 600 
net.ipv4.tcp_keepalive_probes = 5 
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets =5000
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384

同步到其他節點

scp /etc/sysctl.conf node2:/etc
scp /etc/sysctl.conf node3:/etc
scp /etc/sysctl.conf node4:/etc
scp /etc/sysctl.conf node5:/etc
vi /etc/security/limits.conf
soft nofile 1024000
hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000

同步到其他節點

scp /etc/security/limits.conf node2:/etc/security
scp /etc/security/limits.conf node3:/etc/security
scp /etc/security/limits.conf node4:/etc/security
scp /etc/security/limits.conf node5:/etc/security

生效配置(所有節點)

sysctl -p

修改環境配置(所有節點)

echo "ulimit -HSn 102400" >> /etc/profile

添加yum源

cat << EOM > /etc/yum.repos.d/ceph.repo
[Ceph-SRPMS]
name=Ceph SRPMS packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-aarch64]
name=Ceph aarch64 packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/aarch64/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-x86_64]
name=Ceph x86_64 packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=0
type=rpm-md
EOM

同步到其他節點

scp /etc/yum.repos.d/ceph.repo node2:/etc/yum.repos.d
scp /etc/yum.repos.d/ceph.repo node3:/etc/yum.repos.d
scp /etc/yum.repos.d/ceph.repo node4:/etc/yum.repos.d
scp /etc/yum.repos.d/ceph.repo node5:/etc/yum.repos.d

清理緩存(所有節點)

yum makecache


3 集羣部署

安裝依賴(所有節點)

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

安裝ceph(所有節點)

yum -y install epel-release ceph ceph-radosgw ceph-common deltarpm

安裝ceph-deploy(node1執行)

yum install -y ceph-deploy

創建一個名稱爲mycluster的集羣,如果沒有指定--clster,默認名稱爲ceph,集羣節點(mon)包括node{1,2,3}(node1執行)

cd /install
ceph-deploy --cluster mycluster new node{1,2,3}

修改ceph配置文件,增加網段(生產環境以實際爲準,建議public和cluster使用不同的段)

vi ceph.conf
public network = 192.168.2.0/24
cluster network = 192.168.2.0/24
mon_allow_pool_delete = true
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 64
osd pool default pgp num = 64

創建和初始化監控節點並收集所有的祕鑰(node1執行)

ceph-deploy mon create-initial

將配置文件和管理祕鑰複製到管理節點和ceph節點(node1執行)

ceph-deploy admin node{1,2,3,4,5}

部署mgr(node1執行)

ceph-deploy mgr create node{1,2}

部署osd(node1執行)

ceph-deploy osd create --data /dev/sdb node4
ceph-deploy osd create --data /dev/sdb node5

4 啓用Dashboard

先查看dashboard狀態

ceph mgr services

啓用dashboard

ceph mgr module enable dashboard

生成自簽名證書

ceph dashboard create-self-signed-cert

cd /install
openssl req \
-new -nodes \
-x509 \
-subj "/O=IT/CN=ceph-mgr-dashboard" \
-days 3650 \
-keyout dashboard.key \
-out dashboard.crt \
-extensions v3_ca

啓用證書

ceph config-key set mgr mgr/dashboard/crt -i dashboard.crt
ceph config-key set mgr mgr/dashboard/key -i dashboard.key

不用證書功能的時候,可以選擇禁用證書

ceph config set mgr mgr/dashboard/ssl false

注:更換證書後,需要重啓dashboard

ceph mgr module disable dashboard
ceph mgr module enable dashboard

配置服務地址、端口(生產環境中,mgr的訪問地址建議使用域名或者負載IP)

ceph config set mgr mgr/dashboard/server_addr 192.168.2.241
ceph config set mgr mgr/dashboard/server_port 8443

創建用戶

ceph dashboard set-login-credentials admin admin

重啓mgr

systemctl restart ceph-mgr@node1

瀏覽器訪問

https://192.168.2.241:8443


5 塊存儲

任意ceph集羣主機執行

創建存儲池,命名爲ec,pg和pgs分配爲64(這裏只是測試,生產環境請按公式計算pg和pgs)

ceph osd pool create ec 64 64

rbd方式啓用該存儲池

ceph osd pool application enable ec rbd

創建用戶client.ec,用於客戶端掛載訪問

ceph auth get-or-create client.ec \
mon 'allow r'  \
osd 'allow rwx pool=ec' \
-o /etc/ceph/ceph.client.ec.keyring

遠端客戶端掛載

檢查客戶端內核版本,內核版本建議在2.6.34以上版本

uname -r

檢查當前內核版本是否支持rbd

modprobe rbd && lsmod|grep rbd

在hosts配置添加ceph集羣主機映射

vi /etc/hosts
192.168.2.241 node1
192.168.2.242 node2
192.168.2.243 node3
192.168.2.244 node4
192.168.2.245 node5

考慮到國外下載慢的問題,配置國內鏡像源

cat << EOM > /etc/yum.repos.d/ceph.repo
[Ceph-SRPMS]
name=Ceph SRPMS packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-aarch64]
name=Ceph aarch64 packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/aarch64/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-x86_64]
name=Ceph x86_64 packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=0
type=rpm-md
EOM

清理緩存

yum makecache

安裝依賴

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

安裝ceph客戶端

yum -y install ceph-common

將服務端生成的用戶祕鑰(client.ec)拷貝到客戶端服務器

scp -r /etc/ceph/ceph.client.ec.keyring node5:/etc/ceph

驗證用戶權限,由於沒有使用admin賬號,所以每次都需要指定訪問用戶

ceph -s --name client.ec

在存儲池ec上創建塊設備(磁盤),命名爲ec,分配最大存儲空間10G

rbd create ec/ec --size 10G --image-format 2 --image-feature layering --name client.ec

查看創建的塊設備

rbd info ec/ec --name client.ec
或
rbd info -p ec ec --name client.ec

將塊設備映射到本地磁盤

rbd map ec/ec --name client.ec

格式化磁盤,可以選擇格式化成ext4或xfs

mkfs.ext4 /dev/rbd0

創建掛載目錄

mkdir /ecdata

將盤符掛載到該目錄

mount /dev/rbd0 /ecdata

查看掛載狀態

df -h
rbd showmapped

擴容

rbd resize --size xxG pool-name/image-name

擴容存儲空間後,在客戶端不會立即生效,需要在客戶端執行如下操作

#針對ext文件系統,rbd0爲映射的本地設備名
blockdev --getsize64 /dev/rbd0
resize2fs /dev/rbd0

#針對xfs文件系統,還需要執行如下命令,mnt爲掛載點
xfs_growfs /mnt

創建快照

rbd snap create ec/ec@ec-snap

回滾快照(出現回滾失敗時,需要先解除掛載和本地映射)

rbd snap rollback ec/ec@ec-snap

克隆快照

rbd snap protect ec/ec@ec-snap
rbd snap clone ec/ec@ec-snap new-ec-pool


6 文件存儲

服務端

部署mds(node1執行),啓用文件存儲時創建

ceph-deploy mds create node2

創建存儲池

ceph osd pool create cephfs_data 64
ceph osd pool create cephfs_metadata 64

創建文件系統

ceph fs new cephfs cephfs_metadata cephfs_data

查看MDS服務器狀態

ceph mds stat

創建用戶

ceph auth get-or-create client.cephfs \
mon 'allow r' \
mds 'allow r,allow rw path=/' \
osd 'allow rw pool=cephfs_data' \
-o /etc/ceph/ceph.client.cephfs.keyring

同步key到其他節點

scp /etc/ceph/ceph.client.cephfs.keyring node2:/etc/ceph
scp /etc/ceph/ceph.client.cephfs.keyring node3:/etc/ceph

查看用戶key

ceph auth get-key client.cephfs

客戶端

掛載ceph文件系統(啓用cephx認證後,必須指定授權用戶),其中192.168.2.241爲mon地址

mount -t ceph node1:6789:/ /data -o name=cephfs,secret=AQAHs9RdRVLkOBAAYl1JZqYupcHnORttIo+Udg==

echo "AQAHs9RdRVLkOBAAYl1JZqYupcHnORttIo+Udg==" > /etc/ceph/cephfskey
mount -t ceph node1:6789:/ /data -o name=cephfs,secretfile=/etc/ceph/cephfskey

寫入數據測試(1G)

dd if=/dev/zero of=/data/file2 bs=1M count=1024

開機自動掛載

echo "node1:6789:/ /data/ ceph name=cephfs,secret=AQAHs9RdRVLkOBAAYl1JZqYupcHnORttIo+Udg==,_netdev,noatime 0 0" >> /etc/fstab

echo "node1:6789:/ /data/ ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0" >> /etc/fstab












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章