CentOS Linux release 8.1.1911 (Core) ___(server版)
Python 3.6.8
podman version 1.4.2-stable2
chronyc (chrony) version 3.5 (+READLINE +SECHASH +IPV6 +DEBUG)
Cephadm
部署新的ceph集群
Cephadm通过在单个主机上“引导”,将群集扩展为包含任何其他主机,然后部署所需的服务,来创建新的Ceph群集。
要求
系统化
Podman或Docker用于运行容器
时间同步(例如chrony或NTP)
用于供应存储设备的LVM2
任何现代Linux发行版都足够。依赖项将通过以下引导过程自动安装。
安装CEPHADM
该cephadm命令可以(1)引导新集群,(2)使用有效的Ceph CLI启动容器化的Shell,以及(3)调试容器化的Ceph守护进程。
有几种安装cephadm的方法:
使用curl获取独立脚本的最新版本:
# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
# chmod +x cephadm
可以使用以下命令直接从当前目录运行该脚本:
# ./cephadm <arguments...>
尽管独立脚本足以启动群集,但是cephadm在主机上安装命令很方便。要为当前的Octopus版本安装这些软件包:
yum install python
# ./cephadm add-repo --release octopus
# ./cephadm install
使用以下命令确认cephadm您的PATH中现在有以下内容:
# which cephadm
一些商业Linux发行版(例如RHEL,SLE)可能已经包括最新的Ceph软件包。在这种情况下,您可以直接安装cephadm。例如:
# dnf install -y cephadm # or
# zypper install -y cephadm
引导新的群集
您需要知道用于集群的第一个监视器守护程序的IP地址。通常,这只是第一台主机的IP。如果存在多个网络和接口,请确保选择任何可供访问Ceph群集的主机访问的网络和接口。
要引导集群:
# mkdir -p /etc/ceph
# cephadm bootstrap --mon-ip *<mon-ip>*
安装完后查看 podman
# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e04e9d13b6e9 docker.io/ceph/ceph-grafana:latest /bin/sh -c grafan... 8 minutes ago Up 8 minutes ago ceph-64273444-879c-11ea-b730-005056931f74-grafana.ceph15
d0612453d791 docker.io/prom/alertmanager:latest /bin/alertmanager... 8 minutes ago Up 8 minutes ago ceph-64273444-879c-11ea-b730-005056931f74-alertmanager.ceph15
c710fa93f90c docker.io/prom/node-exporter:latest /bin/node_exporte... 9 minutes ago Up 9 minutes ago ceph-64273444-879c-11ea-b730-005056931f74-node-exporter.ceph15
a2cf52c9e6cf docker.io/prom/prometheus:latest /bin/prometheus -... 9 minutes ago Up 9 minutes ago ceph-64273444-879c-11ea-b730-005056931f74-prometheus.ceph15
ee5140a0f6a3 docker.io/ceph/ceph:v15 /usr/bin/ceph-cra... 11 minutes ago Up 11 minutes ago ceph-64273444-879c-11ea-b730-005056931f74-crash.ceph15
56883c556789 docker.io/ceph/ceph:v15 /usr/bin/ceph-mgr... 12 minutes ago Up 12 minutes ago ceph-64273444-879c-11ea-b730-005056931f74-mgr.ceph15.rfgjog
31908dc03200 docker.io/ceph/ceph:v15 /usr/bin/ceph-mon... 12 minutes ago Up 12 minutes ago ceph-64273444-879c-11ea-b730-005056931f74-mon.ceph15
ceph mgr services
创建 web 登录用户密码
ceph dashboard set-login-credentials {user-name} {password}
查看dashboard 服务端口
ceph mgr services
该命令将:
-
在本地主机上为新集群创建监视和管理器守护程序。
-
为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的
/root/.ssh/authorized_keys
文件中。 -
将与新集群进行通信所需的最小配置文件编写为
/etc/ceph/ceph.conf
。 -
将client.admin管理(特权!)秘密密钥的副本写入
/etc/ceph/ceph.client.admin.keyring
。 -
将公用密钥的副本写入
/etc/ceph/ceph.pub
。 -
默认的引导行为将对绝大多数用户起作用。请参阅下文,了解一些可能对某些用户有用的选项,或者查看所有可用选项:
cephadm bootstrap -h
/etc/ceph为了方便起见,Bootstrap会将访问新集群所需的文件写入其中 ,以便主机上安装的任何Ceph软件包(例如,访问命令行界面)都可以轻松找到它们。
但是,根本不需要使用cephadm部署的守护程序容器 /etc/ceph。使用该选项将它们放置在其他目录中(例如),避免与同一主机上的现有Ceph配置(cephadm或其他方式)潜在冲突。
--output-dir *<directory>*
.
您可以将任何初始Ceph配置选项传递到新集群,方法是将它们放置在标准ini样式的配置文件中并使用该选项。--config *<config-file>*
启用CEPH
Cephadm不需要在主机上安装任何Ceph软件包。但是,我们建议启用对ceph 命令的轻松访问。做这件事有很多种方法:
该命令在安装了所有Ceph软件包的容器中启动bash shell。默认情况下,如果在主机上找到配置文件和密钥环文件,它们将被传递到容器环境中,从而使外壳程序具有完整的功能:cephadm shell/etc/ceph
# cephadm shell
创建别名可能会有所帮助:
# alias ceph='cephadm shell -- ceph'
您可以安装ceph-common包,里面包含了所有的头孢命令,其中包括ceph,rbd,mount.ceph(用于安装CephFS文件系统)等:
# cephadm add-repo --release octopus
# cephadm install ceph-common
使用以下ceph命令确认该命令是否可访问:
# ceph -v
通过以下ceph命令确认命令可以连接到集群及其状态:
# ceph status
将主机添加到集群中
要将每个新主机添加到群集,请执行两个步骤:
在新主机的root用户的authorized_keys文件中安装集群的公共SSH密钥 :
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*
例如:
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@host2
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@host3
告诉Ceph,新节点是集群的一部分:
# ceph orch host add *newhost*
例如:
# ceph orch host add host2
# ceph orch host add host3
部署其他监视器(可选)
一个典型的Ceph集群具有三个或五个分布在不同主机上的监视守护程序。如果群集中有五个或更多节点,我们建议部署五个监视器。
当Ceph知道监视器应该使用哪个IP子网时,它可以随着群集的增长(或收缩)自动部署和扩展监视器。默认情况下,Ceph假定其他监视器应使用与第一台监视器IP相同的子网。
如果您的Ceph监视器(或整个群集)位于单个子网中,则默认情况下,当您向群集中添加新主机时,cephadm会自动最多添加5个监视器。无需其他步骤。
如果监视器应使用特定的IP子网,则可以使用以下命令以CIDR格式(例如10.1.2.0/24)配置该IP子网:
# ceph config set mon public_network *<mon-cidr-network>*
例如:
# ceph config set mon public_network 10.1.2.0/24
Cephadm仅在已在配置的子网中配置了IP的主机上部署新的监视器守护程序。
如果要调整5个监视器的默认值:
# ceph orch apply mon *<number-of-monitors>*
要将监视器部署在一组特定的主机上:
# ceph orch apply mon *<host1,host2,host3,...>*
确保在此列表中包括第一台(引导)主机。
您可以通过使用主机标签来控制运行监视器的主机。要将mon标签设置为适当的主机:
# ceph orch host label add *<hostname>* mon
要查看当前的主机和标签:
# ceph orch host ls
例如:
# ceph orch host label add host1 mon
# ceph orch host label add host2 mon
# ceph orch host label add host3 mon
# ceph orch host ls
HOST ADDR LABELS STATUS
host1 mon
host2 mon
host3 mon
host4
host5
告诉cephadm根据标签部署监视器:
# ceph orch apply mon label:mon
您可以为每个监视器和控件明确地指定IP地址或CIDR网络。要禁用自动监视器部署:
# ceph orch apply mon --unmanaged
要部署每个其他监视器:
# ceph orch daemon add mon *<host1:ip-or-network1> [<host1:ip-or-network-2>...]*
例如,要在newhost1IP地址上部署第二台监视器,10.1.2.123并newhost2在网络中部署第三台监视器10.1.2.0/24:
# ceph orch apply mon --unmanaged
# ceph orch daemon add mon newhost1:10.1.2.123
# ceph orch daemon add mon newhost2:10.1.2.0/24
部署的OSD
所有群集主机上的存储设备清单可以显示为:
# ceph orch device ls
如果满足以下所有条件,则认为存储设备可用:
设备必须没有分区。
设备不得具有任何LVM状态。
不得安装设备。
该设备不得包含文件系统。
该设备不得包含Ceph BlueStore OSD。
设备必须大于5 GB。
Ceph拒绝在不可用的设备上配置OSD。
有几种创建新OSD的方法:
告诉Ceph使用任何可用和未使用的存储设备:
# ceph orch apply osd --all-available-devices
从特定主机上的特定设备创建OSD:
# ceph orch daemon add osd *<host>*:*<device-path>*
例如:
# ceph orch daemon add osd host1:/dev/sdb
使用OSD服务规范基于设备的属性来描述要使用的设备,例如设备类型(SSD或HDD),设备型号名称,大小或设备所在的主机:
# ceph orch apply osd -i spec.yml
部署的MDS
要使用CephFS文件系统,需要一个或多个MDS守护程序。如果使用较新的 界面来创建新的文件系统,则会自动创建这些文件。有关更多信息,请参见FS卷和子卷。ceph fs volume
部署元数据服务器:
# ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
有关放置规范的详细信息,请参见放置规范。
部署RGWS
Cephadm将radosgw部署为管理特定领域和区域的守护程序的集合。(有关领域和区域的更多信息,请参见Multi-Site。)
请注意,使用cephadm时,radosgw守护程序是通过监视器配置数据库而不是通过ceph.conf或命令行来配置的。如果该配置尚未就绪(通常在本 client.rgw.<realmname>.<zonename>节中),那么radosgw守护程序将使用默认设置(例如,绑定到端口80)启动。
如果尚未创建领域,请首先创建一个领域:
# radosgw-admin realm create --rgw-realm=<realm-name> --default
接下来创建一个新的区域组:
# radosgw-admin zonegroup create --rgw-zonegroup=<zonegroup-name> --master --default
接下来创建一个区域:
# radosgw-admin zone create --rgw-zonegroup=<zonegroup-name> --rgw-zone=<zone-name> --master --default
为特定领域和区域部署一组radosgw守护程序:
# ceph orch apply rgw *<realm-name>* *<zone-name>* --placement="*<num-daemons>* [*<host1>* ...]"
例如,要 在myhost1和myhost2上部署两个服务于myorg领域和us-east-1区域的rgw守护程序:
# radosgw-admin realm create --rgw-realm=myorg --default
# radosgw-admin zonegroup create --rgw-zonegroup=default --master --default
# radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=us-east-1 --master --default
# ceph orch apply rgw myorg us-east-1 --placement="2 myhost1 myhost2"
有关放置规范的详细信息,请参见放置规范。
部署NFS GANESHA
Cephadm使用预定义的RADOS 池 和可选的名称空间部署NFS Ganesha
要部署NFS Ganesha网关,请执行以下操作:
# ceph orch apply nfs *<svc_id>* *<pool>* *<namespace>* --placement="*<num-daemons>* [*<host1>* ...]"
例如,同一个服务ID部署NFS FOO,将使用RADOS池NFS的象头和命名空间NFS-NS,:
# ceph orch apply nfs foo nfs-ganesha nfs-ns
注意 如果nfs-ganesha池不存在,请首先创建它。
网友评论