Установка Radosgw вручную на Ubuntu 20.04

12/04/2021

radosgw installation

Объектный шлюз Radosgw — один из компонентов кластера CEPH, который позволяет организовать доступ к данным через протоколы S3 или swift. Многие привыкают использовать хранилища данных s3 в сервисах Amazon AWS, вследствии чего возникает закономерный спрос на анологичный сервис в локальных системах хранения. Программное определяемое хранилище данных Ceph позволяет с легкостью организовать данный тип интерфейса для пользователей системы. Шлюз radosgw может быть установлен как на тот же самый сервер, где работают службы MON и OSD кластера, так и на отдельный хост. В этой статье я покажу, как установить этот сервис на отдельный сервер на базе операционной системы Ubuntu 20.04.

Ранее на своем блоге публиковал статью — Установка кластера CEPH. В ней рассказывал о способе инсталяции кластера с помощью ролей Ansible от разработчиков продукта. Замечательный и простой способ, который позволяет с нуля развернуть с нуля практически любую конфигурацию. Однако бывают случаи, когда необходимо провести этот процесс вручную. При этом пройдя через все шаги такой настройки, можно лучше понять определенные глубинные механизмы работы системы CEPH.

Создание файла keyring

Будем считать, что у нас уже есть работающий кластер CEPH 15 версии Octopus, для которого мы хотим установить Radosgw шлюз на внешнем сервере или виртуальной машине.

Прежде всего нам нужно создать файл keyring, который будет аутентифицировать настраиваемый сервис Radosgw на кластере CEPH. Данный файл содержит также информацию о возможностях, которые разрешены в кластере данному сервису. Аналогичные файлики генерятся для каждого сервиса и позволяют безопасно работать службам внутри кластера. Итак, чтобы получить нужный keyring нам нужно выполнить несколько команд. В первую очередь на управляющей ноде кластера с помощью ceph-authtool создадим его.

# ceph-authtool --create-keyring /etc/ceph/client.rgw.andreyus-rgw.rgw0.keyring
# chmod +r /etc/ceph/client.rgw.andreyus-rgw.rgw0.keyring

После этого добавим в данный файл ключ и username с помощью той же утилиты ceph-authtool.

# ceph-authtool /etc/ceph/client.rgw.andreyus-rgw.rgw0.keyring -n client.rgw.andreyus-rgw.rgw0 --gen-key

Теперь в данный файл необходимо добавить те возможности, которые нужны конкретному сервису для работы в кластере CEPH. Это полный доступ для обращения к службам OSD и MON.

# ceph-authtool -n client.rgw.andreyus-rgw.rgw0 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/client.rgw.andreyus-rgw.rgw0.keyring

На этом ключ для сервиса Radosgw создан и мы должны его добавить ко всем ключам, которые используются в кластере ceph с помощью нижеуказанной команды.

# ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.andreyus-rgw.rgw0 -i /etc/ceph/client.rgw.andreyus-rgw.rgw0.keyring

Созданный keyring перемещаем на целевой сервер, где будет работать шлюз Radosgw. Конечное расположение файла c ключом на данном сервере шлюза будет — /var/lib/ceph/radosgw/ceph-rgw.andreyus-rgw.rgw0/keyring.

Установка и настройка radosgw

Когда с ключом вопрос будет решен, устанавливаем пакет radosgw на целевом сервере. В Ubuntu 20.04 это выполняется следующим образом с помощью менеджера пакетов apt.

# apt update
# apt install radosgw

После установки пакетов radosgw нам необходимо создать конфигурационный файл /etc/ceph/ceph.conf, в котором будут указаны параметры подключения к кластеру ceph, место расположения keyring и настройки сервиса radosgw. Так мониторы в данном примере работают на серверах ceph — 192.168.101.1, 192.168.101.2, 192.168.101.3. Сам софт шлюза будет запускать на 8080 порту сервера по ip адресу 192.168.100.200. Пример конфигурационного файла приведен ниже.

[client.rgw.andreyus-rgw.rgw0]
host = andreyus-rgw
keyring = /var/lib/ceph/radosgw/ceph-rgw.andreyus-rgw.rgw0/keyring
log file = /var/log/ceph/ceph-rgw-andreyus-rgw.rgw0.log
rgw frontends = beast endpoint=192.168.100.200:8080
rgw thread pool size = 512

[mon.2]
host = ceph03
mon addr = 192.168.101.3:6789

[mon.1]
host = ceph02
mon addr = 192.168.101.2:6789

[mon.0]
host = ceph01
mon addr = 192.168.101.1:6789

После того, как данный файл будет создан и отредактирован, необходимо будет настроить разрешения для него следующим образом.

# chown ceph:ceph /etc/ceph/ceph.conf

Завершающий мазок в нашем процессе — инициализационный файл /etc/init.d/radosgw. В нем нужно найти строчку, начинающуюся с PREFIX и отредактировать ее следующим образом.

PREFIX='client.rgw.'

На этом наши манипуляции завершаются и мы можем запустить сервис в работу. Сделаем это с помощью systemctl следующим образом.

# systemctl restart radosgw

Сервис шлюза Radosgw должен запуститься на 8080 порту 192.168.100.200. С помощью утилиты s3cmd в коммандной строке Linux можно легко проверить работу шлюза S3 и использовать его в дальнейшем по назначению.

Заключение

В статье пробежались по всем основным моментам процесса поднятия шлюза radosgw на отдельном сервере. Особо остановился на вопросе создания keyring и его использования сервисами кластера CEPH. Это важный элемент работы системы хранения данных, который необходимо знать и понимать принципы его работы. В остальном процесс установки и настройки Radosgw на Ubuntu 20.04 не сложный и может быть проведен довольно быстро. Желаю всем успеха в использовании данного Open Source программного решения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *