centos 7 搭建ceph集群——筑梦之路

ceph 分布式存储搭建

2020-5-9

操作系统: centos 7 x86_64

环境介绍:

192.168.25.40	ceph-master		管理节点
192.168.25.41	ceph-node-01	监控节点
192.168.25.42	ceph-node-02	osd节点
192.168.25.43	ceph-node-03	osd节点

https://www.cnblogs.com/zengzhihua/p/9829472.html


连通性测试:ping  hostname
比如:ping -c 4 ceph-node-01

时间同步:chrony

使用时间同步主要是集群防止时间漂移导致故障

这里因为默认已经开启了同网络同步 可以忽略

#创建用户免密登陆:

ceph-deploy 工具必须以普通用户登录 Ceph 节点,且此用户拥有无密码使用 sudo 的权限,因为它需要在安装软件及配置文件的过程中,不必输入密码。
建议在集群内的所有 Ceph 节点上给 ceph-deploy 创建一个特定的用户,但不要用 “ceph” 这个名字。

每个节点创建用户:

useradd -m merry

passwd merry

确保各 Ceph 节点上新创建的用户都有 sudo 权限

echo "merry ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/merry

chmod 0440 /etc/sudoers.d/merry

su merry

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub merry@ceph-node-01

ssh-copy-id -i ~/.ssh/id_rsa.pub merry@ceph-node-02

ssh-copy-id -i ~/.ssh/id_rsa.pub merry@ceph-node-03



修改 ~/.ssh/config 文件(没有则新增),这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了

sudo vim ~/.ssh/config

Host ceph-master
   Hostname ceph-master
   User merry
Host ceph-node-01
   Hostname ceph-node-01
   User merry
Host ceph-node-02
   Hostname ceph-node-02
   User merry
Host ceph-node-03
   Hostname ceph-node-03
   User merry
   
   
sudo chmod 644 ~/.ssh/config

#开放通信端口

sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent

sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

sudo firewall-cmd --reload

#关闭selinux
sudo setenforece 0


###管理节点###
#安装扩展源
yum install epel-release -y

配置yum源

vim /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
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-jewel/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-jewel/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1


sudo yum update

sudo yum install ceph-deploy

sudo yum install yum-plugin-priorities

#搭建集群

管理节点上创建一个目录,用于保存 ceph-deploy 生成的配置文件和密钥对

cd ~

mkdir -p ceph-cluster

cd ceph-cluster

注:若安装ceph后遇到麻烦可以使用以下命令进行清除包和配置:

// 删除安装包
$ ceph-deploy purge admin-node node1 node2 node3

// 清除配置
$ ceph-deploy purgedata admin-node node1 node2 node3
$ ceph-deploy forgetkeys

##创建集群和监控节点

#ceph-deploy new {initial-monitor-node(s)}

ceph-deploy new ceph-node-01

完成后,my-clster 下多了3个文件:ceph.conf、ceph-deploy-ceph.log 和 ceph.mon.keyring

问题:如果出现 "[ceph_deploy][ERROR ] RuntimeError: remote connection got closed, ensure requiretty is disabled for node1",执行 sudo visudo 将 Defaults requiretty 注释掉

// 修改配置文件

cat ceph.conf

[global]
fsid = 88a9e211-58ad-4bdf-a570-4037ae78b344
mon_initial_members = ceph-node-01
mon_host = 192.168.25.41
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

把 Ceph 配置文件里的默认副本数从 3 改成 2 ,这样只有两个 OSD 也可以达到 active + clean 状态。把 osd pool default size = 2 加入 [global] 段:

$ sed -i '$a\osd pool default size = 2' ceph.conf
如果有多个网卡,
可以把 public network 写入 Ceph 配置文件的 [global] 段:

public network = {ip-address}/{netmask}


###在所有节点上安装

ceph-deploy install ceph-master ceph-node-01 ceph-node-02 ceph-node-03

问题:[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: yum -y install epel-release

解决方法:

sudo yum -y remove epel-release



##配置初始 monitor(s)、并收集所有密钥

ceph-deploy mon create-initial

完成上述操作后,当前目录里应该会出现这些密钥环

											 ceph.bootstrap-mds.keyring
-rw-------. 1 merry merry   71 5月   9 17:41 ceph.bootstrap-mgr.keyring
-rw-------. 1 merry merry  113 5月   9 17:41 ceph.bootstrap-osd.keyring
-rw-------. 1 merry merry  113 5月   9 17:41 ceph.bootstrap-rgw.keyring
-rw-------. 1 merry merry  129 5月   9 17:41 ceph.client.admin.keyring

------------------------------------------以下还没操作------------------------------------------------

###添加2个osd

登录到 Ceph 节点、并给 OSD 守护进程创建一个目录,并添加权限

$ ssh ceph-node-02
$ sudo mkdir /opt/osd0
$ sudo chmod 777 /opt/osd0/
$ exit

$ ssh ceph-node-03
$ sudo mkdir /opt/osd1
$ sudo chmod 777 /opt/osd1/
$ exit

从管理节点执行 ceph-deploy 来准备 OSD

ceph-deploy osd prepare ceph-node-02:/opt/osd0 ceph-node-03:/opt/osd1

激活 OSD 

ceph-deploy osd activate ceph-node-02:/opt/osd0 ceph-node-03:/opt/osd1

把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点

ceph-deploy admin ceph-master ceph-node-01 ceph-node-02 ceph-node-03

确保你对 ceph.client.admin.keyring 有正确的操作权限

sudo chmod +r /etc/ceph/ceph.client.admin.keyring

检查集群的健康状况和OSD节点状况

ceph health

ceph -s

ceph osd df

#常用命令

ceph osd tree

ceph osd dump




#扩展节点
添加mds

ceph-deploy mds create ceph-node-01

创建元数据池
ceph osd pool create meta_data 128 128

创建文件系统:
ceph fs new cephfs meta_data meta_data

#查看文件系统
ceph fs ls

ceph -s

#挂载cephfs

sudo yum -y install ceph-fuse

sudo ceph-fuse -m  ceph-node-01:6789 /mnt/

#验证
df -lhT

#测试读写
time dd if=/dev/zero of=test.file bs=1024M count=2

time dd if=test.file of=/dev/null bs=1024M count=2

上一篇:Ubuntu18.04上部署Ceph(基于debian-pacific)


下一篇:k8s使用ceph