前言
Ceph 是一个高性能、可靠、可扩展的开源存储平台。它是一个自由的分布式存储系统,提供了对象、块和文件级存储的接口,并可以不受单点故障的影响而运行。上周调研了CEPH文件集群的优劣性,准备做一个实际搭建的性能测试,在物理机上虚了多个ubuntu出来,模拟多台物理机集群,参考网络资源,搭建起来的,但是有遇到一些错误,可能对于接触过linux的人来说都不算很严重的难题,这里做个记录。本文参考:https://linux.cn/article-8182-1.html, 但遇到了一些错误,记录搭建与解决错误是本文的主旨,错误处理在最后一节。
前提
1:5个安装了 Ubuntu 16.04 的服务器节点
2:所有节点上的 root 权限
(可选前提,如果配置osd为逻辑分区,需要在linux机器上挂一块逻辑分区,供格式化osd使用)
3:osd机器上sdb空闲分区
配置所有节点
配置5个节点来准备安装CEPH集群软件,所以你必须拥有root权限,在5台机器上都安装ssh-server。
1,创建cephuser用户,统一用户名和密码(tip:在所有节点都运行如下指令),
useradd -m -s /bin/bash cephuser
passwd cephuser
创建完新用户后,我们需要给 cephuser 配置无密码的 sudo 权限。这意味着 cephuser可以不先输入密码而获取到 sudo 权限运行:
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
2,安装 NTP 来同步所有节点的日期和时间。先运行 ntpdate 命令通过 NTP 设置日期。我们将使用 US 池的 NTP 服务器。然后开启并使 NTP 服务在开机时启动。
sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp
3,如果你和我一样在虚拟机里面搭建集群,那么附加运行:
sudo apt-get install -y open-vm-tools
因为ceph-deploy等需要python环境,所以安装python环境,和依赖包parted:
sudo apt-get install -y python python-pip parted
4,编辑hosts文件(vi /etc/hosts):
# ceph-admin
192.168.40.16 mlv1-VirtualBox
# ceph-mon1
192.168.40.97 mlv2-VirtualBox
# ceph-osd1
192.168.40.106 mlv4-VirtualBox
# ceph-osd2
192.168.40.100 mlv6-VirtualBox
# ceph-gateway (client)
192.168.40.95 mlv3-VirtualBox
这里hostname最好和你集群机器的主机名一样,我就因为不一样在ssh安装ceph到其他节点的时候报错了。
配置SSH服务器
这一步的目的是配置admin节点,完成admin节点无密码访问其他节点,首先登录到ceph-admin节点:
ssh root@mlv1-VirtualBox
su - cephuser
管理节点用来安装配置所有集群节点,所以 ceph-admin 上的用户必须有不使用密码连接到所有节点的权限。我们需要为 ‘ceph-admin’ 节点的 cephuser 用户配置无密码 SSH 登录权限。
1, 生成密钥:
ssh-keygen
# 提示输入密码的时候请回车,让密码为空
2,为 ssh 创建一个配置文件
vim ~/.ssh/config
我的配置文件如下:
Host ceph-admin
Hostname mlv1-VirtualBox
User cephuser
Host mon1
Hostname mlv2-VirtualBox
User cephuser
Host ceph-osd1
Hostname mlv4-VirtualBox
User cephuser
Host ceph-osd2
Hostname mlv6-VirtualBox
User cephuser
Host ceph-client
Hostname mlv3-VirtualBox
User cephuser
保存退出,并赋予文件权限,接着通过 ssh-copy-id 命令增加密钥到所有节点。
chmod 644 ~/.ssh/config
ssh-keyscan ceph-osd1 ceph-osd2 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id mon1
当请求输入密码时输入你的 cephuser 密码,完成以上配置之后admin节点就可以访问集群别的机器了,顺带截个图:
Ubuntu 防火墙配置
出于安全原因,我们需要在服务器打开防火墙。我们更愿使用 Ufw(不复杂防火墙)来保护系统,这是 Ubuntu 默认的防火墙。在这一步,我们在所有节点开启 ufw,然后打开 ceph-admin、ceph-mon 和 ceph-osd 需要使用的端口。
1,admin节点(安装ufw包)
ssh root@ceph-admin
sudo apt-get install -y ufw
# 打开 80,2003 和 4505-4506 端口,然后重启防火墙,开机启动。
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505