Centos7.6下Ceph搭建
生活随笔
收集整理的這篇文章主要介紹了
Centos7.6下Ceph搭建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
安裝環境是學習ceph的第一步,安裝ceph的過程可以學習到非常多ceph的相關概念,尤其可以避免很多后續使用的坑
ceph的安裝并沒有什么難度,但是在實際操作中,不少新學ceph的同學總會遇到這樣那樣的部署問題,搞好久,集群也還沒跑起來。實際上,ceph部署不應該在學習ceph過程中耗費太多時間和精力,初學時候,能快速部署集群,多接觸、操作集群、解決集群產生的問題,才是快速成長的方式,在對ceph有一定程度的熟悉和認識后,再嘗試手工部署,甚至編譯集群進行安裝,或許對ceph會有更深的認識。
環境準備:
測試環境是5臺服務器,Centos7.6系統
- ceph-node1 - osd節點和mon節點(3塊硬盤)
- ceph-node2 - osd節點和mon節點(3塊硬盤)
- ceph-node3 - osd節點和mon節點(3塊硬盤)
- ceph-node4 - 部署節點(deploy)、MDS節點、osd節點(3塊硬盤)
- ceph-client- 客戶端訪問節點
首先修改主機名;(所有節點)
hostnamectl set-hostname ceph-node1 hostnamectl set-hostname ceph-node2 hostnamectl set-hostname ceph-node3 hostnamectl set-hostname ceph-node4 hostnamectl set-hostname ceph-client關閉防火墻和selinux,如果沒關;(所有節點)
[root@ceph-node4 ~]# setenforce 0 [root@ceph-node4 ~]# sed -i 's/enforcing/disabled/g' /etc/selinux/config [root@ceph-node4 ~]# systemctl stop firewalld.service [root@ceph-node4 ~]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@ceph-node4 ~]# reboot在所有節點創建一個部署、管理ceph集群的用戶,并授予sudo權限,不建議使用root來運行ceph (所有節點)
[root@ceph-node4 ~]# useradd cephfsd [root@ceph-node4 ~]# echo "ceph123"|passwd cephfsd --stdin Changing password for user cephfsd. passwd: all authentication tokens updated successfully. [root@ceph-node4 ~]# echo "cephfsd ALL = (root,ceph) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephfsd cephfsd ALL = (root,ceph) NOPASSWD:ALL [root@ceph-node4 ~]# chmod 0440 /etc/sudoers.d/cephfsd修改本地解析文件(所有節點)
[root@ceph-node4 ~]#cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.4.81 ceph-node1 192.168.4.83 ceph-node2 192.168.4.84 ceph-node3 192.168.4.94 ceph-node4 192.168.4.95 ceph-client配置Ceph源(每個節點,要求都能訪問外網)
[root@ceph-node4 ~]# vi /etc/yum.repos.d/ceph.repo [Ceph] name=Ceph packages for $basearch baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc priority=1完成后在deploy節點使用cephfsd用戶登陸,開始下一步工作(所有節點)
[root@ceph-node4 ~]# su - cephfsd 上一次登錄:四 6月 20 14:44:14 CST 2019pts/0 上 [cephfsd@ceph-node4 ~]$簡單粗暴,在每個節點上加入ceph源后,先安裝epel-release,如果我們不安裝,就會缺少部分包,然后再安裝ceph(所有節點)
[cephfsd@ceph-node4 ~]$ sudo yum -y install epel-release [cephfsd@ceph-node4 ~]$ sudo yum -y install ceph ceph-radosgw ceph-deploy [cephfsd@ceph-node4 ~]$ sudo yum -y install htop sysstat iotop iftop ntpdate net-tools配置所有節點的時間同步(所有節點)
[cephfsd@ceph-node1 ~]$ sudo ntpdate 192.168.4.43 [cephfsd@ceph-node2 ~]$ sudo ntpdate 192.168.4.43 [cephfsd@ceph-node3 ~]$ sudo ntpdate 192.168.4.43 [cephfsd@ceph-node4 ~]$ sudo ntpdate 192.168.4.43 [cephfsd@ceph-client ~]$ sudo ntpdate 192.168.4.43部署集群
部署集群主要是用ceph-deploy來進行(接下來都是node4節點)
首先是初始化集群配置
[cephfsd@ceph-node4 ~]$ ceph-deploy new ceph-node1 ceph-node2 ceph-node3 [cephfsd@ceph-node4 ~]$ ls -l total 16 -rw-rw-r--. 1 cephfsd cephfsd 238 Apr 23 15:03 ceph.conf -rw-rw-r--. 1 cephfsd cephfsd 5330 Apr 23 15:03 ceph-deploy-ceph.log -rw-------. 1 cephfsd cephfsd 73 Apr 23 15:03 ceph.mon.keyring初始化集群主要是生成最基本的配置文件ceph.conf和monitor key文件ceph.mon.keyring,我們要手動修改ceph.conf
[cephfsd@ceph-node4 ~]$ cat ceph.conf [global] fsid = 54a9ee80-2339-407d-8fb8-e0b04480b132 ## 集群ID mon_initial_members = ceph-node1, ceph-node2, ceph-node3 ## mon節點信息 mon_host = 192.168.4.81,192.168.4.83,192.168.4.84 ## mon節點ip auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx ## auth = cephx 開啟認證## 空行不能刪 osd_pool_default_size = 2 ## 集群副本數 osd_pool_default_min_size = 1 ## 集群最小副本數 mon_osd_full_ratio = .85 ## osd使用率注意到,這里new,我們初始化三個monitor,接下來我們創建monitor
[cephfsd@ceph-node4 ~]$ ceph-deploy mon create-initial [cephfsd@ceph-node4 ~]$ ls -l total 88 -rw-------. 1 cephfsd cephfsd 71 Apr 23 15:11 ceph.bootstrap-mds.keyring -rw-------. 1 cephfsd cephfsd 71 Apr 23 15:11 ceph.bootstrap-mgr.keyring -rw-------. 1 cephfsd cephfsd 71 Apr 23 15:11 ceph.bootstrap-osd.keyring -rw-------. 1 cephfsd cephfsd 71 Apr 23 15:11 ceph.bootstrap-rgw.keyring -rw-------. 1 cephfsd cephfsd 63 Apr 23 15:11 ceph.client.admin.keyring -rw-rw-r--. 1 cephfsd cephfsd 304 Apr 23 15:06 ceph.conf -rw-rw-r--. 1 cephfsd cephfsd 58107 Apr 23 15:11 ceph-deploy-ceph.log -rw-------. 1 cephfsd cephfsd 73 Apr 23 15:03 ceph.mon.keyringmon create-initial會根據ceph.conf進行創建mon,判斷monitor都創建成功后,會進行keyring的收集,這些keyring在后續創建其他成員的時候要用到,接下來我們分發集群keyring
[cephfsd@ceph-node4 ~]$ ceph-deploy admin ceph1 ceph2 ceph3這個操作是將集群的admin.keyring分發給指定的節點,這樣這些節點就可以使用ceph命令了,接下來創建mgr
[cephfsd@ceph-node4 ~]$ ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3mgr分擔了很多原本monitor的工作,目前它也是重要的一個組件,根據集群規模,可以創建2-3個mgr,不過也沒有必要太多,接下來可以開始創建osd了
[cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdb ceph-node1 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdc ceph-node1 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdd ceph-node1 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdb ceph-node2 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdc ceph-node2 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdd ceph-node2 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdb ceph-node3 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdc ceph-node3 [cephfsd@ceph-node4 ~]$ ceph-deploy osd create --data /dev/sdd ceph-node3創建后,可以查看集群是否添加成功 (不能使用deploy節點和client節點查看)
[cephfsd@ceph-node1 ~]$ ceph -s cluster:id: 9c2268c8-eb8f-4bc1-a6f0-a45802a2955bhealth: HEALTH_WARN OK services:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3osd: 9 osds: 9 up, 9 in data:pools: 0 pools, 0 pgsobjects: 0 objects, 0Busage: 10.02GiB used, 450.0GiB / 450.0GiB availpgs:osd全部創建成功了
塊場景存儲
首先創建rbd使用的存儲池,因為deploy節點沒有admin授權,無法直接使用ceph命令,所以這里切換到ceph-node1節點進行操作
[cephfsd@ceph-node1 ~]$ sudo ceph osd pool create rbd 64 64 pool 'rbd' created [cephfsd@ceph-node1 ~]$ sudo rbd pool init rbd [cephfsd@ceph-node1 ~]$ sudo ceph -s cluster:id: 9c2268c8-eb8f-4bc1-a6f0-a45802a2955bhealth: HEALTH_WARN OKservices:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3osd: 9 osds: 9 up, 9 indata:pools: 1 pools, 64 pgs ## 創建64了pgobjects: 0 objects, 0Busage: 10.02GiB used, 450.0GiB / 450.0GiB availpgs:``` ##### 可以看到,rbd池的pg創建完成了,默認情況下,使用的pool是3副本配置,我們修改成了2副本,測試創建一塊rbd試下 ```java [cephfsd@ceph-node1 ~]$ sudo rbd create testrbd --size=10G [cephfsd@ceph-node1 ~]$ sudo rbd info rbd/testrbd rbd image 'testrbd':size 10GiB in 2560 objectsorder 22 (4MiB objects)block_name_prefix: rbd_data.107c6b8b4567format: 2features: layering, exclusive-lock, object-map, fast-diff, deep-flattenflags: create_timestamp: Thu Jun 20 14:50:29 2019沒有問題
對象存儲場景
對象存儲需要使用到radosgw,即對象存儲網關,所以需要先起一個網關,在起網關的時候,它會檢查它需要的存儲池是否存在,不存在則自動創建,創建網關在deploy節點上進行
[cephfsd@ceph-node4 ~]$ ceph-deploy rgw create ceph1創建沒問題到集群節點查看
[cephfsd@ceph-node1 ~]$ sudo ceph -s cluster:id: 9c2268c8-eb8f-4bc1-a6f0-a45802a2955bhealth: HEALTH_WARN OKservices:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3osd: 9 osds: 9 up, 9 inrgw: 1 daemon active ##添加了rgw節點data:pools: 1 pools, 64 pgs objects: 0 objects, 0Busage: 10.02GiB used, 450.0GiB / 450.0GiB availpgs:可以看到,rgw有1個active了,我們看一下pool的情況
[cephfsd@ceph-node1 ~]$ sudo ceph osd pool ls rbd .rgw.root default.rgw.control default.rgw.meta default.rgw.log創建了默認的幾個pool,這些池的pg數也是默認的,如果覺得不合適,可以在起rgw前手動創建好
到此集群就搭建完畢
集群MDS節點搭建,在deploy節點創建,
[cephfsd@ceph-node4 ~]$ ceph-deploy mds create ceph-node4創建兩個存儲池。MDS需要使用兩個pool,一個pool用來存儲數據,一個pool用來存儲元數據
[cephfsd@ceph-node1 ~]$ ceph osd pool create fs_data 32 pool 'fs_data' created [cephfsd@ceph-node1 ~]$ ceph osd pool create fs_metadata 32 pool 'fs_metadata' created [cephfsd@ceph-node1 ~]$ rados lspools rbd .rgw.root default.rgw.control default.rgw.meta default.rgw.log pool1 fs_data fs_metadata創建Cephfs
[cephfsd@ceph-node1 ~]$ ceph fs new cephfs fs_metadata fs_data new fs with metadata pool 8 and data pool 7 [cephfsd@ceph-node1 ~]$ ceph fs ls name: cephfs, metadata pool: fs_metadata, data pools: [fs_data ]查看MDS狀態
[cephfsd@ceph-node1 ~]$ ceph mds stat cephfs-1/1/1 up {0=ceph-node3=up:active} [cephfsd@ceph-node1 ~]$ sudo ceph -s cluster:id: 9c2268c8-eb8f-4bc1-a6f0-a45802a2955bhealth: HEALTH_WARN OKservices:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3mds: cephfs-1/1/1 up {0=ceph-node3=up:active}osd: 9 osds: 9 up, 9 inrgw: 1 daemon active data:pools: 1 pools, 64 pgsobjects: 0 objects, 0Busage: 10.02GiB used, 450.0GiB / 450.0GiB availpgs:掛載使用CephFS文件系統,使用ceph-fuse工具掛載 (客戶端root就可以)
客戶端安裝ceph-fuse
[root@ceph-client~]$ yum -y install ceph-fuse創建掛載的文件夾
[rootd@ceph-client~]$ mkdir /cephfs將key文件發送給client客戶端
[root@ceph-node4 ~]$ ceph-deploy admin ceph-client客戶端進行掛載
[root@ceph-client ~]# ceph-fuse -m 192.168.4.81:6789 /cephfs/ ceph-fuse[16770]: starting ceph client 2019-06-20 15:19:58.756083 7fc8691050c0 -1 init, newargv = 0x561a27cd6840 newargc=9 ceph-fuse[16770]: starting fuse查看掛載情況
[root@ceph-client ~]# df -h /cephfs/ 文件系統 容量 已用 可用 已用% 掛載點 ceph-fuse 207G 2.0G 205G 1% /cephfs [root@ceph-client ~]# df -hT 文件系統 類型 容量 已用 可用 已用% 掛載點 ceph-fuse fuse.ceph-fuse 208G 0 208G 0% /cephfs寫入文件測試,先查看當前osd使用率
[cephfsd@ceph-node1 ~]$ sudo ceph -s cluster:id: 9c2268c8-eb8f-4bc1-a6f0-a45802a2955bhealth: HEALTH_WARN OKservices:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3mds: cephfs-1/1/1 up {0=ceph-node3=up:active}osd: 9 osds: 9 up, 9 inrgw: 1 daemon active data:pools: 1 pools, 64 pgsobjects: 0 objects, 0Busage: 10.02GiB used, 450.0GiB / 450.0GiB avail ##10G已用pgs: 288 active+clean客戶端創建一個1G的文件測試
[root@ceph-client cephfs]# dd if=/dev/zero of=/cephfs/1.file bs=1G count=1 記錄了1+0 的讀入 記錄了1+0 的寫出 1073741824字節(1.1 GB)已復制,11.9959 秒,89.5 MB/秒查看OSD使用情況
[cephfsd@ceph-node1 ~]$ sudo ceph -s cluster:id: 9c2268c8-eb8f-4bc1-a6f0-a45802a2955bhealth: HEALTH_WARN OKservices:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3mgr: ceph-node1(active), standbys: ceph-node2, ceph-node3mds: cephfs-1/1/1 up {0=ceph-node3=up:active}osd: 9 osds: 9 up, 9 inrgw: 1 daemon active data:pools: 1 pools, 64 pgsobjects: 0 objects, 0Busage: 10.02GiB used, 450.0GiB / 450.0GiB avail ##多了2.2G(因為采用兩副本,備份了一份)pgs: 288 active+clean io:client: 82.9MiB/s wr, 0op/s rd, 21op/s wr集群搭建成功
使用NFS掛載windows
[root@ceph-client ~]# vi /etc/exports /cephfs *(rw,sync,no_root_squash,fsid=54a9ee80-2339-407d-8fb8-e0b04480b132) [root@ceph-client ~]# exportfs -ar [root@ceph-client ~]# systemctl restart rpcbind [root@ceph-client ~]# systemctl restart nfs
總結
以上是生活随笔為你收集整理的Centos7.6下Ceph搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络摄像机显示管理服务器离线,有看头为什
- 下一篇: Python知识点总结(1)