如何在Ubuntu 18.04 LTS上安装Ceph存储群集
在本教程中,我们将介绍Ubuntu 18.04 LTS服务器上全功能Ceph存储群集的安装和配置。
Ceph是一个开源存储解决方案,它实现了分布式对象存储群集,并为对象,块和文件级存储提供接口。
ceph存储群的组件
Ceph存储群体的基本组件:Ceph显示器( ceph-mon
)维护群集状态的地图,包括监视器地图,管理器地图,OSD映射和Crush Mapceph OSD:Ceph OSD(对象存储守护程序, ceph-osd
)存储数据,处理数据复制,恢复,重新平衡,并通过检查用于心跳的其他CephOSD守护进程来向Ceph监视器和管理器提供一些监控信息。
冗余和高可用性,通常需要至少3个Ceph OSD.mds:Ceph元数据服务器(MDS, ceph-mds
)代表Ceph文件系统(即,Ceph块设备和Ceph对象存储不使用MDS)存储元数据。
Ceph元数据服务器允许POSIX文件系统用户执行基本命令(如, ls, find
等等)在没有对Ceph存储群体放置巨大的负担。
\经理:Cephoner Manager守护进程( ceph-mgr
)负责跟踪运行时度量标准和Ceph集群的当前状态,包括存储利用率,当前性能度量和系统负载。
在Ubuntu 18.04架构上的Ceph集群
我的Ceph Cluster Deployment基于以下系统图
每个服务器的主机名应相应设置,并且 /etc/hosts
文件配置为如下图所示,所有Ceph群集节点:
192.168.18.70 rgw.example.com rgw 192.168.18.71 mon01.example.com mon01 192.168.18.72 mon02.example.com mon02 192.168.18.73 mon03.example.com mon03 192.168.18.75 osd01.example.com osd01 192.168.18.76 osd02.example.com osd02 192.168.18.77 osd03.example.com osd03
更改主机名和IP地址以适合设置。
作为准备工作,请确保系统已更新
sudo apt update sudo apt -y upgrade sudo reboot
重新启动系统后,我们可以开始Ceph集群部署。
建议有一个额外的节点,其工作在所有Ceph节点上部署Ceph。
调用此节点 admin node
192.168.18.74 ceph-admin.example.com ceph-admin
准备Ceph admin节点
我们需要将Ceph存储库添加到Ceph Deploy Admin节点,然后安装Ceph Deploy Package。
我的管理节点是IP 192.168.18.74
导入存储库键
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add
将Ceph存储库添加到系统中。
这个安装会做Ceph nautilus
echo deb https://download.ceph.com/debian-nautilus/$(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
更新存储库并安装Ceph-Deploy:
sudo apt update sudo apt -y install ceph-deploy
准备Ceph节点
管理节点必须具有 password-less
ssh访问ceph节点。
当Ceph-Deploy登录到Ceph节点时,该特定用户必须具有无密码sudo权限。
在所有Ceph节点上添加SSH用户 - rgw,osd nodes & Monitor
S.
export USER_NAME="ceph-admin" export USER_PASS="Hyman@theitroad" sudo useradd --create-home -s /bin/bash ${USER_NAME} echo "${USER_NAME}:${USER_PASS}"|sudo chpasswd echo "${USER_NAME} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/${USER_NAME} sudo chmod 0440 /etc/sudoers.d/${USER_NAME}
确认用户可以在没有密码提示符的情况下运行sudo
Hyman@theitroad:~$su - ceph-admin Password: Hyman@theitroad:~$sudo su Hyman@theitroad:~#
生成SSH键 ceph-admin
节点,但不要使用sudo或者root用户。
将密码留空:
# su - ceph-admin $ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ceph-admin/.ssh/id_rsa): Created directory '/home/ceph-admin/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ceph-admin/.ssh/id_rsa. Your public key has been saved in /home/ceph-admin/.ssh/id_rsa.pub. The key fingerprint is: SHA256:DZZdfRS1Yo+unWAkDum7juShEF67pm7VdSkfWlsCpbA Hyman@theitroad The key's randomart image is: +---[RSA 2048]----+ | . .. .. o=| | o..o . . o| | E .= o o o | | +.O .. + | | . .. .oS.*. . . | |. o.....ooo . | | o.. o . . o . | | ...= o . . + . | |oooo o.+. . o | +----[SHA256]-----+ $ls /home/ceph-admin/.ssh/ config id_rsa id_rsa.pub known_hosts
配置 ~/.ssh/config
$cat /home/ceph-admin/.ssh/config Host osd01 Hostname osd01 User ceph-admin Host osd02 Hostname osd02 User ceph-admin Host osd03 Hostname osd03 User ceph-admin Host osd01 Hostname osd01 User ceph-admin Host mon01 Hostname mon01 User ceph-admin Host mon02 Hostname mon02 User ceph-admin Host mon03 Hostname mon03 User ceph-admin Host rgw Hostname rgw User ceph-admin
将密钥复制到每个Ceph节点(从Ceph admin节点作为ceph-admin用户执行此操作)
for i in rgw mon01 mon02 mon03 osd01 osd02 osd03; do ssh-copy-id $i done
如果所有Ceph节点上的远程用户不是, ceph-admin
用正确的用户名替换它。
部署Ceph存储群集
Ceph对时钟漂移敏感,因此确保我们在所有Ceph节点上设置NTP,尤其是监视器。
sudo apt install ntp
我们要创建一个三个Ceph节点集群 one
ceph显示器和 three
cephosd守护进程。
一旦群集到达 active + clean
状态,通过添加元数据服务器来扩展它 two
更多Ceph监视
让我们首先创建我们的目录 admin node
用于维护Ceph-Deploy为群集生成的配置文件和键。
mkdir ceph-deploy cd ceph-deploy
Ceph-Deploy实用程序将文件输出到当前目录。
在执行Ceph-Deploy时,请确保我们在此目录中。
第1步:初始化Ceph监视节点
从我们创建的Ceph-Deploy目录上运行以下命令,该命令我们创建的配置详细信息
$ceph-deploy new mon01 mon02 mon03
示例输出
Hyman@theitroad:~/ceph-deploy$ceph-deploy new mon01 mon02 mon03 [ceph_deploy.conf][DEBUG ] found configuration file at: /home/ceph-admin/.cephdeploy.conf [ceph_deploy.cli][INFO ] Invoked (2.0.1): /usr/bin/ceph-deploy new mon01 [ceph_deploy.cli][INFO ] ceph-deploy options: [ceph_deploy.cli][INFO ] username : None [ceph_deploy.cli][INFO ] verbose : False [ceph_deploy.cli][INFO ] overwrite_conf : False [ceph_deploy.cli][INFO ] quiet : False [ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7f4c0720a950> [ceph_deploy.cli][INFO ] cluster : ceph [ceph_deploy.cli][INFO ] ssh_copykey : True [ceph_deploy.cli][INFO ] mon : ['mon01'] [ceph_deploy.cli][INFO ] func : <function new at 0x7f4c07456d70> [ceph_deploy.cli][INFO ] public_network : None [ceph_deploy.cli][INFO ] ceph_conf : None [ceph_deploy.cli][INFO ] cluster_network : None [ceph_deploy.cli][INFO ] default_release : False [ceph_deploy.cli][INFO ] fsid : None [ceph_deploy.new][DEBUG ] Creating new cluster named ceph [ceph_deploy.new][INFO ] making sure passwordless SSH succeeds [mon01][DEBUG ] connected to host: ceph-admin [mon01][INFO ] Running command: ssh -CT -o BatchMode=yes mon01 [mon01][DEBUG ] connection detected need for sudo [mon01][DEBUG ] connected to host: mon01 [mon01][DEBUG ] detect platform information from remote host [mon01][DEBUG ] detect machine type [mon01][DEBUG ] find the location of an executable [mon01][INFO ] Running command: sudo /bin/ip link show [mon01][INFO ] Running command: sudo /bin/ip addr show [mon01][DEBUG ] IP addresses found: [u'192.168.18.71', u'192.168.19.71', u'192.168.121.23'] [ceph_deploy.new][DEBUG ] Resolving host mon01 [ceph_deploy.new][DEBUG ] Monitor mon01 at 192.168.18.71 [ceph_deploy.new][DEBUG ] Monitor initial members are ['mon01'] [ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.18.71'] [ceph_deploy.new][DEBUG ] Creating a random mon key... [ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring... [ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf..
第2步:安装Ceph包:
在所有节点上安装Ceph包。
ceph-deploy install mon01 mon02 mon03 osd01 osd02 osd03 rgw
Ceph-Deploy实用程序将在每个节点上安装Ceph。
示例输出
.......................... [osd03][DEBUG ] Setting up ceph-base (13.2.2-1bionic) ... [osd03][DEBUG ] Setting up python-pecan (1.2.1-2) ... [osd03][DEBUG ] update-alternatives: using /usr/bin/python2-pecan to provide /usr/bin/pecan (pecan) in auto mode [osd03][DEBUG ] update-alternatives: using /usr/bin/python2-gunicorn_pecan to provide /usr/bin/gunicorn_pecan (gunicorn_pecan) in auto mode [osd03][DEBUG ] Setting up ceph-osd (13.2.2-1bionic) ... [osd03][DEBUG ] chown: cannot access '/var/lib/ceph/osd/*/block*': No such file or directory [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-osd.target -> /lib/systemd/system/ceph-osd.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-osd.target -> /lib/systemd/system/ceph-osd.target. [osd03][DEBUG ] Setting up ceph-mds (13.2.2-1bionic) ... [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mds.target -> /lib/systemd/system/ceph-mds.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mds.target -> /lib/systemd/system/ceph-mds.target. [osd03][DEBUG ] Setting up ceph-mon (13.2.2-1bionic) ... [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mon.target -> /lib/systemd/system/ceph-mon.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mon.target -> /lib/systemd/system/ceph-mon.target. [osd03][DEBUG ] Setting up ceph-mgr (13.2.2-1bionic) ... [osd03][DEBUG ] Created symlink /etc/systemd/system/multi-user.target.wants/ceph-mgr.target -> /lib/systemd/system/ceph-mgr.target. [osd03][DEBUG ] Created symlink /etc/systemd/system/ceph.target.wants/ceph-mgr.target -> /lib/systemd/system/ceph-mgr.target. [osd03][DEBUG ] Setting up ceph (13.2.2-1bionic) ... [osd03][DEBUG ] Processing triggers for libc-bin (2.27-3ubuntu1) ... [osd03][DEBUG ] Processing triggers for ureadahead (0.100.0-20) ... [osd03][DEBUG ] Processing triggers for systemd (237-3ubuntu10) ... [osd03][INFO ] Running command: sudo ceph --version [osd03][DEBUG ] ceph version 13.2.2 (02899bfda814146b021136e9d8e80eba494e1126) mimic (stable)
第3步:部署初始监视器并收集键:
通过运行命令创建初始监视器:
ceph-deploy mon create-initial
许多键控将放在工作目录中。
部署Manager守护程序:
ceph-deploy mgr create mon01 mon02 mon03
添加元数据服务器:
ceph-deploy mds create mon01 mon02 mon03
第4步:复制Ceph Admin键
将配置文件和管理员密钥复制到管理节点和Ceph节点:
ceph-deploy admin mon01 mon02 mon03 osd01 osd02 osd03
第5步:添加三个OSD
我假设我们在每个节点中都有一个未使用的磁盘 /dev/device
。
矿井如下:
Hyman@theitroad:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 32G 0 disk |-sda1 8:1 0 487M 0 part /boot |-sda2 8:2 0 1.9G 0 part [SWAP] `-sda3 8:3 0 29.6G 0 part / vdb 252:0 0 5G 0 disk vdc 252:16 0 5G 0 disk vdd 252:32 0 5G 0 disk
我有三个设备使用:/dev/vdadev/vdbdev/vdc
确保设备目前不使用,不包含任何重要数据。
使用的语法是:
ceph-deploy osd create --data {device} {ceph-node}
在我的情况下,我会运行:
for i in vdb vdc vdd; do for j in osd01 osd02 osd03; do ceph-deploy osd create --data /dev/$i $j done done
注意:如果我们在LVM卷上创建OSD,则参数 --data
必须是 volume_group/lv_name
,而不是卷块设备的路径。
输出 lsblk
命令应该改变
# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 32G 0 disk |-sda1 8:1 0 487M 0 part /boot |-sda2 8:2 0 1.9G 0 part [SWAP] `-sda3 8:3 0 29.6G 0 part / vdb 252:0 0 5G 0 disk `-ceph--908c8792--04e8--414f--8430--faa78e9b18eb-osd--block--275c9d8b--3825--4898--9b3b--5ea080fd7137 253:0 0 5G 0 lvm vdc 252:16 0 5G 0 disk `-ceph--c79a5159--3980--47e8--b649--ed0c44d32d51-osd--block--a50c2ebc--8d65--4d16--9196--6f741606b3a2 253:1 0 5G 0 lvm vdd 252:32 0 5G 0 disk `-ceph--594ff477--943e--49d8--8e08--addf5dbccca3-osd--block--5b71bad9--7fa8--41af--a3af--48af1219aafd 253:2 0 5G 0 lvm
第6步:检查群集的健康状况。
检查Ceph集群状态
Hyman@theitroad:~# sudo ceph health HEALTH_OK Hyman@theitroad:~# sudo ceph status cluster: id: 5594514c-4d70-4ec8-a74e-e54ac2c1994f health: HEALTH_OK services: mon: 1 daemons, quorum mon01 mgr: osd01(active) osd: 9 osds: 9 up, 9 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 9.0 GiB used, 36 GiB/45 GiB avail pgs:
添加新的Ceph监视器后,Ceph将开始同步监视器并形成仲裁。
我们可以通过执行以下操作来检查仲裁状态:
ceph quorum_status --format json-pretty
第7步:启用Ceph仪表板
启用Ceph仪表板模块:
sudo ceph mgr module enable dashboard sudo ceph mgr module ls
为仪表板生成自签名证书:
sudo ceph dashboard create-self-signed-cert
为仪表板创建用户:
sudo ceph dashboard ac-user-create admin 'Hyman@theitroad' administrator
启用对象网关管理前端:
$sudo radosgw-admin user create --uid=admin --display-name='Ceph Admin' --system
最后,向仪表板提供凭据:
sudo ceph dashboard set-rgw-api-access-key <api-access-key> sudo ceph dashboard set-rgw-api-secret-key <api-secret-key>
如果我们在对象网关设置中使用自签名证书,那么我们应该禁用证书验证:
sudo ceph dashboard set-rgw-api-ssl-verify False
第8步:添加Rados Gateway
要使用Ceph的Ceph对象网关组件,必须部署RGW的实例。
执行以下内容以创建RadoS网关的新实例:
$ceph-deploy rgw create {gateway-node}
例子:
$ceph-deploy rgw create rgw
默认情况下,RGW实例将侦听端口 7480
。
这可以通过编辑来更改 ceph.conf
在运行RGW的节点上如下:
[client] rgw frontends = civetweb port=80
重置Ceph集群
如果在任何点钟遇到麻烦并且我们想要重新开始,请执行以下内容以清除Ceph包,并删除所有数据和配置:
ceph-deploy purge {ceph-node} [{ceph-node}] ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys rm ceph.*
如果执行Purge,则必须重新安装Ceph。
最后一个RM命令删除了在以前的安装期间本地通过CEPH-部署的任何文件。