Компоненты кластера Ceph
Основные компоненты кластера хранения Ceph
- Мониторы : Ceph Monitor ( ) поддерживает карты состояния кластера, включая карту монитора, карту менеджера, карту OSD и карту CRUSH.
- Ceph OSD : Ceph OSD (демон хранения объектов ) хранит данные, обрабатывает репликацию данных, восстановление, перебалансировку и предоставляет некоторую информацию мониторинга для мониторов и менеджеров Ceph, проверяя другие демоны Ceph OSD на наличие пульса. Как минимум 3 OSD Ceph обычно требуются для избыточности и высокой доступности.
- MDS : Сервер метаданных Ceph (MDS ) хранит метаданные от имени файловой системы Ceph (т. Е. Блочные устройства Ceph и хранилище объектов Ceph не используют MDS). Серверы метаданных Ceph позволяют пользователям файловой системы POSIX выполнять основные команды (например, и т. Д.), Не создавая огромную нагрузку на Ceph Storage Cluster. \
- Менеджеры Ceph : демон Ceph Manager ( ) отвечает за отслеживание метрик времени выполнения и текущего состояния кластера 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.
Установка CentOS 8 с флешки
Флешку подготовили, приступаем к установке. Ставим загрузку с USB и наблюдаем стандартный, горячо любимый и родной (смахнул слезу) установщик Centos.
Дальше увидите немного обновленный, но тем не менее привычный интерфейс с опциями установки. Перечислим их.
- Выбор часового пояса centos.
- Поддержка каких языков будет осуществляться на сервере.
- Выбор раскладки клавиатуры.
- Откуда будет происходить установка. Так как у нас дистрибутив centos dvd1, установка будет локальной.
- Выбор пакетов для установки.
- Разбивка жесткого диска. Подробнее коснемся этого пункта, когда будем разбирать установку на raid.
- Настройка режима работы KDUMP. Этот механизм делает дамп ядра, если оно у вас падает в момент установки. Теоретически может пригодится, если у вас с установкой возникнут какие-то проблемы. В общем случае лучше не включать, сэкономите немного оперативной памяти во время установки.
- Настройка сетевых интерфейсов. Без них нельзя установить систему, если используется netinstall.
- Подозреваю, что security policy это про SELinux, но скажу честно, я не знаю, как это работает на этапе установки, потому что никогда не настраивал и не изучал вопрос. Буду рад, если кто-то поделится актуальной инфой в комментариях.
Восклицательным знаком помечены разделы, без настройки которых продолжение невозможно. Пройдемся по всем параметрам и установим необходимые для нас значения. Итак, нажимаем на Time & Date (раньше было Date & Time, явно поработал кто-то эффективный и протолкнул изменение, за которое получил премию по итогу квартала) и настраиваем параметры времени:
- Указываем регион.
- Выбираем город.
- Включаем при необходимости службу времени для синхронизации часов centos с внешними серверами. Это возможно сделать только если вы уже настроили сетевые параметры. Если нет, то вернитесь к этой настройке позже.
- Выбираем список внешних серверов для синхронизации времени.
- Указываем формат, в котором будет отображаться текущее время.
- При необходимости изменяем дату сервера.
Когда все сделаете, жмите сверху на Done. В разделе Language Support можно выбрать дополнительные языки, которые будет поддерживать система. В принципе, настраивать прямо сейчас тут нет большой необходимости, если вы точно не знаете, понадобится ли вам какое-то еще язык, помимо английского. Все это можно добавить и потом. Но если точно знаете, что нужен еще один язык в системе, например, Русский может понадобиться, если будете использовать Сервер 1С, то добавляйте сразу.
То же самое с клавиатурой. Если нужен набор на еще каком-то языке, то добавляйте его в разделе Keyboard.
- Добавляем необходимые раскладки. Я добавил Russian.
- Нажимаем Options и выбираем, как будет происходить переключение раскладок.
- Тестируем раскладки и переключение. Если все в порядке, идем дальше.
Далее нужно указать, откуда будет производиться установка. Как я уже говорил, в данном примере я использую полный iso образ dvd1, который позволяет выполнить установку centos 8 полностью локально. Сетевую установку я рассмотрю отдельно позже. Так что в данном случае нам ничего отдельно настраивать не надо, по-умолчанию и так выбран виртуальный cd-rom в виде устройства sr0 в качестве источника.
Просмотр логов
В каталоге /var/log находится несколько общих журналов:
- wtmp
- utmp
- dmesg
- messages
- maillog или mail.log
- spooler
- auth.log или secure
Файлы wtmp и utmp отслеживают пользователей, вошедших и покинувших систему. Содержимое данных журналов нельзя читать с помощью простой команды «cat», для этого есть специальные команды, с которыми теперь нужно ознакомиться.
Чтобы узнать, кто в текущий момент находится на сервере Linux, нужно использовать команду «who». Она извлекает информацию из /var/run/utmp (в CentOS и Debian) или из /run/utmp (в Ubuntu).
Это пример ее работы в CentOS:
Команда «sysadmin» выводит историю входа пользователей:
В данном примере нужно было получить историю входа пользователя sysadmin. Как можно видеть, было пару случаев, когда он приводил к сбою системы.
Чтобы узнать время последней перезагрузки системы, используйте следующую команду:
Результат имеет примерно такой вид:
Чтобы узнать время последнего входа в систему, используйте lastlog:
Результат на CentOS выглядит примерно так:
Для просмотра содержимого текстовых журналов можно использовать команды «cat», «head» или «tail».
В приведенном ниже примере просматриваются последние 10 строк журнала /var/log/messages на Debian:
Вывод:
Изменения 8-й версии
Пройдемся по основным нововведениям CentOS 8, которые показались интересными лично мне. Функционально это полная копия RHEL 8, поэтому все его изменения на 100% актуальны для центос. Вот список наиболее интересных изменений:
- Разделение основного репозитория на 2 — BaseOS и AppStream. Первый будет работать как и раньше, а второй — appstream, сделали для того, чтобы была возможность устанавливать разные версии пакетов на сервер. Этот репозиторий поддерживает новый модульный формат rpm пакетов.
- Переход на пакетный менеджер DNF, который поддерживает модульный формат пакетов. Прощай YUM. Теперь это просто алиас для запуска dnf.
- Традиционно обновился весь софт и ядро (4.18) Linux. Теперь мы какое-то время будем иметь свежий софт. Прощай php5.4 из базового репозитория Я не буду по тебе скучать. Здравствуй php 7.2 и Python 3.6 из коробки.
- Замена iptables на nftables. Тут для меня самые серьезные изменения. Iptables я активно использую и настраиваю почти на всех серверах. С nftables не знаком вообще. Надо срочно переучиваться и осваивать новый функционал. Будут статьи на эту тему. Пожалуй этому нововведению я совсем не рад. Лично меня iptables устраивали целиком и полностью в первую очередь тем, что они используются почти везде. Можно брать готовый набор правил и спокойно переносить между серверами с разными ОС. Именно поэтому я всегда пользуюсь голыми iptables, а не надстройками над ними в виде firewalld или ufw. Мне достаточно знать только iptables, чтобы настроить firewall на любом linux сервере.
- Убрана поддержка Btrfs. Лично я ей никогда не пользовался, но я знаю, что это популярная штука и удаление ее поддержки значительное событие.
- До кучи обновился openssl и tls до последних версий 1.1.1 и 1.3. Некоторое время назад приходилось отдельно собирать пакеты для использования свежих версий. Теперь это на некоторое время ушло в прошлое, пока текущий релиз CentOS 8 не устареет. Года 2-3 будем жить спокойно.
- Network scripts для настройки сети объявлены устаревшими и по дефолту не поддерживаются. Можно поставить отдельно пакет для их работы. Для настройки сети надо использовать исключительно NetworkManager, который лично я предпочитаю отключать сразу после установки сервера. Не знаю, чем network-scripts не угодили. Простой и удобный инструмент.
Более подробно с изменениями 8-й версии можете познакомиться на opennet или почитать полный список в оригинале на сайте redhat. Я полистал последний. Там в overview есть ссылки на подробное описание по каждому компоненту системы.
Проксирование подключений к Kibana через Nginx
Я не буду подробно рассказывать о том, что такое проксирование в nginx. У меня есть отдельная статья на эту тему — настройка proxy_pass в nginx. Приведу просто пример конфига для передачи запросов с nginx в kibana. Я рекомендую использовать ssl сертификаты для доступа к Kibana. Даже если в этом нет объективной необходимости, надоедают уведомления браузеров о том, что у вас небезопасное подключение. Подробная инструкция по установке, настройке и использованию ssl в nginx так же есть у меня на сайте — настройка web сервера nginx. Все подробности настройки nginx смотрите там.
Вот примерный конфиг nginx для проксирования запросов к Kibana с ограничением доступа по паролю:
server { listen 443; server_name kibana.site.ru; ssl_certificate /etc/letsencrypt/live/kibana.site.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kibana.site.ru/privkey.pem; location / { auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.kibana; proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
Создаем файл для пользователей и паролей:
# htpasswd -c /etc/nginx/htpasswd.kibana kibanauser
Если утилиты htpasswd нет в системе, то установите ее:
# yum install httpd-tools
После этого выйдет запрос на ввод пароля. С помощью приведенной выше команды мы создали файл с информацией о пользователе и пароле kibanauser для ограничения доступа к web панели кибана.
Настройка сети при установке CentOS 8
В окне «Network & Host Name» вы увидите список ваших сетевых интерфейсов, они по умолчанию отключены. В моем примере их два. Каждый сетевой интерфейс имеет отличительное имя, в моем примере, это ens33 и ens36. Видно, что текущий статус «Disconnected», чтобы это изменить переведите тумблер с состояния «Off» на «On».
Если в вашей с локальной сети есть сервер DHCP, в моем примере на CISCO, то вы должны получить нужные настройки, как видно я поймал IP адрес 192.168.31.10/24 и DNS 192.168.31.1, 192.168.31.2. Чуть ниже в левом нижнем углу вы можете сразу задать имя вашего сервера CentOS 8. Если вас не устраивает, что CentOS 8 будет получать настройки сети по DHCP и вы хотите задать статический IP-адрес, то нажмите кнопку «Configure».
В окне свойств сетевого интерфейса найдите вкладку IPV4 Settings, обратите внимание, что тут будет поле «Method», в котором по умолчанию стоит «Automatic (DHCP)», то есть динамическое получение сетевых настроек в CentOS 8. На выбор у вас будут вот такие пункты:
- Automatic (DHCP) — автоматическое получение всех настроек: IP, маску, DNS, Основной шлюз, маршруты
- Automatic (DHCP) addresses only — вы получите автоматически только IP-адрес
- Manual — ручная настройка сети CentOS 8
- Link-Local Only — Локальные ссылки назначаются автоматически, когда компьютер не настроен на использование статического IP-адреса и не может найти DHCP-сервер. По сути, то APIPA адрес из диапазона 169.254.0.0
- Shared to other computers — это совместное использование сетевого интерфейса. Простой пример у вас есть сервер с двумя сетевыми интерфейсами один LAN второй WAN, и есть другой сервер, где просто один сетевой интерфейс с LAN и без интернета. Вы можете выставить на первом сервере WAN в режим «Shared to other computers» и указать его в маршрутах для выхода в интернет.
- Disabled — отключение получения настроек
Давайте я настрою статический IP-адрес на моем сетевом интерфейсе ens33. Выставляю в методе получения «Manual». В поле «Address» я нажимаю кнопку «Add», для добавления новых настроек, задаю Ip-адрес, маску в «Netmask» и основной шлюз в «Gateway». Чуть ниже я указываю свои DNS сервера, у меня это 192.168.31.1, 192.168.31.2, так же можете в поле «Search domains» указать ваше имя домена Active Directory, у меня это root.pyatilistnik.org.
Галка «Require IPv4 addressing for this connection to complete (Требовать адресацию IPv4 для этого соединения)» — Чтобы разрешить системе устанавливать это соединение в сети с поддержкой IPv6, если конфигурация IPv4 завершится неудачно, но конфигурация IPv6 будет успешной. Кнопка «Routes» позволяет вам настроить дополнительные маршруты в CentOS 8.
Нажмите кнопку «Add», чтобы добавить IP-адрес, маску сети, адрес шлюза и метрику для нового статического маршрута. Можете выбрать «Use this connection only for resources on its network», чтобы ограничить подключения только к локальной сети.