Как развернуть StarRocks — подготовка среды
Подготовка среды для развертывания StarRocks на CentOS 7+: требования к оборудованию, обязательные проверки и системные оптимизации для высокой производительности и надёжности.
98 открытий2К показов
Рекомендации по аппаратному обеспечению кластера
Базовые требования StarRocks к конфигурации серверов невысоки: даже в тестовой среде с CPU 2 ядра и 4 ГБ ОЗУ можно выполнять запросы по небольшим объемам данных.
В производственной среде или когда важна производительность, рекомендуемые аппаратные конфигурации для различных инстансов StarRocks следующие:
- FE — 8 ядер CPU, 16 ГБ ОЗУ, сетевой адаптер 10GbE (10‑гигабитный Ethernet) и выше (при невысоком уровне одновременных запросов FE можно совместно размещать с BE на одном узле).
- BE — 16 ядер CPU, 64 ГБ ОЗУ, сетевой адаптер 10GbE и выше; CPU должен поддерживать набор инструкций AVX2.
- Broker — специальных требований нет; обычно совместно размещается с BE, число Broker‑узлов соответствует числу BE.
Чтобы обеспечить высокую производительность кластера и безопасность данных, в продакшене рекомендуется использовать минимум три сервера с 16 ядрами CPU, 32 ГБ ОЗУ и 10GbE.
Предположим, что node01, node02 и node03 — сервера, удовлетворяющие требованиям. Минимальный пример архитектуры развертывания в продакшене:
- На node01 разворачивается один FE в роли Leader.
- На node02 разворачивается один FE Observer для резервирования метаданных.
- На каждом из трех узлов кластера разворачивается по одному BE, что обеспечивает хранение с тремя репликами по умолчанию в StarRocks (в тестовой среде можно использовать одну реплику).
На node01 также можно установить mysql-client. StarRocks совместим с протоколом MySQL; рекомендуется использовать mysql-client для доступа, также можно применять графические инструменты, такие как SQLyog, DBeaver, Navicat, DataGrip, подключая StarRocks как MySQL.
Особое внимание:
- На одной машине можно развернуть только один FE‑инстанс данного кластера, поскольку все FE‑инстансы в одном кластере должны иметь одинаковый http_port.
- Хотя на одной машине можно развернуть несколько BE‑инстансов на разных портах, для обеспечения трех реплик данных необходимо как минимум три машины с по одному BE‑инстансу на каждой. Это связано с тем, что стратегия балансировки реплик в StarRocks не размещает реплики одного и того же Tablet на BE с одинаковым IP.
Проверки и подготовка среды кластера
После того как вы ознакомились с аппаратными требованиями кластера StarRocks, необходимо выполнить обязательные проверки окружения серверов кластера и системную оптимизацию. Подготовку среды выполнения StarRocks условно можно разделить на две категории: «обязательная» и «оптимизационная».
Перед развертыванием кластера рекомендуется выполнить все перечисленные ниже шаги (с учетом вашей ситуации), поскольку параметры из категории «оптимизационных» также влияют на производительность StarRocks.
Обязательная подготовка
Проверка CPU
Векторизация StarRocks требует поддержки набора инструкций AVX2 на CPU, поэтому CPU на машинах с BE‑сервисом должен поддерживать AVX2. В Linux проверьте поддержку CPU следующим образом:
Наличие вывода означает поддержку AVX2 CPU. Если вывода нет, потребуется машина с поддержкой AVX2.
В некоторых случаях используется виртуальная машина с CentOS в среде Windows для тестов; тогда можно проверить поддержку набора инструкций CPU на хосте Windows с помощью CPU‑Z, AIDA64 и т. п.
Проверка операционной системы
StarRocks требует Linux CentOS версии 7 и выше (ниже показано на примере CentOS 7.6). Версия ядра рекомендуется 3.10 и выше. Просмотр информации о системе и ядре:
Настройка IP сервера
При развертывании FE или BE, чтобы избежать проблем выбора IP на серверах с несколькими сетевыми интерфейсами, используйте параметр priority_networks в конфигурации каждого инстанса для привязки IP.
Кроме того, при работе StarRocks сведения о привязанных IP инстансов кластера и др. сохраняются в локальном каталоге. Если внутренний IP узла изменится, инстансы кластера не смогут корректно работать (или потребуется сложное восстановление метаданных). Поэтому внутренний IP сервера, на котором работает StarRocks, должен быть фиксированным.
Операции по настройке фиксированного IP в системе сервера см. в Приложении 1: Настройка фиксированного IP.
Синхронизация времени в кластере
Максимально допустимое расхождение часов между серверами с FE — 5 секунд. Можно использовать протокол NTP для синхронизации времени по сети или выполнить внутреннюю синхронизацию в кластере. Подробные операции см. в Приложении 2: Синхронизация времени в кластере.
Изменение лимита на количество открытых файлов
Если лимит на количество открытых файлов слишком мал, BE‑инстанс может не запуститься. Проверьте лимит:
Если возвращаемое значение < 65535, измените /etc/security/limits.conf
Добавьте в конец файла (для всех пользователей и групп мягкий и жесткий лимиты на число открытых файлов — 65535):
После изменения необходимо разорвать и заново установить удаленное подключение (например, Xshell), чтобы изменения вступили в силу, либо временно задать лимит повторно:
Подтвердите применение:
Проверка часового пояса
Чтобы избежать смещения времени при импорте данных с метками времени, установите системный часовой пояс Asia/Shanghai. Просмотр часового пояса:
Если часовой пояс отличается от Asia/Shanghai, выполните:
Настройка брандмауэра
Чтобы обеспечить нормальное взаимодействие между узлами кластера, в зависимости от ситуации выберите одно из двух: отключить внутренний брандмауэр или открыть в нем порты, необходимые для работы инстансов кластера. Ниже представлены два варианта (a или b):
a) Отключить службу firewalld (брандмауэр)
Проверьте, что служба отключена:
Отключите автозапуск:
b) Открыть порты во внутреннем сегменте брандмауэра
Инстансы StarRocks по умолчанию используют порты: 8000, 8030, 8040, 8060, 9010, 9020, 9030, 9050, 9060. Если эти порты не конфликтуют с другими сервисами на сервере, обычно не рекомендуется их изменять.
Например, для FE при необходимости изменения портов до развертывания можно отредактировать файл конфигурации
Открытие стандартных портов в службе firewalld (брандмауэр):
Просмотр открытых портов:
Обратите внимание: перечисленные выше порты относятся к внутренним (для взаимодействия внутри кластера), а не к портам, открытым для доступа из внешней сети. В производственной среде для внешнего доступа обычно достаточно открыть два порта:
- FE http_port: по умолчанию 8030
- FE query_port: по умолчанию 9030
Подробное описание портов см. в Приложении 3: Порты StarRocks.
Установка JDK
StarRocks зависит от среды JDK 1.8+. Можно использовать Oracle JDK 1.8+ или OpenJDK 8+ (ниже показан пример с OpenJDK 1.8.0_41):
Инструкции по установке OpenJDK 8 см. в Приложении 4: Установка OpenJDK.
Установка mysql-client
StarRocks использует протокол MySQL для взаимодействия; пользователи могут подключаться к кластеру StarRocks через клиент MySQL (mysql-client). Выбирая версию mysql-client, используйте версию новее 5.1, поскольку версии до 5.1 не поддерживают имена пользователей длиннее 16 символов (ниже показан пример mysql-client‑5.7.35).
Для удобства развертывания и эксплуатации кластера обычно рекомендуется установить mysql-client на одном из серверов кластера. Разумеется, можно не устанавливать mysql-client, а получить доступ к StarRocks с помощью внешних графических инструментов, таких как SQLyog, DBeaver, Navicat и др.
Инструкции по установке mysql-client‑5.7.35 см. в Приложении 5: Установка mysql-client‑5.7.35.
Оптимизационная подготовка
Отключение SELinux
Если в вашей продакшен‑среде уже применены меры безопасности (например, VPN, jump‑host, bastion и т. п.), рекомендуется отключить SELinux. Проверьте состояние:
Чтобы избежать перезагрузки, можно сначала временно отключить, затем — отключить навсегда.
Временное отключение:
Постоянное отключение:
Проверка:
означает, что отключено навсегда:
Использование overcommit
Рекомендуется включить overcommit, установив 1, что означает: ядро разрешает выделять всю физическую память независимо от текущего состояния памяти.
Настройка выше сбрасывается после перезагрузки системы; для постоянного применения выполните:
Не использовать область подкачки (swap)
Это устраняет влияние перехода в область подкачки на производительность. Чтобы избежать перезагрузки, можно сначала временно, затем — постоянно.
Проверка текущего значения:
Временная настройка:
Постоянная настройка:
Отключение прозрачных больших страниц (Transparent Huge Pages, THP)
Проверьте настройки и состояние THP:
Вывод [always] означает, что THP включены; [never]— что THP отключены; [madvise]— что THP используются только для VMA с флагом MADV_HUGEPAGE.
Временное отключение:
Постоянное отключение (добавьте команды временного отключения в /etc/rc.d/rc.localи назначьте права на исполнение):
Проверка:
Настройки очереди буферов TCP‑подключений
1. tcp_abort_on_overflow:
2. somaxconn:
Эти настройки сбрасываются после перезагрузки; чтобы применялись постоянно, добавьте их в /etc/rc.d/rc.local:
Повторная проверка:
Настройка максимального числа пользовательских процессов
Временная установка:
Постоянная установка:
Добавьте в конец файла и сохраните:
Настройки для высокой конкурентности
Если в кластере высокая конкурентность нагрузки, рекомендуется добавить следующие настройки:
Чтобы эти настройки применялись постоянно, добавьте их в /etc/rc.d/rc.local , как указано выше.
Приложение 1: Настройка фиксированного IP на сервере
Обычно инженеры эксплуатации предоставляют серверы уже с привязанным IP. Для удобства локального тестирования ниже приведен пример привязки IP в виртуальной машине.
Перед настройкой IP обратите внимание, в каком режиме настроен сетевой адаптер ВМ: «bridged» или «NAT». Упрощенно: в режиме bridged систему ВМ могут видеть другие машины в той же локальной сети; в режиме NAT — только хост‑машина, где установлена ВМ. Поэтому при настройке IP учитывайте различия в шлюзе.
Например, для одиночного развертывания на сервере starrocks текущий шлюз —192.168.110.1 .Нужно привязать IP:192.168.110.98. Действия:
Измененные или добавленные параметры:
После изменений перезапустите сетевой сервис:
Просмотр IP:
Или (в минимальной установке
по умолчанию отсутствует):
Приложение 2: Синхронизация времени в кластере
Распространены два способа: синхронизация через интернет и внутренняя синхронизация в кластере. В продакшене достаточно выбрать один из них.
Синхронизация через интернет (под root)
В среде с доступом во внешнюю сеть можно установить NTP‑службу, чтобы каждая машина в кластере синхронизировалась с интернет‑временем.
(1) Установка пакета NTP:
(2) Выполнение синхронизации:
(3) Добавление cron‑задания:
Добавьте строку:
(означает автоматическую синхронизацию каждые 2 часа; формат: минута, час, день, месяц, день недели)
(4) Перезагрузка службы crond:
Внутренняя синхронизация в кластере (под root)
В внутренней сети можно выбрать одну машину в кластере в качестве сервера времени, а остальные машины периодически синхронизировать с ней. При таком подходе время в кластере может не совпадать с эталоном, но внутри кластера будет согласованным.
(1) Настройки на всех узлах
Проверьте, установлен ли ntp (если нет, установите:yum install -y ntp):
Проверьте статус ntpd:
Если статус не dead, остановите службу и отключите автозапуск:
(2) Настройка сервера времени
- Выберите сервер времени, например
node01, и отредактируйте конфигурацию NTP:
Изменения:
a) Разрешение для подсети (пример для диапазона 192.168.1.0–192.168.1.255):
Строку
раскомментируйте и укажите свою подсеть:
b) Отключение интернет‑источников времени (кластер в локальной сети):
Закомментируйте строки:
c) Добавление локального источника (при потере сети узел сможет служить сервером времени):
- Измените файл
/etc/sysconfig/ntpd:
Добавьте (синхронизировать аппаратное время с системным):
- Запустите службу
ntpd:
- Включите автозапуск
ntpd:
(3) Настройка остальных машин
Для всех узлов, кроме сервера времени, создайте cron‑задачу:
- Настройте синхронизацию с сервером времени каждые 10 минут:
- Добавьте задание:
- Перезагрузите службу
crond:
- Тест (необязательно)
Измените время на любом узле, не являющемся сервером времени, и проверьте синхронизацию.
Например, на node02:
Подождите 10 минут (или временно измените интервал в cron на 1 минуту) и проверьте время:
Приложении 3: Порты StarRocks
Приложение 4: Установка OpenJDK
Способ 1: онлайн‑установка через yum
Проверьте, есть ли в системе среда Java:
При минимальной установке Java отсутствует. Если в текущей системе CentOS 7 есть пакеты OpenJDK и среди них присутствует java-1.8.0-openjdk-devel, значит, установлен Java 8 JDK, и можно сразу найти путь установки OpenJDK и настроить переменные окружения. Если openjdk-devel отсутствует, значит установлен только JRE. Например (пакеты, связанные с OpenJDK):
Официальная документация OpenJDK:
The java-1.8.0-openjdk package contains just the Java Runtime Environment. If you want to develop Java programs then install the java-1.8.0-openjdk-devel package.
Установка/обновление OpenJDK через yum:
Поиск пути установки OpenJDK:
Настройка переменных окружения (рекомендуемый способ): создайте файл/etc/profile.d/my_env.sh:
Добавьте переменные:
Сохраните и обновите окружение (или перезапустите окно Xshell):
Способ 2: офлайн‑установка
Если у кластера нет доступа во внешнюю сеть, используйте двоичный пакет OpenJDK для офлайн‑развертывания. Заранее скачайте OpenJDK 1.8.0_41‑b04.
Проверьте, установлен ли JRE, и при наличии удалите его.
Проверка:
Примеры выводов для наличия JRE см. выше.
Удаление предустановленного JRE:
Загрузите
в каталог /opt/software:
Распакуйте:
Переместите распакованный каталог в /usr/java/:
Настройка переменных окружения (рекомендуемый способ): создайте файл /etc/profile.d/my_env.sh:
Добавьте переменные:
Сохраните и обновите окружение (или перезапустите окно Xshell):
Приложение 5: Установка mysql-client‑5.7.35
Проверьте наличие mariadb:
Если установлен, удалите в соответствии с выводом:
Для mysql-client требуются три RPM‑пакета (адрес загрузки укажите по корпоративным источникам). Загрузите пакеты в каталог /opt/software:
Между тремя RPM есть зависимости; порядок установки:
mysql-community-common-5.7.35-1.el7.x86_64.rpmmysql-community-libs-5.7.35-1.el7.x86_64.rpmmysql-community-client-5.7.35-1.el7.x86_64.rpm
Установка:
98 открытий2К показов




