ceph-deploy配置ceph分佈式集羣

ceph-deploy配置ceph分佈式集羣

graph LR
ceph-deploy-->ceph-node1
ceph-deploy-->ceph-node2
ceph-deploy-->ceph-node3

說明

ceph-depoly install使用說明:

  • 不通過–release指定版本的話, 會默認安裝最新版本
  • 不設置–no-adjust-repos的時候,會根據安裝的版本,自動下載ceph和epel官方源文件,並設置官方源地址。由於國內訪問國外原地址,經常噁心人,所以我們通過–no-adjust-repos禁用自動配置源,而通過手動配置ceph和epel源。
  • 需要python2-pip和deltarpm組件支持。

由於環境限制,實驗過程中,我們會將ceph-deploy角色部署到ceph-node1上,最終角色圖如下:

基礎環境準備

分區

  • sda:40G 系統分區,安裝系統
  • nvme0n1:99G,journal盤,GPT格式,分成3個分區,不需要格式化,用於三個data盤的journal進程安裝
  • sdb:data盤,無需分區
  • sdc:data盤,無需分區
  • sdd:data盤,無需分區
  • 最終結果是:
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   40G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   39G  0 part 
├─centos-root 253:0    0   37G  0 lvm  /
└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  200G  0 disk 
sdc               8:32   0  200G  0 disk 
sdd               8:48   0  200G  0 disk 
sr0              11:0    1 1024M  0 rom  
nvme0n1         259:0    0   99G  0 disk 
├─nvme0n1p1     259:1    0   33G  0 part 
├─nvme0n1p2     259:2    0   33G  0 part 
└─nvme0n1p3     259:3    0   33G  0 part

網絡

  • 由於資源限制,使用一個網絡

配置阿里雲的yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo<br />
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

配置ceph M版的阿里源

yum install -y https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
生成緩存
yum clean all
yum makecache

安裝時間同步服務,本文使用chrony

安裝
yum install -y chrony
編輯配置文件
vim /etc/chrony.conf
    server ntp1.aliyun.com iburst
設置開機自啓動並啓動服務
systemctl enable chronyd.service
systemctl start chronyd.service
驗證
chronyc sources

配置hosts

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.10.50 ceph-node1
192.168.10.51 ceph-node2 
192.168.10.52 ceph-node3

關閉防火牆

systemctl disable firewalld
systemctl stop firewalld

關閉selinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

節點個性化配置

命名各節點

各節點上依次執行:

hostnamectl set-hostname --static ceph-node1
hostnamectl set-hostname --static ceph-node2
hostnamectl set-hostname --static ceph-node3

集羣配置

配置免密登錄

在node1上生產key文件:

ssh-keygen

將key文件同步到各節點,在各節點上對應執行如下命令:

ssh-copy-id root@ceph-node1
ssh-copy-id root@ceph-node2
ssh-copy-id root@ceph-node3

安裝pytho環境

yum install -y python2-pip deltarpm

安裝ceph-deploy

yum install -y ceph-deploy

查看ceph-deploy的版本,應該是2.0.1

ceph-deploy --version

出錯處理

如果在某些地方碰到麻煩,想從頭再來,可以用下列命令清除配置:

ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy purgedata ceph-node1 ceph-node2 ceph-node3
ceph-deploy forgetkeys

用下列命令可以連 Ceph 安裝包一起清除:

ceph-deploy purge {ceph-node} [{ceph-node}]
例如:
ceph-deploy purge ceph-node1 ceph-node2 ceph-node3
ceph-deploy forgetkeys

創建集羣配置文件路徑

mkdir cephcluster
cd cephcluster
pwd
    /root/cephcluster

創建集羣

ceph-deploy new ceph-node1 ceph-node2 ceph-node3

執行完成以後,將生成下面三個文件:

-rw-r--r-- 1 root root  253 Jun  2 18:47 ceph.conf
-rw-r--r-- 1 root root 5150 Jun  2 18:47 ceph-deploy-ceph.log
-rw------- 1 root root   73 Jun  2 18:47 ceph.mon.keyring

添加配置:

public network = 192.168.10.0/24
mon clock drift allowed = 2
mon clock drift warn backoff = 30
max open files = 131072
[mon]
#爲了能讓後面將已經創建的存儲池刪除,添加該項配置
mon allow pool delete = true
[OSD]
osd mkfs type = xfs
filestore max sync interval = 15
filestore min sync interval = 10
[CLIENT]
rbd cache = true

在集羣機器上安裝ceph

ceph-deploy install --no-adjust-repos --release mimic ceph-node1 ceph-node2 ceph-node3
#假如我們沒有禁用自動調整源,而使用了官方源,有可能上面的命令會各種問題。
#此時我們可以在各節點上執行yum install -y ceph ceph-radosgw替換,有時候由於網絡各種問題,該方法更有效

配置初始 monitor(s)、並收集所有密鑰

ceph-deploy mon create-initial

同步配置文件和key文件到各節點:

ceph-deploy admin ceph-node1 ceph-node2 ceph-node3

在三個節點上創建journal和osd

#filestore
for node in ceph-node1 ceph-node2 ceph-node3;do ceph-deploy osd create --filestore --data /dev/sdb --journal /dev/nvme0n1p1 $node;ceph-deploy osd create --filestore --data /dev/sdc --journal /dev/nvme0n1p2 $node;ceph-deploy osd create --filestore --data /dev/sdd --journal /dev/nvme0n1p3 $node;done;
#bluestore:當部署bluestore的時候,不需要journal分區,只需要指定要初始化的磁盤就行
for node in ceph-node1 ceph-node2 ceph-node3;do ceph-deploy osd create  --data /dev/sdb  $node;ceph-deploy osd create --data /dev/sdc $node;done;

如果原來的磁盤上有分區或者有數據的話,可以用以下命令清理磁盤:

ceph-deploy disk zap {osd-server-name} {disk-name}

比如,清理ceph-node01的sdb

ceph-deploy disk zap ceph-node01 /dev/sdb

創建metadata server,防止後面用於文件服務器

ceph-deploy mds create ceph-node1

配置dashboard

#mgr創建的時候,如果指定多個節點,後期會發生選舉的問題,但是有高可用的功效。如果只指定一個節點,會存在單節點分享
ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3
ceph mgr module enable dashboard
ceph dashboard create-self-signed-cert
ceph dashboard set-login-credentials admin admin
ceph mgr services
    {
        "dashboard": "https://ceph-node1:8443/"
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章