6-20 743 views
虚拟机系统:CentOS 7.6 Ceph版本:Mimic
准备阶段
1.将Ceph存储库添加到ceph-deploy
管理节点。然后,安装 ceph-deploy
安装并启用Extra Packages for Enterprise Linux(EPEL)存储库:
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
将Ceph存储库写入/etc/yum.repos.d/ceph.repo中。替换 {ceph-stable-release}
为稳定的Ceph版本(例如,mimic
。)
[ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-{ceph-stable-release}/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc
如果后面发现速度过慢,可换国内源:
[Ceph] name=Ceph packages for $basearch baseurl=http://mirrors.163.com/ceph/rpm-{ceph-stable-release}/el7/$basearch enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.163.com/ceph/keys/release.asc priority=1 [Ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.163.com/ceph/rpm-{ceph-stable-release}/el7/noarch enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.163.com/ceph/keys/release.asc priority=1 [ceph-source] name=Ceph source packages baseurl=http://mirrors.163.com/ceph/rpm-{ceph-stable-release}/el7/SRPMS enabled=1 gpgcheck=0 type=rpm-md gpgkey=https://mirrors.163.com/ceph/keys/release.asc priority=1
更新您的存储库并安装ceph-deploy
:
sudo yum update sudo yum install ceph-deploy
如果搭建的是单节点Ceph集群,可以直接跳到5。
2.(推荐)安装NTP
sudo yum install ntp ntpdate ntp-doc
3.创建ceph-deploy用户
该ceph-deploy
实用程序必须以具有无密码sudo
权限的用户身份登录到Ceph节点,因为它需要在不提示输入密码的情况下安装软件和配置文件。
在Ceph集群的所有节点上为ceph-deploy
创建一个用户,并且不要使用“ceph”作为用户名。在集群使用统一的用户名可以提高易用性(不要求),但你应该避免使用明显的用户名,因为黑客通常使用暴力尝试它们(例如root
, admin
,{productname}
)。以下过程(替换 {username}
您定义的用户名)描述了如何使用无密码创建用户sudo
。
注意:从Infernalis版本开始,“ceph”用户名是为Ceph守护进程保留的。如果Ceph节点上已存在“ceph”用户,则必须在尝试升级之前删除该用户。
在每个Ceph节点上创建一个新用户。
ssh user@ceph-server sudo useradd -d /home/{username} -m {username} sudo passwd {username}
对于添加到每个Ceph节点的新用户,请确保该用户具有 sudo
权限。
echo "{username} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{username} sudo chmod 0440 /etc/sudoers.d/{username}
4.启用无密码SSH
由于ceph-deploy
不会提示输入密码,因此必须在admin节点上生成SSH密钥,并将公钥分发给每个Ceph节点。ceph-deploy
将尝试为初始监视器生成SSH密钥。
生成SSH密钥,但不要使用sudo
或 root
用户。将密码保留为空:
ssh-keygen Generating public/private key pair. Enter file in which to save the key (/ceph-admin/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /ceph-admin/.ssh/id_rsa. Your public key has been saved in /ceph-admin/.ssh/id_rsa.pub.
将密钥复制到每个Ceph节点,替换{username}
为您上一步中创建的用户名。
ssh-copy-id {username}@node1 ssh-copy-id {username}@node2 ssh-copy-id {username}@node3
(推荐)修改管理节点的~/.ssh/config
文件,以便ceph-deploy
能够以您创建的用户身份登录Ceph节点,而无需在每次执行时指定。替换{username}
为您上一步中创建的用户名。
Host node1 Hostname node1 User {username} Host node2 Hostname node2 User {username} Host node3 Hostname node3 User {username}
5.确保网络连接
确保能ping通短主机名(hostname -s),做好主机名的解析(写入/etc/hosts)。
6.打开相关端口
这里我为了省事直接关闭了防火墙。
systemctl stop firewalld systemctl disable firewalld
7.SELinux
在CentOS上,SELinux默认是Enforcing状态,为了简化安装,我们建议将它设置为Permissive或彻底关闭。
执行以下命令以将其设置为Permissive:
sudo setenforce 0
8.安装EPEL
sudo yum install yum-plugin-priorities
存储集群搭建阶段
在管理节点上创建一个目录,以维护为集群生成的配置文件和密钥。
mkdir my-cluster cd my-cluster
ceph-deploy
将把输出文件存放在当前目录,所以确保在这个文件夹中执行ceph-deploy
。
0.从头再来。
如果您遇到麻烦并且想要重新开始,请执行以下操作以清除Ceph软件包,并清除其所有数据和配置:
ceph-deploy purge {ceph-node} [{ceph-node}] ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys rm -rf *
如果执行purge
,则必须重新安装Ceph。最后一个rm
命令删除在先前安装期间由本地ceph-deploy写出的所有文件。
1.创建一个集群
ceph-deploy new {initial-monitor-node(s)}
将node(s)替换成主机名,例如:
ceph-deploy new node1
使用 ls
和cat
检查ceph-deploy
在当前目录中的输出。您应该看到Ceph配置文件(ceph.conf
),监视器密钥环(ceph.mon.keyring
)和新集群的日志文件。
为了省事,确保只有一个网络接口,(所有安装完成后)关闭ipv6。如有需要请参考官方文档。
2.安装Ceph
ceph-deploy install {ceph-node} [...]
例如:
ceph-deploy install node1
ceph-deploy
将在列出的每个节点上安装Ceph。
不出意外,在这一步将发生报错。如果发生,请执行:
sudo yum remove ceph-release.noarch
之后在/etc/yum.repo.d/中将ceph.repo.rpmnew重命名为ceph.repo。
重新尝试安装可能会因为网速过慢而导致超时,所以我们提前手动安装。
sudo yum install ceph
然后再尝试安装应该就可以成功了。
3.部署初始mon并收集密钥
ceph-deploy mon create-initial
使用ceph-deploy
将配置文件和管理密钥复制到您的管理节点和Ceph节点。
ceph-deploy admin {ceph-node(s)}
例如:
ceph-deploy admin node1
4.添加mgr
ceph-deploy mgr create node1 *Required only for luminous+ builds, i.e >= 12.x builds*
仅适用于luminous以上版本。
5.添加三个OSD
我们假设您在每个节点中都有一个未使用的磁盘/dev/vdb
。 确保设备当前未使用且不包含任何重要数据。
ceph-deploy osd create --data {device} {ceph-node}
本例中:
ceph-deploy osd create --data /dev/sdb node1 ceph-deploy osd create --data /dev/sdc node1 ceph-deploy osd create --data /dev/sdd node1
6.检查群集的运行状况
sudo ceph health
您的集群应该报告HEALTH_OK
。您可以使用以下命令查看更完整的集群状态:
sudo ceph -s
7.添加MDS
要使用CephFS,您至少需要一个元数据服务器。执行以下操作以创建元数据服务器:
ceph-deploy mds create {ceph-node}
例如:
ceph-deploy mds create node1
因为我们是单节点Ceph集群,所以不需要更多mon,也没有mgr备份。
8.添加RGW
要使用Ceph对象网关组件,必须部署RGW实例。执行以下命令以创建RGW的新实例:
ceph-deploy rgw create {gateway-node}
例如:
ceph-deploy rgw create node1
文件系统搭建阶段
确保存储集群运行在 active+clean
状态且至少有一个运行中的MDS。
1.在ceph-client节点上安装Ceph
使用ceph-deploy:
ceph-deploy install ceph-client
2.创建文件系统
上一步中,您已经创建了MDS,但在创建pool和文件系统之前它不会变为活动状态。
ceph osd pool create cephfs_data <pg_num> ceph osd pool create cephfs_metadata <pg_num> ceph fs new <fs_name> cephfs_metadata cephfs_data
例如:
sudo ceph osd pool create cephfs_data 8 sudo ceph osd pool create cephfs_metadata 8 sudo ceph fs new cephfs cephfs_metadata cephfs_data
这时候会发现100% pgs not active并且mds一直处于creating状态,执行以下命令:
cd /etc/ceph/ sudo ceph osd getcrushmap -o /etc/ceph/crushmap sudo crushtool -d /etc/ceph/crushmap -o /etc/ceph/crushmap.txt sudo sed -i 's/step chooseleaf firstn 0 type host/step chooseleaf firstn 0 type osd/' /etc/ceph/crushmap.txt sudo grep 'step chooseleaf' /etc/ceph/crushmap.txt /*出现step chooseleaf firstn 0 type osd*/ sudo crushtool -c /etc/ceph/crushmap.txt -o /etc/ceph/crushmap-new sudo ceph osd setcrushmap -i /etc/ceph/crushmap-new
这时候再查看集群状态会发现HEALTH_OK
,mds已经处于active
状态,100% pgs active+clean
。
要增加pool的pg_num,可使用ceph osd pool set {pool-name} pg_num {x}
命令。(只能增加不能减少)
如果要减少pg_num,只能删除cephfs和pool重新再来,在ceph.conf里添加mon_allow_pool_delete = true
,并重启。
然后执行以下命令删除cephfs和pool:(数据会销毁且不可撤销)
systemctl stop ceph-mds@node1 sudo ceph fs rm cephfs --yes-i-really-mean-it sudo ceph osd pool rm cephfs_data cephfs_data --yes-i-really-really-mean-it sudo ceph osd pool rm cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it systemctl start ceph-mds@node1
3.身份验证
Ceph存储集群在默认情况下启用身份验证的情况下运行。为了省事,可以把my-cluster和/etc/ceph/中的ceph.conf中的cephx改成none来禁用它。
禁用后需要重启,否则可能会连不上集群。
如果需要启用身份验证,请参考官方文档。
文件系统挂载阶段
作为内核驱动器挂载
sudo mkdir /mnt/mycephfs sudo mount -t ceph {ip-address-of-monitor}:6789:/ /mnt/mycephfs
如果您没有禁用身份验证,保持默认开启,需要提供用户名和秘密文件,例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret
将CephFS挂载为用户空间(FUSE)中的文件系统
sudo mkdir ~/mycephfs sudo ceph-fuse -m {ip-address-of-monitor}:6789 ~/mycephfs
如果您没有禁用身份验证,保持默认开启,且密钥环不在默认位置(/etc/ceph),需要手动指定
sudo ceph-fuse -k ./ceph.client.admin.keyring -m 192.168.0.1:6789 ~/mycephfs
- Ceph客户端缓存一致性分析 - 2019年6月21日
- CephFS:什么是CAPS? - 2019年6月21日
- Ceph集群快速搭建教程 - 2019年6月20日