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