Ceph是一个开源的存储平台,它提供高性能,可靠性和可扩展性。 它是一个免费的分布式存储系统,提供对象,块和文件级存储的接口,并且可以在没有单点故障的情况下运行。
在本教程中,我将指导您在Ubuntu 16.04服务器上安装和构建Ceph集群。 Ceph集群由以下组件组成:
- Ceph OSD(ceph-osd) - 处理数据存储,数据复制和恢复。 Ceph集群至少需要两个Ceph OSD服务器。 我们将在此设置中使用三台Ubuntu 16.04服务器。
- Ceph监视器(ceph-mon) - 监视集群状态并运行OSD映射和CRUSH映射。 我们将在这里使用一台服务器。
- Ceph Meta数据服务器(ceph-mds) - 如果要使用Ceph作为文件系统,则需要这样做。
先决条件
- 安装了Ubuntu 16.04服务器的6个服务器节点
- 所有节点的根权限
我将使用以下主机名/ IP设置:
主机名 IP地址
ceph-admin 10.0.15.10
mon1 10.0.15.11
osd1 10.0.15.21
osd2 10.0.15.22
osd3 10.0.15.23
客户端10.0.15.15
第1步 - 配置所有节点
在此步骤中,我们将配置所有6个节点以准备安装Ceph Cluster软件。 所以你必须在所有节点上遵循并运行下面的命令。 并确保所有节点上都安装了ssh-server。
创建Ceph用户
在所有节点上创建一个名为' cephuser '的新用户。
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
安装和配置NTP
安装NTP以在所有节点上同步日期和时间。 运行ntpdate命令通过NTP设置日期和时间。 我们将使用美国的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
安装Open-vm-tools
如果您正在运行VMware内的所有节点,则需要安装此虚拟化实用程序。
sudo apt-get install -y open-vm-tools
安装Python并分开
在本教程中,我们需要用于构建ceph集群的python包。 安装python和python-pip。
sudo apt-get install -y python python-pip parted
配置主机文件
使用vim编辑器编辑所有节点上的hosts文件。
vim /etc/hosts
粘贴以下配置:
10.0.15.10 ceph-admin
10.0.15.11 mon1
10.0.15.21 ceph-osd1
10.0.15.22 ceph-osd2
10.0.15.23 ceph-osd3
10.0.15.15 ceph-client
保存主机文件并退出vim编辑器。
现在您可以尝试在服务器主机名之间进行ping以测试网络连接。
ping -c 5 mon1
第2步 - 配置SSH服务器
在这一步中,我们将配置ceph -admin节点 。 管理节点用于配置监控节点和osd节点。 登录到ceph -admin节点并访问' cephuser '。
ssh root@ceph-admin
su - cephuser
管理节点用于安装和配置所有集群节点,因此ceph-admin节点上的用户必须具有连接到没有密码的所有节点的权限。 我们需要在'ceph-admin'节点上为'cephuser'配置无密码的SSH访问。
生成' cephuser '的ssh键。
ssh-keygen
离开密码为空/空。
接下来,为ssh配置创建一个配置文件。
vim ~/.ssh/config
粘贴以下配置:
Host ceph-admin
Hostname ceph-admin
User cephuser
Host mon1
Hostname mon1
User cephuser
Host ceph-osd1
Hostname ceph-osd1
User cephuser
Host ceph-osd2
Hostname ceph-osd2
User cephuser
Host ceph-osd3
Hostname ceph-osd3
User cephuser
Host ceph-client
Hostname ceph-client
User cephuser
保存文件并退出vim。
将配置文件的权限更改为644。
chmod 644 ~/.ssh/config
现在使用ssh-copy-id命令将密钥添加到所有节点。
ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id ceph-osd3
ssh-copy-id mon1
请求时输入您的cephuser密码。
现在尝试从ceph-admin节点访问osd1服务器,以测试无密码登录是否工作。
ssh ceph-osd1
第3步 - 配置Ubuntu防火墙
出于安全考虑,我们需要打开服务器上的防火墙。 最好使用Ufw(简单防火墙),这是默认的Ubuntu防火墙来保护系统。 在此步骤中,我们将在所有节点上启用ufw,然后打开ceph-admin,ceph-mon和ceph-osd所需的端口。
登录到ceph-admin节点并安装ufw软件包。
ssh root@ceph-admin
sudo apt-get install -y ufw
打开端口80,2003和4505-4506,然后重新加载firewalld。
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp
启动并启用ufw启动时启动。
sudo ufw enable
从ceph-admin节点登录到监视器节点'mon1'并安装ufw。
ssh mon1
sudo apt-get install -y ufw
打开ceph监视器节点的端口并启动ufw。
sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable
最后,在每个osd节点上打开这些端口:ceph-osd1,ceph-osd2和ceph-osd3 - 端口6800-7300。
从ceph-admin登录到每个ceph-osd节点,并安装ufw。
ssh ceph-osd1
sudo apt-get install -y ufw
打开osd节点上的端口并重新加载firewalld。
sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable
ufw防火墙配置完成。
第4步 - 配置Ceph OSD节点
在本教程中,我们有3个OSD节点,每个节点都有两个硬盘分区。
- / dev / sda为root分区
- / dev / sdb是空分区 - 20GB
我们将使用/ dev / sdb作为ceph磁盘。 从ceph-admin节点登录到所有OSD节点,并使用XFS文件系统格式化/ dev / sdb分区。
ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3
使用fdisk命令检查分区方案。
sudo fdisk -l /dev/sdb
通过使用parted命令,使用XFS文件系统和GPT分区表格式化/ dev / sdb分区。
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
接下来,使用mkfs命令格式化XFS格式的分区。
sudo mkfs.xfs -f /dev/sdb
现在检查分区,你会看到一个XFS / dev / sdb分区。
sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb
第5步 - 构建Ceph群集
在这一步中,我们将在ceph-admin的所有节点上安装Ceph。 要开始,请登录到ceph-admin节点。
ssh root@ceph-admin
su - cephuser
在ceph-admin节点上安装ceph-deploy
在第一步中,我们已经在系统上安装了python和python-pip。 现在我们需要从pypi python存储库安装Ceph部署工具'ceph -deploy '。
使用pip命令在ceph-admin节点上安装ceph-deploy。
sudo pip install ceph-deploy
注意:确保所有节点都已更新。
安装ceph-deploy工具后,为Ceph群集配置创建一个新目录。
创建一个新的集群
创建一个新的集群目录。
mkdir cluster
cd cluster/
接下来,通过定义监视节点' mon1 ',使用' ceph -deploy '命令创建一个新的集群。
ceph-deploy new mon1
该命令将在集群目录中生成Ceph集群配置文件'ceph.conf'。
用vim编辑ceph.conf文件。
vim ceph.conf
在[全局]块下,粘贴以下配置。
# Your network address
public network = 10.0.15.0/24
osd pool default size = 2
保存文件并退出编辑器。
在所有节点上安装Ceph
现在使用单个命令从ceph-admin节点的所有节点安装Ceph。
ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1
该命令将自动在所有节点上安装Ceph:mon1,osd1-3和ceph-admin - 安装将需要一些时间。
现在在mon1节点上部署监视器节点。
ceph-deploy mon create-initial
该命令将创建一个监视器密钥,使用此ceph命令检查密钥。
ceph-deploy gatherkeys mon1
将OSDS添加到群集
在所有节点上安装Ceph之后,现在我们可以将OSD守护程序添加到集群中。 OSD守护进程将在磁盘/ dev / sdb上创建数据和日志分区。
检查所有osd节点上的可用磁盘/ dev / sdb。
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
您将看到/ dev / sdb与我们之前创建的XFS格式。
接下来,使用zap选项删除所有节点上的分区表。
ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
该命令将删除Ceph OSD节点上/ dev / sdb上的所有数据。
现在准备所有OSD节点,并确保结果中没有错误。
ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
当您看到ceph-osd1-3已准备好在结果中使用OSD时,则该命令成功。
使用以下命令激活OSD:
ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb
现在可以再次检查OSDS节点上的sdb磁盘。
ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3
结果是/ dev / sdb现在有两个分区:
- / dev / sdb1 - Ceph数据
- / dev / sdb2 - Ceph Journal
或者您直接在OSD节点上查看。
ssh ceph-osd1
sudo fdisk -l /dev/sdb
接下来,将管理密钥部署到所有关联的节点。
ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3
通过在所有节点上运行以下命令来更改密钥文件的权限。
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
Ubuntu 16.04上的Ceph Cluster已创建。
第6步 - 测试Ceph
在第4步中,我们安装并创建了一个新的Ceph集群,并将OSDS节点添加到集群。 现在我们应该测试集群,以确保它按照预期工作。
从ceph-admin节点登录到Ceph监视服务器' mon1 '。
ssh mon1
运行以下命令以检查群集运行状况。
sudo ceph health
现在检查集群状态。
sudo ceph -s
您可以看到以下结果:
确保Ceph健康状况正常 ,并且有一个监视器节点' mon1 ',IP地址为“ 10.0.15.11 ”。 有3台OSD服务器,所有这些都是启动和运行的,应该有可用的磁盘空间为45GB - 3x15GB Ceph Data OSD分区。
我们在Ubuntu 16.04上成功构建了一个新的Ceph集群。