Установка и настройка кластера Ceph 15 (Octopus) на CentOS 8

Установка и настройка кластера Ceph 15 (Octopus) на CentOS 8

 

Из этого туториала Вы узнаете, как установить и настроить Ceph Storage Cluster на серверах CentOS 8 Linux. Ceph — это масштабируемое и упрощенное решение для хранения данных с открытым исходным кодом, которое реализует кластер хранения распределенных объектов и предоставляет интерфейсы для хранения объектов, блоков и файлов. Наша установка Ceph 15 (Octopus) Storage Cluster на CentOS 8 будет использовать Ansible в качестве метода автоматизации для развертывания.

Компоненты кластера Ceph

Основные компоненты кластера хранения Ceph

  • Мониторы : Ceph Monitor ( ceph-mon) поддерживает карты состояния кластера, включая карту монитора, карту менеджера, карту OSD и карту CRUSH.
  • Ceph OSD : Ceph OSD (демон хранения объектов ceph-osd) хранит данные, обрабатывает репликацию данных, восстановление, перебалансировку и предоставляет некоторую информацию мониторинга для мониторов и менеджеров Ceph, проверяя другие демоны Ceph OSD на наличие пульса. Как минимум 3 OSD Ceph обычно требуются для избыточности и высокой доступности.
  • MDS : Сервер метаданных Ceph (MDS ceph-mds) хранит метаданные от имени файловой системы Ceph (т. Е. Блочные устройства Ceph и хранилище объектов Ceph не используют MDS). Серверы метаданных Ceph позволяют пользователям файловой системы POSIX выполнять основные команды (например, ls, findи т. Д.), Не создавая огромную нагрузку на Ceph Storage Cluster. \
  • Менеджеры Ceph : демон Ceph Manager ( ceph-mgr) отвечает за отслеживание метрик времени выполнения и текущего состояния кластера Ceph, включая использование хранилища, текущие метрики производительности и нагрузку на систему.

Наша установка Ceph Storage Cluster на CentOS 8 основана на приведенном ниже проектировании системы.

SERVER NAME CEPH COMPONENT Server Specs
cephadmin ceph-ansible 2gb ram, 1vcpus
cephmon01 Ceph Monitor 8gb ram, 4vpcus
cephmon01 Ceph MON, MGR,MDS 8gb ram, 4vpcus
cephmon01 Ceph MON, MGR,MDS 8gb ram, 4vpcus
cephosd01 Ceph OSD 16gb ram, 8vpcus
cephosd02 Ceph OSD 16gb ram, 8vpcus
cephosd03 Ceph OSD 16gb ram, 8vpcus

The cephadmin node will be used for deployment of Ceph Storage Cluster on CentOS 8.

Узел cephadmin будет использоваться для развертывания Ceph Storage Cluster на CentOS 8.

Шаг 1. Подготовьте все узлы — ceph-ansible, OSD, MON, MGR, MDS

Нам нужно подготовить все узлы, выполнив следующие несколько шагов.

  • Установите правильное имя хоста на каждом сервере
  • Установите правильное время и настройте службу NTP Chrony
  • Добавьте имя хоста с IP-адресами на DNS-сервер или обновите / etc / hosts на всех серверах

Пример содержимого /etc/hosts на каждом хосте.

sudo tee -a /etc/hosts<<EOF
192.168.10.10  cephadmin
192.168.10.11  cephmon01
192.168.10.12  cephmon02
192.168.10.13  cephmon03
192.168.10.14  cephosd01
192.168.10.15  cephosd02
192.168.10.16  cephosd03
EOF

Выполнив вышеописанные задачи, установите базовые пакеты:

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

Я переключусь на стабильную версию 5.0, которая поддерживает версию осьминога Ceph .

cd ceph-ansible
git checkout stable-5.0

Установите Python pip.

sudo yum install python3-pip

Использование пип и при условии , requirements.txt установить анзибль и другие необходимые библиотеки 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 на все узлы

Установите пару ключей SSH на вашем административном узле Ceph и скопируйте открытый ключ на все узлы хранения .

$ 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
  • Замените значения Hostname на IP-адреса узлов и User value на удаленного пользователя, которого вы устанавливаете как.

Когда не используется root для SSH

Для обычных пользовательских установок разрешите удаленному пользователю во всех хранилищах узлы выполнять sudo без пароля.

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

Где имя пользователя должно быть заменено именем пользователя, настроенным в файле ~ / .ssh / config .

Настроить Ansible Inventory и 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-узла, и у каждого есть один блочный блок – /dev/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: Разверните кластер Ceph 15 (Octopus) на CentOS 8

Создайте файл Playbook, скопировав образец playbook в корневой каталог ceph-ansible проекта  site.yml.sample.

cp site.yml.sample site.yml 

Запустите Playbook.

ansible-playbook -i hosts site.yml 

Если установка прошла успешно, проверка работоспособности должна вернуться OK.

...
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'
  - ' '
....

Это снимок экрана с результатами моей установки после его завершения.

Настройка кластера Ceph 15 (Octopus) на CentOS 8

Шаг 4: Проверьте установку кластера Ceph на CentOS 8

Войдите в систему на одном из узлов кластера и выполните некоторые проверки, чтобы подтвердить, что установка Ceph Storage Cluster на CentOS 8 прошла успешно.

$ 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

Вы можете получить доступ к Ceph Dashboard на активном узле MGR.

Настройка кластера Ceph 15 (Octopus) на CentOS 8 2

Войдите с учетными данными, настроенными в  group_vars/all.yml Для меня это:

dashboard_admin_user: admin
dashboard_admin_password: [email protected]

Затем вы можете создать больше пользователей с различным уровнем доступа в кластере.

Настройка кластера Ceph 15 (Octopus) на CentOS 8 1

Панель управления Grafana доступна на узле, который вы задали для имени группы серверов grafana . Служба должна прослушивать порт 3000 по умолчанию.

Настройка кластера Ceph 15 (Octopus) на CentOS 8 3

Используйте учетные данные Access, настроенные для доступа к консоли администратора.

grafana_admin_user: admin
grafana_admin_password: [email protected]