環境說明
server:3台虛擬機,掛載卷/dev/vdb 10G
系統:centos7.2
ceph版本:luminous
repo:
- 公網-http://download.ceph.com,http://mirrors.aliyun.com
- 內網-自建mirrors
架構說明
node1:admin-node,mon,mgr,osd
node2:osd
node3:osd
准備工作
1、安裝centos、epel repo
使用阿里雲mirros,
https://opsx.alibaba.com/mirror
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backupcurl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repomv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backupmv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backupcurl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、安裝ceph repo
yum install centos-release-ceph-luminous -y
3、安裝ceph-deploy
yum update -yyum installl ceph-deploy -y
4、安裝、配置ntp
yum install ntp ntpdate ntp-doc -y
5、安裝ssh(系統自帶請忽略或升級)
確認所有節點的ssh server 運行
yum install openssh-server -y
6、用戶設置
我們使用root用戶,雖然官方不推薦這樣
配置管理節點到其他server免密登錄
#生成秘鑰對ssh-keygen#將管理節點公鑰注入到其他serverssh-copy-id SERVER-
7、確保networking 啟動
8、配置hosts
將ip hostname 寫入/etc/hosts
9、關閉iptables
10、關閉selinux
11、安裝
yum
-
plugin
-
priorities
yum install yum-plugin-priorities -y
部署集群
#在管理節點使用ceph-deploy部署ceph cluster#創建部署目錄mkdir ~/my-clustercd ~/my-cluster#從頭開始(非第一次部署ceph,清理環境)ceph-deploy purge {ceph-node}[{ceph-node}]ceph-deploy purgedata {ceph-node}[{ceph-node}]ceph-deploy forgetkeysrm ceph.*##創建集群#創建monitor節點#例如:ceph-deploy new {initial-monitor-node(s)}ceph-deploy new node1#安裝ceph包到各個節點ceph-deploy install node1 node2 node3#初始化monitor節點,獲取keysceph-deploy mon create-initial#上述命令執行成功后,你會在當前目錄下得到以下keyring文件ceph.client.admin.keyringceph.bootstrap-mgr.keyringceph.bootstrap-osd.keyringceph.bootstrap-mds.keyringceph.bootstrap-rgw.keyringceph.bootstrap-rbd.keyring#將keyring文件分發到各個節點ceph-deploy admin node1 node2 node3#部署manager(l版本之上才需要)ceph-deploy mgr create node1#部署osd節點(這里使用虛擬機,掛載了/dev/vdb卷)ceph-deploy osd create node1:/dev/vdb node2:/dev/vdb node3:/dev/vdb#檢查集群,在管理節點執行ceph healthceph -s
擴展集群
node1 擴展了metadata,(rgw)
node2 擴展了
metadata,
monitor
node3 擴展了
metadata,
monitor
#添加metadate serverceph-deploy mds create node1#添加monitorsceph-deploy mon add node2 node3#添加新的monitor節點之后,ceph會同步monitor,選舉代表quorum#查看quorum狀態ceph quorum_status --format json-pretty#添加managers#manager使用active/standby模式,多節點部署,可以在master down時,無縫頂替ceph-deploy mgr create node2 node3#添加rgw實例#為了使用ceph object gateway,需要部署rgw實例ceph-deploy rgw create node1#rgw默認監聽端口是7480,可以通過編輯ceph.conf修改端口[client]rgw frontends = civetweb port=80
存儲、檢索對象數據
為了存儲對象數據,ceph client需要具備:
1.設置一個對象名
2.指定一個pool
ceph client 檢索最近的集群map和CRUSH算法去計算怎樣映射對象到PG,
然后計算如何動態映射PG到OSD,
只需要對象name和pool name
即可找到對象的位置。
ceph osd map {poolname}{object-name}
練習:定位對象
#創建一個對象,測試文件echo {Test-data}> testfiles.txtceph osd pool create mytest 8#使用rados put 命令指定對象名,含有對象數據的測試文件,pool name#rados put {object-name} {file-path} --pool=mytestrados put test-object-1 testfile.txt --pool=mytest#驗證ceph集群已經存儲了此objectrados -p mytest ls#找到對象位置#ceph osd map {pool-name} {object-name}ceph osd map mytest test-oobject-1#ceph會輸出對象位置osdmap e537 pool 'mytest'(1) object 'test-object-1'-> pg 1.d1743484(1.4)-> up [1,0] acting [1,0]#刪除測試對象objectrados rm test-object-1--pool-mytest#刪除mytest poolceph osd pool rm mytest
隨着集群的發展,對象位置可能會動態變化。
Ceph的動態重新平衡的一個好處是,Ceph可以讓您不必手動執行數據遷移或平衡。
#安裝lvmyum install lvm2 -y#創建虛擬磁盤mkdir /ceph && dd if=/dev/zero of=/ceph/ceph-volumes.img bs=1M count=10240 oflag=directsgdisk -g --clear /ceph/ceph-volumes.imgvgcreate ceph-volumes $(losetup --show -f /ceph/ceph-volumes.img)lvcreate -L 9G -n ceph1 ceph-volumesmkfs.xfs -f /dev/ceph-volumes/ceph1#掛載mkdir -p /var/local/osd1- chown ceph:ceph /var/local/osd1 #修改屬主屬組,不然在添加osd時候會報權限錯誤
mount /dev/ceph-volumes/ceph1 /var/local/osd1
