Проверка конфигураций окружения
В этом разделе перечислены все элементы конфигурации окружения и системы, которые необходимо проверить и настроить перед развертыванием Selena. Правильная настройка этих элементов конфигурации позволит вашему кластеру Selena работать с вы сокой доступностью и производительностью.
Порты
Selena использует определенные порты для различных сервисов. Проверьте, заняты ли эти порты на каждом экземпляре, если вы развернули другие сервисы на этих экземплярах.
Порты FE
На экземплярах, используемых для развертывания FE, необходимо проверить следующие порты:
8030: порт HTTP-сервера FE (http_port)9020: порт Thrift-сервера FE (rpc_port)9030: порт MySQL-сервера FE (query_port)9010: порт внутренней связи FE (edit_log_port)6090: порт прослушивания RPC сервера метаданных cloud-native FE (cloud_native_meta_port)
Выполните следующие команды на экземплярах FE, чтобы проверить, заняты ли эти порты:
netstat -tunlp | grep 8030
netstat -tunlp | grep 9020
netstat -tunlp | grep 9030
netstat -tunlp | grep 9010
netstat -tunlp | grep 6090
Если какой-либо из указанных портов занят, необходимо найти альтернативы и указать их позже при развертывании узлов FE. Подробные инструкции см. в разделе Развертывание Selena - Запуск узла Leader FE.
Порты BE
На экземплярах, используемых для развертывания BE, необходимо проверить следующие порты:
9060: порт Thrift-сервера BE (be_port)8040: порт HTTP-сервера BE (be_http_port)9050: порт службы heartbeat BE (heartbeat_service_port)8060: порт bRPC BE (brpc_port)9070: дополнительный порт службы агента для BE и CN (starlet_port)
Выполните следующие команды на экземплярах BE, чтобы проверить, заняты ли эти порты:
netstat -tunlp | grep 9060
netstat -tunlp | grep 8040
netstat -tunlp | grep 9050
netstat -tunlp | grep 8060
netstat -tunlp | grep 9070
Если какой-либо из указанных портов занят, необходимо найти альтернативы и указать их позже при развертывании узлов BE. Подробные инструкции см. в разделе Развертывание Selena - Запуск службы BE.
Порты CN
На экземплярах, используемых для развертывания CN, необходимо проверить следующие порты:
9060: порт Thrift-сервера CN (be_port)8040: порт HTTP-сервера CN (be_http_port)9050: порт службы heartbeat CN (heartbeat_service_port)8060: порт bRPC CN (brpc_port)9070: дополнительный порт службы агента для BE и CN (starlet_port)
Выполните следующие команды на экземплярах CN, чтобы проверить, заняты ли эти порты:
netstat -tunlp | grep 9060
netstat -tunlp | grep 8040
netstat -tunlp | grep 9050
netstat -tunlp | grep 8060
netstat -tunlp | grep 9070
Если какой-либо из указанных портов занят, необходимо найти альтернативы и указать их позже при развертывании узлов CN. Подробные инструкции см. в разделе Развертывание Selena - Запуск службы CN.
Имена хостов
Если вы хотите включить доступ по FQDN для вашего кластера Selena, необходимо назначить имя хоста каждому экземпляру.
В файле /etc/hosts на каждом экземпляре необходимо указать IP-адреса и соответствующие имена хостов всех остальных экземпляров в кластере.
ВНИМАНИЕ
Все IP-адреса в файле /etc/hosts должны быть уникальными.
Конфигурация JDK
Selena полагается на переменную окружения JAVA_HOME для поиска зависимости Java на экземпляре.
Выполните следующую команду для проверки переменной окружения JAVA_HOME:
echo $JAVA_HOME
Выполните следующие шаги для установки JAVA_HOME:
-
Установите
JAVA_HOMEв файле /etc/profile:sudo vi /etc/profile
# Замените <path_to_JDK> на путь, где установлен JDK.
export JAVA_HOME=<path_to_JDK>
export PATH=$PATH:$JAVA_HOME/bin -
Примените изменения:
source /etc/profile
Выполните следующую команду для проверки изменений:
java -version
Регулятор масштабирования CPU
Этот элемент конфигурации является опциональным. Вы можете пропустить его, если ваш CPU не поддерживает регулятор масштабирования.
Регулятор масштабирования CPU управляет режимом питания CPU. Если ваш CPU поддерживает его, мы рекомендуем установить его в performance для лучшей производительности CPU:
echo 'performance' | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
Конфигурации памяти
Memory Overcommit
Memory Overcommit позволяет операционной системе выделять процессам больше ресурсов памяти, чем физически доступно. Мы рекомендуем включить Memory Overcommit.
# Измените файл конфигурации.
cat >> /etc/sysctl.conf << EOF
vm.overcommit_memory=1
EOF
# Примените изменения.
sysctl -p
Transparent Huge Pages
Transparent Huge Pages включены по умолчанию. Мы рекомендуем отключить эту функцию, поскольку она может мешать работе аллокатора памяти и тем самым приводить к снижению производительности.
# Временно измените конфигурацию.
echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo madvise | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
# Постоянно измените конфигурацию.
cat >> /etc/rc.d/rc.local << EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo madvise > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
chmod +x /etc/rc.d/rc.local
Swap Space
Мы рекомендуем отключить Swap Space.
Выполните следующие шаги для проверки и отключения Swap Space:
-
Отключите Swap Space.
swapoff /<path_to_swap_space>
swapoff -a -
Удалите информацию о Swap Space из файла конфигурации /etc/fstab.
/<path_to_swap_space> swap swap defaults 0 0 -
Убедитесь, что Swap Space отключен.
free -m
Swappiness
Мы рекомендуем отключить swappiness, чтобы исключить его влияние на производительность.
# Измените файл конфигурации.
cat >> /etc/sysctl.conf << EOF
vm.swappiness=0
EOF
# Примените изменения.
sysctl -p
Конфигурации хранилища
Мы рекомендуем выбрать подходящий алгоритм планировщика в соответствии с используемым носителем данных.
Вы можете выполнить следующую команду для проверки используемого алгоритма планировщика:
cat /sys/block/${disk}/queue/scheduler
# Например, выполните cat /sys/block/vdb/queue/scheduler
Мы рекомендуем использовать планировщик mq-deadline для дисков SATA и алгоритм планировщика kyber для дисков SSD и NVMe.
SATA
Алгоритм планировщика mq-deadline подходит для дисков SATA.
# Временно измените конфигурацию.
echo mq-deadline | sudo tee /sys/block/${disk}/queue/scheduler
# Постоянно измените конфигурацию.
cat >> /etc/rc.d/rc.local << EOF
echo mq-deadline | sudo tee /sys/block/${disk}/queue/scheduler
EOF
chmod +x /etc/rc.d/rc.local
SSD и NVMe
-
Если ваши диски NVMe или SSD поддерживают алгоритм планировщика kyber:
# Временно измените конфигурацию.
echo kyber | sudo tee /sys/block/${disk}/queue/scheduler
# Постоянно измените конфигурацию.
cat >> /etc/rc.d/rc.local << EOF
echo kyber | sudo tee /sys/block/${disk}/queue/scheduler
EOF
chmod +x /etc/rc.d/rc.local -
Если ваши диски NVMe или SSD поддерживают планировщик none (или noop).
# Временно измените конфигурацию.
echo none | sudo tee /sys/block/vdb/queue/scheduler
# Постоянно измените конфигурацию.
cat >> /etc/rc.d/rc.local << EOF
echo none | sudo tee /sys/block/${disk}/queue/scheduler
EOF
chmod +x /etc/rc.d/rc.local
SELinux
Мы рекомендуем отключить SELinux.
# Временно измените конфигурацию.
setenforce 0
# Постоянно измените конфигурацию.
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sed -i 's/SELINUXTYPE/#SELINUXTYPE/' /etc/selinux/config
Брандмауэр
Откройте внутренние порты для узлов FE, узлов BE и Broker, если ваш брандмауэр включен.
systemctl stop firewalld.service
systemctl disable firewalld.service
Переменная LANG
Выполните следующую команду для проверки и ручной настройки переменной LANG:
# Измените файл конфигурации.
echo "export LANG=en_US.UTF8" >> /etc/profile
# Примените изменения.
source /etc/profile
Часовой пояс
Установите этот элемент в соответствии с вашим фактическим часовым поясом.
Следующий пример устанавливает часовой пояс /Asia/Shanghai.
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock
Конфигурации ulimit
Проблемы могут возникнуть с Selena, если значения максимальных дескрипторов файлов и максимальных пользовательских процессов аномально малы. Мы рекомендуем увеличить эти значения.
cat >> /etc/security/limits.conf << EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* hard memlock unlimited
* soft memlock unlimited
EOF
cat >> /etc/security/limits.d/20-nproc.conf << EOF
* soft nproc 65535
root soft nproc 65535
EOF
Конфигурация файловой системы
Мы рекомендуем использовать журналируемую файловую систему ext4 или xfs. Вы можете выполнить следующую команду для проверки типа монтирования:
df -Th
Конфигурация сети
tcp_abort_on_overflow
Разрешить системе сбрасывать новые соединения, если система в настоящее время перегружена новыми попытками подключения, которые демон(ы) не могут обработать:
# Измените файл конфигурации.
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_abort_on_overflow=1
EOF
# Примените изменения.
sysctl -p
somaxconn
Укажите максимальное количество запросов на подключение в очереди для любого прослушивающего сокета как 1024:
# Измените файл конфигурации.
cat >> /etc/sysctl.conf << EOF
net.core.somaxconn=1024
EOF
# Примените изменения.
sysctl -p
Конфигурация NTP
Необходимо настроить синхронизацию времени между узлами в вашем кластере Selena для обеспечения линейной согласованности транзакций. Вы можете использовать либо интернет-службу времени, предоставляемую pool.ntp.org, либо службу NTP, встроенную в автономную среду. Например, вы можете использовать службу NTP, предоставляемую вашим поставщиком облачных услуг.
-
Проверьте, существует ли сервер времени NTP или служба Chrony.
rpm -qa | grep ntp
systemctl status chronyd -
Установите службу NTP, если ее нет.
sudo yum install ntp ntpdate && \
sudo systemctl start ntpd.service && \
sudo systemctl enable ntpd.service -
Проверьте службу NTP.
systemctl list-unit-files | grep ntp -
Проверьте подключение и состояние мониторинга службы NTP.
netstat -tunlp | grep ntp -
Проверьте, синхронизировано ли ваше приложение с сервером NTP.
ntpstat -
Проверьте состояние всех настроенных серверов NTP в вашей сети.
ntpq -p
Конфигурации высокой параллельности
Если ваш кластер Selena имеет высокую нагрузку параллельности, мы рекомендуем установить следующие конфигурации.