如何在Ubuntu 16.04上创建Ceph存储群集
Ceph是近年来最令人兴奋的开源存储技术之一。
本文将提供有关如何创建基本CEPH STROAGE集群的分步教程。
这已经在Ubuntu 16.04上进行了测试。
请注意,除非另有说明,否则所有命令都以root身份执行。
另请注意,当此文档提到"所有Ceph节点"时,这也包括管理节点。
一般设置
在我们的示例中,我们将创建一个基本的三个节点Ceph集群,每个Ceph集群都有两个OSD。
我们将使用主机名约定"Storage-X",其中"x"是1到3的数字,用于引用特定节点。
我们将使用外部计算机(可以是我们自己的计算机或者笔记本电脑)作为Ceph admin节点。
网络设置
每个节点将位于相同的专用网络上,通过该网关可以访问Internet。
管理节点也应该在同一网络上,但不需要一直在网络上使用。
因此,工作计算机可以是管理节点,并且可以使用VPN连接到Ceph节点的网络。
CEPH使用TCP端口6789用于Ceph监视节点和11800-7100的Ceph OSD到公共区域。
例如,在iptables上:
sudo iptables -A INPUT -i {iface} -p tcp -s {ip-address}/{netmask} --dport 6789 -j ACCEPT
准备节点
每个存储节点都需要同步,因此我们将在它们上安装NTP,并确保我们可以通过网络通过SSH访问它们。
sudo apt install ntp ssh
确保每个Ceph节点的主机名都可以从所有Ceph节点解析。
在每个Ceph节点上,编辑/etc/hosts文件并添加以下内容:
[Admin Node IP Address] admin-node [Storage-1 IP Address] Storage-1 [Storage-2 IP Address] Storage-2 [Storage-3 IP Address] Storage-3
相应地替换每个节点的IP地址。
要测试解决方案是否有效,请执行以下操作:
ping admin-node ping Storage-1 ping Storage-2 ping Storage-3
确保管理员节点主机名解析为管理节点的外部网络IP地址,而不是环回IP地址(127.0.0.1)。
在每个Ceph节点(意味着管理节点和所有存储节点)上,我们将添加Ceph Ubuntu包存储库,然后使用新的存储库的内容更新本地缓存:
wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add echo deb http://download.ceph.com/debian-{ceph-stable-release}/$(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list apt-get update
在所有Ceph节点上创建一个Cephadmin用户。
此用户将用于在整个节点群集上安装和管理Ceph,因此请务必将凭据的安全性最大限度地提高到此用户。
ssh-keygen -t rsa
useradd cephadmin
设置密码少SSH
来自管理节点的Ceph安装脚本和工具需要能够无密码访问群集的所有成员。
在管理节点上,切换到Cephadmin用户并创建一个SSH密钥:
将生成的SSH键复制到三个存储节点:
ssh-copy-id Storage-1 ssh-copy-id Storage-2 ssh-copy-id Storage-3
作为管理节点上的Cephadmin用户,测试如果无密码SSH现在正常工作:
ssh Storage-1 ssh Storage-2 ssh Storage-3
设置密码的sudo
现在,通过SSH设置密码访问,在所有Ceph节点上为Cephadmin用户配置无密码sudo:
visudo
我们应该看到以下内容:
## This file MUST be edited with the 'visudo' command as root. ## Please consider adding local content in /etc/sudoers.d/instead of # directly modifying this file. ## See the man page for details on how to write a sudoers file. #Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group Jan gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
在底部添加以下行:
cephadmin ALL=(ALL) NOPASSWD: ALL
这现在应该允许所有Ceph节点上的Cephadmin用户的无密码sudo。
安装ceph-deploy
Ceph-Deploy是由Ceph开发人员创建的工具,以便通过脚本部署节点所需的单个步骤来促进Ceph集群的快速部署。
我们将通过在管理节点上安装工具来利用此功能。
apt install ceph-deploy
在管理节点上,切换到教程第1部分中创建的Cephadmin用户,切换到主目录,并创建一个子目录,该子目录将用于包含部署和管理我们的Ceph集群所需的所有文件:
su cephadmin cd mkdir my-first-ceph-cluster cd my-first-ceph-cluster
此时,要执行的所有部署命令只能从/Home/Cephadmin/My-First-Ceph-Cluster完成。
管理命令也将从同一目录中完成。
ceph配置
将所有存储节点分配为监视节点:
ceph-deploy new Storage-1 Storage-2 Storage-3
在工作目录中,我们现在应该看到文件已通过Ceph-Deploy生成,包括键控文件和Ceph配置文件。
将以下行添加到Ceph.conf文件:
osd pool default size = 2
由于我们集群中只有两个存储节点只有两个OSD,因此它将允许Ceph对我们存储的每个数据的单一另外副本满意。
将以下行添加到Ceph.conf:
public network = {ip-address}/{netmask}
我们将其中替换具有实际值的网络部件。
例如,如果存储节点在192.168.1.0/24网络上,则应为值。
在提到"公共网络"时不要困惑;它只指的是Ceph集群外部的网络。
本教程未涵盖内部复制网络。
部署Ceph.
现在将安装软件和配置文件并将其复制到Ceph节点。
ceph-deploy install admin-node Storage-1 Storage-2 Storage-3
这将为节点安装所有基本CEPH包。
安装和配置Ceph Monitor软件到存储节点:
ceph-deploy mon create-initial
Ceph OSDS.
虽然可以使用目录作为OSDS,但不建议在生产设置中。
假设要在每个存储节点上使用的Ceph OSDS为/dev/sda和/dev/sdb,我们有ceph准备磁盘使用。
警告:以下命令将在指定的OSD上销毁现有数据,因此应注意执行命令中没有错误。
ceph-deploy osd prepare Storage-1:/dev/sda ceph-deploy osd prepare Storage-1:/dev/sdb ceph-deploy osd prepare Storage-2:/dev/sda ceph-deploy osd prepare Storage-2:/dev/sdb ceph-deploy osd prepare Storage-3:/dev/sda ceph-deploy osd prepare Storage-3:/dev/sdb
如果前面的命令运行而没有任何错误,则OSD已准备就绪,我们现在可以将它们激活为群集中的运行资源:
ceph-deploy osd activate Storage-1:/dev/sda ceph-deploy osd activate Storage-1:/dev/sdb ceph-deploy osd activate Storage-2:/dev/sda ceph-deploy osd activate Storage-2:/dev/sdb ceph-deploy osd activate Storage-3:/dev/sda ceph-deploy osd activate Storage-3:/dev/sdb
最后确定
将管理员键库复制到每个Ceph节点,以便在每个节点上进行Ceph管理:
ceph-deploy admin admin-node Storage-1 Storage-2 Storage-3
检查所有存储节点上所有OSD的状态:
ceph osd tree
检查Ceph集群的整体状态:
ceph health
如果你得到一个
HEALTH_OK
这意味着群集正在正常工作。
如果要查看更多群集统计信息,则以下命令应执行以下操作:
ceph status