Подготовка серверов | Tcs

Version:

1.x
Руководство администратора Подготовка серверов

Подготовка серверов

Tarantool Column Store – колоночная транзакционно-аналитическая СУБД, построенная на платформе Tarantool Enterprise Edition.

TCS наследует от Tarantool базовые возможности хранения и масштабирования:

  • данные хранятся в оперативной памяти;

  • хранение персистентно;

  • доступен механизм репликации.

Таким образом, перед установкой и эксплуатацией TCS требуется подготовить сервера для использования сопутствующего ПО Tarantool.

Подготовка серверов к использованию Tarantool

  1. Настройте межсетевой экран (firewall):

    a. Настройте порты для бинарного протокола Tarantool.

    Tarantool использует как TCP, так и UDP, для взаимодействия внутри кластера.

    Откройте пул портов 3301 — 3401 для TCP и UDP трафика, для внутреннего трафика на всех серверах, на которых устанавливается Tarantool.

    Если внешние приложения обращаются к кластеру по бинарному протоколу, также необходимо открыть пул портов 3301 — 3401, но достаточно TCP.

    Важно

    Каждый экземпляр Tarantool должен иметь связь со всеми остальными экземплярами (full-mesh).

    Примечание

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

    b. Настройте порты для TCP и HTTP(s).

    • TCP используется для взаимодействия администраторов с веб-интерфейсом модуля Tarantool Cluster Manager (TCM).

      На всех серверах, на которых устанавливается TCM, откройте порт для TCP-трафика, указанный в конфигурации TCM (по умолчанию 8080).

    • Встроенный в Tarantool сервер может принимать SSL трафик, поэтому проксирование HTTPs-трафика на HTTP-порты настраивать не нужно.

      Откройте пул портов 8001 — 8101 для HTTPs-трафика на всех серверах, на которых устанавливается Tarantool.

    • HTTP используется для взаимодействия с интерфейсом сервиса TCS, где ждет ввод обработчик /sql.

      Откройте пул портов 7700-7800 для HTTPs трафика на всех серверах, на которых будет запущен сервис TCS.

    c. Настройте порты для внутреннего трафика для etcd. По умолчанию используется порт 2379.

    d. В случае, если у вас:

    • отдельно стоящий сервер, или

    • один из серверов под Tarantool, или

    • агент CI/CD системы,

    настройте также:

    • доступ по 22 порту (ssh) для devops-инженера;

    • сетевой доступ по 22 порту (ssh) до всех серверов, на которые производится установка. В том числе до серверов под etcd и других сервисов.

  2. Настройте DNS.

    Все сервера должны находить друг друга по FQDN (доменное имя локальной машины). Удобно использовать доменное имя для обозначения экземпляров Tarantool в кластере.

  3. Разбейте дисковое пространство в соответствии с рекомендациями для оптимальной работы экземпляров Tarantool:

    • журналы (logs) — 2 GB * количество экземпляров Tarantool, но не менее 15 GB

    • журнал упреждающей записи (WAL) — 40-50% от RAM, используемого всеми экземплярами Tarantool

    • снимки данных (snapshots) — 100-110% от RAM, используемого всеми экземплярами Tarantool

    Разбейте диски в соответствие с расчетами и подключите директории с помощью команды mount.

  4. Скорректируйте параметры ядра.

    a. Задайте параметры overcommit по памяти:

    sudo cat << EOF >> /etc/sysctl.conf
    vm.overcommit_memory = 2
    vm.overcommit_ratio = 100
    EOF
    

    Примечание

    В случае виртуализации запрещено использовать overcommit по памяти и swap-раздел.

    b. При ошибочном завершении Tarantool должен быть создан coredump-файл, который понадобится нашим специалистам для исследования проблемы. Файлы должны собираться в доступную на запись директорию, иметь в названии PID, signal и timestamp. Для корректного сохранения отладочной информации потребуются следующие настройки:

    sudo cat << EOF >> /etc/sysctl.conf
    kernel.core_uses_pid = 1
    kernel.core_pattern = /app/tarantool/coredump/core-%e-%u-%g-%p-%t
    EOF
    

    c. Настройте пул портов для исходящих запросов.

    Исходящие соединения могут занимать порты, предназначенные для бинарного протокола Tarantool.

    sudo cat << EOF >> /etc/sysctl.conf
    net.ipv4.ip_local_port_range = 32768   61000
    EOF
    
  5. Установите необходимое стороннее ПО.

    a. Установите etcd версии не ниже 3.4.

    b. Установите OpenSSL версии выше 3.0.0.

  6. Установите вспомогательные утилиты.

    Примечание

    Некоторые утилиты могут быть предустановлены с ядром ОС. Нет необходимости обновлять их на последнюю версию.

    Команды для поддерживаемых ОС:

    • Для Astra Linux:

      sudo apt update
      sudo apt install -y \
               logrotate \        # Для ротации логов
               cronie \           # Утилита crontab
               gdb \              # Для сбора отладочной информации в случае падения
               gcore \            # Для создания coredump-файла на лету
               telnet \           # Для проверки сетевой связности узлов
               iperf3 \           #
               iptraf-ng \        #
               htop               # Более красивый top
      
    • Для РЕД ОС:

      sudo dnf install -y \
               logrotate \
               cronie \
               gdb \
               telnet \
               iperf3 \
               iptraf-ng \
               htop
      
  7. Создайте учетные записи.

    Создайте группу tarantool и локального пользователя tarantool для запуска и управления Tarantool:

    sudo groupadd -g 3301 tarantool
    sudo useradd -m -u 3301 -g 3301 --system tarantool
    

    Для корректной работы пользователя tarantool с systemctl в пользовательском окружении выполните команду:

    sudo loginctl enable-linger tarantool
    

    Аналогично tarantool, потребуется учетная запись для работы с etcd. Соответствующий пользователь должен создаваться в процессе установки etcd. Если этого не произошло, создайте его самостоятельно:

    sudo groupadd etcd
    sudo useradd -m -g etcd --system etcd
    
  8. Активируйте systemd userspace:

    sudo loginctl enable-linger tarantool
    
  9. Создайте директории для записи на диск:

    sudo mkdir -p /app/tarantool
    sudo mkdir -p /app/tarantool/coredump
    sudo mkdir -p /app/logs
    sudo mkdir -p /app/snap
    sudo mkdir -p /app/etcd
    

    И задайте права:

    sudo chown tarantool:tarantool /app/tarantool
    sudo chown tarantool:tarantool /app/tarantool/coredump
    sudo chown tarantool:tarantool /app/logs
    sudo chown tarantool:tarantool /app/snap
    sudo chown etcd:etcd /app/etcd
    
  10. Настройте лимиты для группы tarantool.

sudo cat << EOF >> /etc/security/limits.d/tarantool.conf
@tarantool    -   nproc   64000
@tarantool    -   nofile   64000
@tarantool    -   core   unlimited
EOF
  1. Настройте оркестратор.

a. Создайте systemd service-файлы (для РЕД ОС и RHEL).

b. Включите персистентное хранилище journald (для РЕД ОС и RHEL).

c. Выдайте sudo-права администратору Tarantool.

  Для обслуживания серверов с Tarantool удобно выделить некоторую доменную
  группу из AD. Этой группе выдайте соответствующие права на переход под
  пользователей `tarantool` и `etcd`. Также нужны права на управление
  сервисами и просмотр журналов для `etcd`.

  Указанный список в формате `sudoers` выглядит примерно так:

  ```
  # пример для Astra Linux:

  %GROUP@domain.ru ALL=(tarantool) NOPASSWD: ALL

  %GROUP@domain.ru ALL=(etcd) NOPASSWD: ALL
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl status etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl restart etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl reload etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl start etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl stop etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl enable etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl disable etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl edit etcd
  %GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/journalctl -u etcd
  ```
  1. Настройте ротацию журналов.

    • Для Astra Linux:

      1. Убедитесь, что утилита crontab установлена.

      2. Добавьте пользователя tarantool в группу crontab.

        sudo usermod -a -G crontab tarantool
        
    • Для РЕД ОС:

      В РЕД ОС права на crontab организуются через файлы /etc/cron.allow и /etc/cron.deny. Проверьте, что выполняется любое из двух условий:

      • пользователь tarantool есть в файле /etc/cron.allow, либо

      • файла /etc/cron.allow нет, а файл /etc/cron.deny пуст (crontab доступен всем).

Found what you were looking for?
Feedback