B.2. 手动安装 Ceph Manager
通常,在部署 Red Hat Ceph Storage 集群时,Ansible 自动化实用程序会安装 Ceph Manager 守护进程 (ceph-mgr
)。但是,如果您不使用 Ansible 管理红帽 Ceph 存储,您可以手动安装 Ceph Manager。红帽建议在同一节点上并置 Ceph 管理器和 Ceph 监控守护进程。
先决条件
- 正常工作的 Red Hat Ceph Storage 集群
-
root
或sudo
访问权限 -
rhel-7-server-rhceph-3-mon-els-rpms
存储库已启用 -
如果使用防火墙,需要在公共网络上打开端口
6800-7300
流程
在要部署 ceph-mgr
的节点上,以 root 用户身份或通过
sudo
实用程序,使用以下命令。
安装
ceph-mgr
软件包:[root@node1 ~]# yum install ceph-mgr
创建
/var/lib/ceph/mgr/ceph-hostname/
目录:mkdir /var/lib/ceph/mgr/ceph-hostname
使用部署
ceph-mgr
守护进程的节点的主机名替换 hostname,例如:[root@node1 ~]# mkdir /var/lib/ceph/mgr/ceph-node1
在新创建的目录中,为
ceph-mgr
守护进程创建一个身份验证密钥:[root@node1 ~]# ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
将
/var/lib/ceph/mgr/
目录的所有者和组更改为ceph:ceph
:[root@node1 ~]# chown -R ceph:ceph /var/lib/ceph/mgr
启用
ceph-mgr
目标:[root@node1 ~]# systemctl enable ceph-mgr.target
启用并启动
ceph-mgr
实例:systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
使用部署
ceph-mgr
的节点的主机名替换 hostname,例如:[root@node1 ~]# systemctl enable ceph-mgr@node1 [root@node1 ~]# systemctl start ceph-mgr@node1
验证
ceph-mgr
守护进程是否已成功启动:ceph -s
输出将在
services
部分下包括类似如下的行:mgr: node1(active)
-
安装更多
ceph-mgr
守护进程以作为备用守护进程(如果当前活跃守护进程失败)处于活跃状态。
OSD Bootstrapping
运行初始监控器后,您可以开始添加对象存储设备 (OSD)。直到有足够的 OSD 来处理对象的副本数时,您的集群才会达到 active + clean
状态。
对象的默认副本数为三个。至少需要三个 OSD 节点:但是,如果您只需要一个对象的两个副本,因此仅添加两个 OSD 节点,然后更新 Ceph 配置文件中的 osd pool default size
和 osd pool default min size
设置。
如需了解更多详细信息,请参阅 Red Hat Ceph Storage 3 配置指南中的OSD 配置参考一节。
在引导初始监控器后,集群具有默认的 CRUSH map。但是,CRUSH map 没有任何 Ceph OSD 守护进程映射到 Ceph 节点。
要添加 OSD 到集群并更新默认的 CRUSH map,请在每个 OSD 节点上执行以下内容:
启用 Red Hat Ceph Storage 3 OSD 存储库:
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
以
root
用户身份,在 Ceph OSD 节点上安装ceph-osd
软件包:# yum install ceph-osd
将 Ceph 配置文件和管理密钥环文件从初始 Monitor 节点复制到 OSD 节点:
语法
# scp <user_name>@<monitor_host_name>:<path_on_remote_system> <path_to_local_file>
示例
# scp root@node1:/etc/ceph/ceph.conf /etc/ceph # scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph
为 OSD 生成通用唯一标识符 (UUID):
$ uuidgen b367c360-b364-4b1d-8fc6-09408a9cda7a
以
root
用户身份,创建 OSD 实例:语法
# ceph osd create <uuid> [<osd_id>]
示例
# ceph osd create b367c360-b364-4b1d-8fc6-09408a9cda7a 0
注意此命令输出后续步骤所需的 OSD 编号标识符。
以
root
用户身份,为新 OSD 创建默认目录:语法
# mkdir /var/lib/ceph/osd/<cluster_name>-<osd_id>
示例
# mkdir /var/lib/ceph/osd/ceph-0
以
root
用户身份,准备好将驱动器用作 OSD,并将它挂载到您刚才创建的目录中。为 Ceph 数据和日志创建一个分区。日志和数据分区可以位于同一磁盘上。这个示例使用 15 GB 磁盘:语法
# parted <path_to_disk> mklabel gpt # parted <path_to_disk> mkpart primary 1 10000 # mkfs -t <fstype> <path_to_partition> # mount -o noatime <path_to_partition> /var/lib/ceph/osd/<cluster_name>-<osd_id> # echo "<path_to_partition> /var/lib/ceph/osd/<cluster_name>-<osd_id> xfs defaults,noatime 1 2" >> /etc/fstab
示例
# parted /dev/sdb mklabel gpt # parted /dev/sdb mkpart primary 1 10000 # parted /dev/sdb mkpart primary 10001 15000 # mkfs -t xfs /dev/sdb1 # mount -o noatime /dev/sdb1 /var/lib/ceph/osd/ceph-0 # echo "/dev/sdb1 /var/lib/ceph/osd/ceph-0 xfs defaults,noatime 1 2" >> /etc/fstab
以
root
用户身份,初始化 OSD 数据目录:语法
# ceph-osd -i <osd_id> --mkfs --mkkey --osd-uuid <uuid>
示例
# ceph-osd -i 0 --mkfs --mkkey --osd-uuid b367c360-b364-4b1d-8fc6-09408a9cda7a ... auth: error reading file: /var/lib/ceph/osd/ceph-0/keyring: can't open /var/lib/ceph/osd/ceph-0/keyring: (2) No such file or directory ... created new key in keyring /var/lib/ceph/osd/ceph-0/keyring
注意在使用
--mkkey
选项运行ceph-osd
之前,目录必须为空。如果您有自定义集群名称,ceph-osd
实用程序需要--cluster
选项。以
root
身份,注册 OSD 身份验证密钥。如果集群名称与ceph
不同,请插入集群名称:语法
# ceph auth add osd.<osd_id> osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/<cluster_name>-<osd_id>/keyring
示例
# ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring added key for osd.0
以
root
用户身份,将 OSD 节点添加到 CRUSH map:语法
# ceph [--cluster <cluster_name>] osd crush add-bucket <host_name> host
示例
# ceph osd crush add-bucket node2 host
以
root
用户身份,将 OSD 节点放在default
CRUSH 树下:语法
# ceph [--cluster <cluster_name>] osd crush move <host_name> root=default
示例
# ceph osd crush move node2 root=default
以
root
用户身份,将 OSD 磁盘添加到 CRUSH map语法
# ceph [--cluster <cluster_name>] osd crush add osd.<osd_id> <weight> [<bucket_type>=<bucket-name> ...]
示例
# ceph osd crush add osd.0 1.0 host=node2 add item id 0 name 'osd.0' weight 1 at location {host=node2} to crush map
注意您也可以解译 CRUSH map,并将 OSD 添加到设备列表中。将 OSD 节点添加为 bucket,然后将设备添加为 OSD 节点中的项目,为 OSD 分配一个权重,重新编译 CRUSH map,并且设置 CRUSH map。如需了解更多详细信息,请参阅 Red Hat Ceph Storage 3 的存储策略指南中的编辑 CRUSH map 部分。
以
root
用户身份,更新新创建的目录和文件的所有者和组权限:语法
# chown -R <owner>:<group> <path_to_directory>
示例
# chown -R ceph:ceph /var/lib/ceph/osd # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown -R ceph:ceph /etc/ceph
对于带有自定义名称的存储集群,以
root
用户身份在/etc/sysconfig/ceph
文件中添加以下行:语法
# echo "CLUSTER=<custom_cluster_name>" >> /etc/sysconfig/ceph
示例
# echo "CLUSTER=test123" >> /etc/sysconfig/ceph
OSD 节点位于 Ceph 存储集群配置中。不过,OSD 守护进程为
down
和in
。新 OSD 的状态必须为up
后才能开始接收数据。以root
用户身份,启用并启动 OSD 过程:语法
# systemctl enable ceph-osd.target # systemctl enable ceph-osd@<osd_id> # systemctl start ceph-osd@<osd_id>
示例
# systemctl enable ceph-osd.target # systemctl enable ceph-osd@0 # systemctl start ceph-osd@0
启动 OSD 守护进程后,它就为
up
和in
。
现在,您已启动并运行 Monitor 和一些 OSD。您可以执行以下命令来观察放置组对等点:
$ ceph -w
要查看 OSD 树,请执行以下命令:
$ ceph osd tree
示例
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 2 root default -2 2 host node2 0 1 osd.0 up 1 1 -3 1 host node3 1 1 osd.1 up 1 1
若要通过添加新 OSD 到存储集群来扩展存储容量,请参阅 Red Hat Ceph Storage 3 管理指南中的添加 OSD 部分。