在CentOS 8上设置Ceph 15(Octopus)存储集群

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

将指南下载为PDF

关门
这是续集。

这是续集。
这是续集。

本教程显示了如何在CentOS 8 Linux服务器上安装和配置Ceph存储集群。 Ceph是一个开源,可大规模扩展的简单存储解决方案,它实现了分布式对象存储集群,并为对象,块和文件级存储提供了接口。 CentOS 8上的Ceph 15(Octopus)存储集群安装使用Ansible作为自动部署方法。

Ceph集群组件

Ceph存储集群基本组件

  • 监控器:Ceph监视器(ceph-mon)维护集群状态图,包括监视器图,管理器图,OSD图和CRUSH图
  • Ceph OSD:Ceph OSD(对象存储守护程序, ceph-osd它通过存储数据,处理数据复制,恢复,重新平衡以及检查其他Ceph OSD守护进程的心跳信号,向Ceph监视器和管理器提供监视信息。通常,至少需要3个Ceph OSD才能实现冗余和高可用性。
  • 数据表:Ceph元数据服务器(MDS, ceph-mds代表Ceph文件系统存储元数据(即Ceph块设备和Ceph对象存储不使用MDS)。 Ceph元数据服务器允许POSIX文件系统用户执行基本命令(ls, find 等等),而不会给Ceph存储集群带来沉重负担。
  • 塞夫 经理:Ceph Manager守护进程(ceph-mgr)跟踪运行时指标,例如存储利用率,当前性能指标,系统负载以及Ceph集群的当前状态。

CentOS 8上的Ceph Storage Cluster安装基于以下系统设计。

伺服器 名称CEPH组件服务器规格
cephadmin头颅2GB RAM,1V CPU
cephmon01Ceph监控器8GB RAM,4vPcus
cephmon01Ceph MON,MGR,MDS8GB RAM,4vPcus
cephmon01Ceph MON,MGR,MDS8GB RAM,4vPcus
头孢膦01Ceph OSD16GB RAM,8vpcus
头孢磷02Ceph OSD16GB RAM,8vpcus
头孢磷03Ceph OSD16GB RAM,8vpcus

cephadmin 该节点用于在CentOS 8上部署Ceph存储集群。

步骤1:准备所有节点-ceph-ansible,OSD,MON,MGR,MDS

您需要按照以下步骤准备所有节点。

  • 为每个服务器设置正确的主机名
  • 设置正确的时间并配置实时NTP服务
  • 将主机名和IP地址添加到DNS服务器或更新/ etc /所有服务器上的主机

例子 / etc /主机 每个主机的内容。

sudo tee -a /etc/hosts<

完成上述任务后,安装基本软件包。

sudo dnf update
sudo dnf install vim bash-completion tmux

升级后重新启动每个服务器。

sudo dnf -y update && sudo reboot

步骤2:准备Ceph管理节点

登录管理节点。

$ ssh [email protected]

添加EPEL存储库。

sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo dnf config-manager --set-enabled PowerTools

安装Git。

sudo yum install git vim bash-completion

Ceph Ansible存储库克隆:

git clone https://github.com/ceph/ceph-ansible.git

选择要使用的ceph-ansible分支。命令语法如下:

git checkout $branch

切换到带有Ceph支持的稳定版5.0 章鱼 版本。

cd ceph-ansible
git checkout stable-5.0

安装Python pip。

sudo yum install python3-pip

使用提供的pip和requirements.txt安装Ansible和其他必需的Python库。

sudo pip3 install -r requirements.txt

确保将/ usr / local / bin路径添加到PATH。

$ echo "PATH=$PATH:/usr/local/bin" >>~/.bashrc
$ source ~/.bashrc

检查已安装的Ansible版本。

$ ansible --version
ansible 2.9.7
  config file = /root/ceph-ansible/ansible.cfg
  configured module search path = ['/root/ceph-ansible/library']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]

将SSH公钥复制到所有节点

在Ceph管理节点上设置SSH密钥对,并将公共密钥复制到 所有存储节点..

$ ssh-keygen

-- Copy pubkey, example:
for host in cephmon01 cephmon02 cephmon03 cephosd01 cephosd02 cephosd03; do
 ssh-copy-id [email protected]$host
done

在管理节点上为所有存储节点创建一个ssh配置文件。

# This is my ssh config file
$ vi ~/.ssh/config 
Host cephadmin
    Hostname 192.168.10.10
    User root
Host cephmon01
    Hostname 192.168.10.11
    User root
Host cephmon02
    Hostname 192.168.10.12
    User root
Host cephmon03
    Hostname 192.168.10.13
    User root
Host cephosd01
    Hostname 192.168.10.14
    User root
Host cephosd02
    Hostname 192.168.10.15
    User root
Host cephosd03
    Hostname 192.168.10.16
    User root
  • 主机名值 IP地址 结点 用户名 值得您安装的远程用户使用。

不使用root进行SSH时

对于普通用户安装,请启用远程用户 具有所有存储的节点 在没有密码的情况下运行sudo。

echo -e 'Defaults:user !requirettynusername ALL = (root) NOPASSWD:ALL' | sudo tee /etc/sudoers.d/ceph
sudo chmod 440 /etc/sudoers.d/ceph

哪里 用户名 将替换为在中配置的用户名 〜/ .ssh /配置 文件

配置Ansible库存和Playbook

在管理节点上创建一个Ceph Cluster组变量文件

cd ceph-ansible
cp group_vars/all.yml.sample  group_vars/all.yml
vim group_vars/all.yml

编辑文件以配置ceph集群

ceph_release_num: 15
cluster: ceph

# Inventory host group variables
mon_group_name: mons
osd_group_name: osds
rgw_group_name: rgws
mds_group_name: mdss
nfs_group_name: nfss
rbdmirror_group_name: rbdmirrors
client_group_name: clients
iscsi_gw_group_name: iscsigws
mgr_group_name: mgrs
rgwloadbalancer_group_name: rgwloadbalancers
grafana_server_group_name: grafana-server

# Firewalld / NTP
configure_firewall: True
ntp_service_enabled: true
ntp_daemon_type: chronyd

# Ceph packages
ceph_origin: repository
ceph_repository: community
ceph_repository_type: cdn
ceph_stable_release: octopus

# Interface options
monitor_interface: eth0
radosgw_interface: eth0

# DASHBOARD
dashboard_enabled: True
dashboard_protocol: http
dashboard_admin_user: admin
dashboard_admin_password: [email protected]

grafana_admin_user: admin
grafana_admin_password: [email protected]

如果群集和公用网络有单独的网络,请相应地定义它们。

public_network: "192.168.3.0/24"
cluster_network: "192.168.4.0/24"

根据需要配置其他参数。

设置OSD设备。

有三个OSD节点,每个原始块设备一个。 /开发/ SDB

$ lsblk 
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda       8:0    0 76.3G  0 disk 
├─sda1    8:1    0 76.2G  0 part /
├─sda14   8:14   0    1M  0 part 
└─sda15   8:15   0   64M  0 part /boot/efi
sdb       8:16   0   50G  0 disk 
sr0      11:0    1 1024M  0 rom  

列出要使用的OSD原始块设备。

$ cp group_vars/osds.yml.sample group_vars/osds.yml
$ vim group_vars/osds.yml
copy_admin_key: true
devices:
  - /dev/sdb

为新的ceph节点创建一个清单。

vim hosts

适当设置清单文件。以下是我的库存。通过在群集组中安装服务来修改清单组。

# Ceph admin user for SSH and Sudo
[all:vars]
ansible_ssh_user=root
ansible_become=true
ansible_become_method=sudo
ansible_become_user=root

# Ceph Monitor Nodes
[mons]
cephmon01
cephmon02
cephmon03

# MDS Nodes
[mdss]
cephmon01
cephmon02
cephmon03

# RGW
[rgws]
cephmon01
cephmon02
cephmon03

# Manager Daemon Nodes
[mgrs]
cephmon01
cephmon02
cephmon03

# set OSD (Object Storage Daemon) Node
[osds]
cephosd01
cephosd02
cephosd03

# Grafana server
[grafana-server]
cephosd01

步骤3:在CentOS 8上部署Ceph 15(Octopus)集群

通过将示例剧本复制到ceph可访问的项目site.yml.sample的根目录来创建剧本文件。

cp site.yml.sample site.yml 

运行剧本。

ansible-playbook -i hosts site.yml 

如果安装成功,则运行状况检查将返回“确定”。

...
TASK [show ceph status for cluster ceph] ***************************************************************************************************************
Sunday 10 May 2020  20:12:33 +0200 (0:00:00.721)       0:09:00.180 ************ 
ok: [cephmon01 -> cephmon01] => 
  msg:
  - '  cluster:'
  - '    id:     b64fac77-df30-4def-8e3c-1935ef9f0ef3'
  - '    health: HEALTH_OK'
  - ' '
  - '  services:'
  - '    mon: 3 daemons, quorum ceph-mon-02,ceph-mon-03,ceph-mon-01 (age 6m)'
  - '    mgr: ceph-mon-03(active, since 38s), standbys: ceph-mon-02, ceph-mon-01'
  - '    mds: cephfs:1 {0=ceph-mon-02=up:active} 2 up:standby'
  - '    osd: 3 osds: 3 up (since 4m), 3 in (since 4m)'
  - '    rgw: 3 daemons active (ceph-mon-01.rgw0, ceph-mon-02.rgw0, ceph-mon-03.rgw0)'
  - ' '
  - '  task status:'
  - '    scrub status:'
  - '        mds.ceph-mon-02: idle'
  - ' '
  - '  data:'
  - '    pools:   7 pools, 132 pgs'
  - '    objects: 215 objects, 9.9 KiB'
  - '    usage:   3.0 GiB used, 147 GiB / 150 GiB avail'
  - '    pgs:     0.758% pgs not active'
  - '             131 active+clean'
  - '             1   peering'
  - ' '
  - '  io:'
  - '    client:   3.5 KiB/s rd, 402 B/s wr, 3 op/s rd, 0 op/s wr'
  - ' '
....

这是完成后的安装输出的屏幕截图。

步骤4:在CentOS 8上验证Ceph集群安装

登录到群集节点之一,并进行一些验证以确认CentOS 8上的Ceph Storage Cluster安装成功。

$ ssh [email protected]
# ceph -s
  cluster:
    id:     b64fac77-df30-4def-8e3c-1935ef9f0ef3
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph-mon-02,ceph-mon-03,ceph-mon-01 (age 22m)
    mgr: ceph-mon-03(active, since 16m), standbys: ceph-mon-02, ceph-mon-01
    mds: cephfs:1 {0=ceph-mon-02=up:active} 2 up:standby
    osd: 3 osds: 3 up (since 20m), 3 in (since 20m)
    rgw: 3 daemons active (ceph-mon-01.rgw0, ceph-mon-02.rgw0, ceph-mon-03.rgw0)
 
  task status:
    scrub status:
        mds.ceph-mon-02: idle
 
  data:
    pools:   7 pools, 121 pgs
    objects: 215 objects, 11 KiB
    usage:   3.1 GiB used, 147 GiB / 150 GiB avail
    pgs:     121 active+clean

您可以访问活动的MGR节点上的Ceph仪表板。

在CentOS 8上设置Ceph 15(Octopus)存储集群

使用配置的凭证登录 group_vars / all.yml 文件对我来说,这些是:

dashboard_admin_user: admin
dashboard_admin_password: [email protected]

然后,您可以在集群中创建具有不同访问级别的更多用户。

在CentOS 8上设置Ceph 15(Octopus)存储集群

可以在配置的节点上访问Grafana仪表板 格拉纳服务器 组名。服务必须在端口上监听 3000 默认情况下。

在CentOS 8上设置Ceph 15(Octopus)存储集群

使用配置为访问管理控制台的访问凭据。

grafana_admin_user: admin
grafana_admin_password: [email protected]

第二天操作

ceph-ansible提供了一组剧本 infrastructure-playbooks 用于执行第二天基本操作的目录。

另请参阅:

以下是有关Ceph的更多有用指南:

使用Ceph存储集群创建池

如何为Ceph对象网关存储配置AWS S3 CLI

使用Cephfs的Kubernetes的Ceph永久存储

使用Ceph RBD的Kubernetes持久存储

这是续集。
您可以通过以下链接以PDF格式下载本文,以为我们提供支持。

将指南下载为PDF

关门
这是续集。

这是续集。
这是续集。

Sidebar