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/"
}