基本环境

ip地址(双网卡) 主机名 ceph磁盘 系统 备注
192.168.37.5/192.168.56.5 ceph01 20G centos7.7 mon01,mds01,ceph-deploy
192.168.37.6/192.168.56.6 ceph02 20G centos7.7 mon02,mgr01,mds02
192.168.37.7/192.168.56.7 ceph03 20G centos7.7 mon03,mgr02
192.168.37.8/192.168.56.8 ceph04 20G+40G centos7.7 osd01
192.168.37.9/192.168.56.9 ceph05 20G+40G centos7.7 osd02
192.168.37.10/192.168.56.10 ceph06 20G+40G centos7.7 osd03

文件系统

Ceph 的 OSD 依赖于底层文件系统的稳定性和性能。当前,我们推荐部署生产系统时使用 xfs 文件系统;推荐用 btrfs 做测试、开发和其他不太要紧的部署。我们相信,长远来看 btrfs 适合 Ceph 的功能需求和发展方向,但是 xfs 和 ext4 能提供当前部署所必需的稳定性。 btrfs 开发在迅速推进,所以它的用户应该有能力经常更新到最新内核发布,而且能跟踪严重缺陷的修正进度。OSD 守护进程有赖于底层文件系统的扩展属性( XATTR )存储各种内部对象状态和元数据。底层文件系统必须能为 XATTR 提供足够容量, btrfs 没有限制随文件的 xattr 元数据总量; xfs 的限制相对大( 64KB ),多数部署都不会有瓶颈; ext4 的则太小而不可用。
使用 ext4 文件系统时,一定要把下面的配置放于 ceph.conf 配置文件的 [osd] 段下;用 btrfs 和 xfs 时可以选填。

filestore xattr use omap = true

SSH免密登录

安装 SSH 服务器
#检查服务器有没有安装openssh
rpm -qa openssh
#没有的就安装
yum -y install openssh-server
创建用户

注意:在运行 Ceph 守护进程的节点上创建一个普通用户(这里部暑的6个节点均创建)。建议选一个暴力攻击者不可能轻易猜到的用户名,如 root 、 ceph 之外的名字。因为我这里是测试环境,就简单的选择了ceph用户。

#在ceph01~ceph06上执行
useradd -d /home/ceph -m ceph
passwd ceph
#ceph-deploy 会在节点安装软件包,所以你创建的用户需要无密码 sudo 权限
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/ceph

#####配置各主机的hosts文件

[root@ceph01 ~]# vi /etc/hosts
192.168.37.5 ceph01
192.168.56.5 ceph01
192.168.37.6 ceph02
192.168.56.6 ceph02
192.168.37.7 ceph03
192.168.56.7 ceph03
192.168.37.8 ceph04
192.168.56.8 ceph04
192.168.37.9 ceph05
192.168.56.9 ceph05
192.168.37.10 ceph06
192.168.56.10 ceph06
配置SSH

注意:配置你的管理主机(我这里用ceph01),使之可通过 SSH无密码访问各节点,口令留空

#创建ssh管理服务器
ssh-keygen -t rsa
Generating public/private key pair.
Enter file in which to save the key (/ceph-client/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /ceph-client/.ssh/id_rsa.
Your public key has been saved in /ceph-client/.ssh/id_rsa.pub.
#将公钥拷贝到各节点:
[ceph@ceph01 ~]$ ssh-copy-id ceph@ceph02
[ceph@ceph01 ~]$ ssh-copy-id ceph@ceph03
[ceph@ceph01 ~]$ ssh-copy-id ceph@ceph04
[ceph@ceph01 ~]$ ssh-copy-id ceph@ceph05
[ceph@ceph01 ~]$ ssh-copy-id ceph@ceph06
#修改 ceph-deploy 管理节点上的 ~/.ssh/config 文件,这样 ceph-deploy 就能用你所建的用户名登录 Ceph 节点了,而无需每次执行 ceph-deploy 都要指定 --username {username} 。这样做同时也简化了 ssh 和 scp 的用法。
[ceph@ceph01 ~]$ vi .ssh/config 
Host ceph02
    Hostname ceph02
    user ceph
Host ceph03
    Hostname ceph03
    user ceph
Host ceph04
    Hostname ceph04
    user ceph
Host ceph05
    Hostname ceph05
    user ceph
Host ceph06
    Hostname ceph06
    user ceph
#测试,有错误提示
[ceph@ceph01 ~]$ ssh ceph02
Bad owner or permissions on /home/ceph/.ssh/config
#需要更改一下config文件的权限,只有600才能正确的执行。
[ceph@ceph01 ~]$ ssh ceph02
Last login: Tue Apr  7 05:23:59 2020 from ceph01
[ceph@ceph02 ~]$

安装ceph-deploy

注意:ceph-deploy安装在节点ceph01上,ceph01节点作为admin节点

#创建一个 YUM (Yellowdog Updater, Modified) 库文件,其路径为 /etc/yum.repos.d/ceph.repo
#注意,其它节点也更新一下这个yum源。
[ceph@ceph01 ~]$ sudo vim /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch  #注意:rpm-nautilus这是ceph的版本,可以选择其它版本,el7是centos的系统版本
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
priority=2
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

#更新软件库并安装 ceph-deploy
[ceph@ceph01 ~]$ sudo yum update && sudo yum install ceph-deploy

连通性前置检查

所有节点关闭seliunx
[root@ceph03 ~]# sudo sed -i s#enforcing#disabled#g /etc/selinux/config
[root@ceph03 ~]# setenforce 0
防火墙设置

Ceph Monitors 之间默认使用 6789 端口通信, OSD 之间默认用 6800:7300 这个范围内的端口通信。详情见网络配置参考。我们把ceph的网络分为public和cluster两个网络,一个用于前端(enp0s3网口),一个用于后端(enp0s8网口),前后端网络图示如下:

所以我们这里把各节点的前端enp0s3网口(public network)加到防火墙的public区域,后端enp0s8网口(cluster network)加到防火墙的work区域,再增对这两个区域做策略。centos6的防火墙规则请对照端口自行编写

#各节点执行:
#sudo firewall-cmd --zone=public --add-interface=enp0s3      #默认就是公共区域的,这个应该不用执行
sudo firewall-cmd --zone=work --change-interface=enp0s8      #默认就是公共区域的,更改所在防火墙区域
#sudo firewall-cmd --zone=work --add-interface=enp0s8        #指定网口所在区域,因为默认在public区域,所以应该用上面更改区域的语句

#监视器默认监听 6789 端口,而且监视器总是运行在公共网,或者把ceph-mon服务开启就可以
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent

sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent

#MDS会监听公共网 6800 以上的第一个可用端口,但这种行为是不确定的,应该开放6800-7300端口区间,或者直接开启ceph服务
sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

sudo firewall-cmd --zone=public --add-service=ceph --permanent

#OSD 守护进程默认绑定 6800 起的第一个可用端口,但这种行为是不确定的,应该开放6800-7300端口区间,或者直接开放ceph服务
sudo firewall-cmd --zone=work --add-port=6800-7300/tcp --permanent

sudo firewall-cmd --zone=work --add-service=ceph --permanent
#重启一下防火墙,让规则生效
sudo firewall-cmd --reload
文档更新时间: 2020-05-07 15:49   作者:子木