Развертывание Selena вручную
Подготовка к ручному развертыванию описана в документах Предварительные требования для развертывания и Проверка конфигураций окружения. Пожалуйста, начните с них, если планируете продакшн развертывание. Если вы начинаете работу с Selena и хотите следовать одному из быстрых стартов, обратитесь к Быстрые старты.
Эта тема описывает, как вручную развернуть Selena с архитектурой shared-nothing (в которой BE отвечает как за хранение, так и за вычисления). Для других режимов установки см. Обзор развертывания.
Для развертывания кластера Selena с архитектурой shared-data (разделенное хранение и вычисления), см. Развертывание и использование shared-data Selena
Шаг 1: Запуск узла Leader FE
Следующие процедуры выполняются на экземпляре FE.
-
Создайте выделенную директорию для хранения метаданных. Мы рекомендуем хранить метаданные в отдельной директории от файлов раз вертывания FE. Убедитесь, что эта директория существует и у вас есть права записи в неё.
# Замените <meta_dir> на директорию метаданных, которую хотите создать.
mkdir -p <meta_dir> -
Перейдите в директорию, которая содержит файлы развертывания Selena FE, подготовленные ранее, и измените конфигурационный файл FE fe/conf/fe.conf.
a. Укажите директорию метаданных в параметре конфигурации
meta_dir.# Замените <meta_dir> на созданную директорию метаданных.
meta_dir = <meta_dir>b. Если какие-либо из портов FE, упомянутых в Контрольном списке конфигурации окружения, заняты, вы должны назначить действительные альтернативы в конфигурационном файле FE.
http_port = aaaa # По умолчанию: 8030
rpc_port = bbbb # По умолчанию: 9020
query_port = cccc # По умолчанию: 9030
edit_log_port = dddd # По умолчанию: 9010ВНИМАНИЕ
Если вы хотите развернуть несколько узлов FE в кластере, вы должны назначить одинаковый
http_portкаждому узлу FE.c. Если вы хотите включить доступ по IP-адресу для вашего кластера, вы должны добавить параметр конфигурации
priority_networksв конфигурационный файл и назначить выделенный IP-адрес (в формате CIDR) узлу FE. Вы можете игнорировать этот параметр конфигурации, если хотите включить доступ по FQDN для вашего кластера.priority_networks = x.x.x.x/xПРИМЕЧАНИЕ
- Вы можете выполнить
ifconfigв терминале, чтобы просмотреть IP-адрес(а), принадлежащие экземпляру. - Начиная с версии 1.5.0, Selena поддерживает развертывание на основе IPv6.
d. Если у вас установлено несколько JDK на экземпляре, и вы хотите использовать конкретный JDK, отличный от указанного в переменной окружения
JAVA_HOME, вы должны указать путь, где установлен выбранный JDK, добавив параметр конфигурацииJAVA_HOMEв конфигурационный файл.# Замените <path_to_JDK> на путь, где установлен выбранный JDK.
JAVA_HOME = <path_to_JDK>f. Для информации о расширенных параметрах конфигурации см. Конфигурация параметров - Параметры конфигурации FE.
- Вы можете выполнить
-
Запустите узел FE.
-
Для включения доступа по IP-адресу для вашего кластера выполните следующую команду для запуска узла FE:
./fe/bin/start_fe.sh --daemon -
Для включения доступа по FQDN для вашего кластера выполните следующую команду для запуска узла FE:
./fe/bin/start_fe.sh --host_type FQDN --daemonОбратите внимание, что вам нужно указать параметр
--host_typeТОЛЬКО ОДИН РАЗ при первом запуске узла.ВНИМАНИЕ
Перед запуском узла FE с включенным доступом по FQDN убедитесь, что вы назначили имена хостов для всех экземпляров в /etc/hosts. См. Контрольный список конфигурации окружения - Имена хостов для получения дополнительной информации.
-
-
Проверьте логи FE, чтобы убедиться, что узел FE запущен успешно.
cat fe/log/fe.log | grep thriftЗапись в логе типа "2022-08-10 16:12:29,911 INFO (UNKNOWN x.x.x.x_9010_1660119137253(-1)|1) [FeServer.start():52] thrift server started with port 9020." указывает на то, что узел FE запущен правильно.
Шаг 2: (Для shared-nothing) Запуск службы BE
Вы можете добавлять узлы BE только в кластеры shared-nothing. Добавление узлов BE в кластеры shared-data не рекомендуется и может привести к непредсказуемому поведению.
Следующие процедуры выполняются на экземплярах BE.
-
Создайте выделенную директорию для хранения данных. Мы рекомендуем хранить данные в отдельной директории от директории развертывания BE. Убедитесь, что эта директория существует и у вас есть права записи в неё.
# Замените <storage_root_path> на директорию хранения данных, которую хотите создать.
mkdir -p <storage_root_path> -
Перейдите в директорию, которая содержит файлы развертывания Selena BE, подготовленные ранее, и измените конфигурационный файл BE be/conf/be.conf.
a. Укажите директорию данных в параметре конфигурации
storage_root_path.# Замените <storage_root_path> на созданную директорию данных.
storage_root_path = <storage_root_path>b. Если какие-либо из портов BE, упомянутых в Контрольном списке конфигурации окружения, заняты, вы должны назначить действительные альтернативы в конфигурационном файле BE.
be_port = vvvv # По умолчанию: 9060
be_http_port = xxxx # По умолчанию: 8040
heartbeat_service_port = yyyy # По умолчанию: 9050
brpc_port = zzzz # По умолчанию: 8060c. Если вы хотите включить доступ по IP-адресу для вашего кластера, вы должны добавить параметр конфигурации
priority_networksв конфигурационный файл и назначить выделенный IP-адрес (в формате CIDR) узлу BE. Вы можете игнорировать этот параметр конфигурации, если хотите включить доступ по FQDN для вашего кластера.priority_networks = x.x.x.x/xПРИМЕЧАНИЕ
- Вы можете выполнить
ifconfigв терминале, чтобы просмотреть IP-адрес(а), принадлежащие экземпляру. - Начиная с версии 1.5.0, Selena поддерживает развертывание на основе IPv6.
d. Если у вас установлено несколько JDK на экземпляре, и вы хотите использовать конкретный JDK, отличный от указанного в переменной окружения
JAVA_HOME, вы должны указать путь, где установлен выбранный JDK, добавив параметр конфигурацииJAVA_HOMEв конфигурационный файл.# Замените <path_to_JDK> на путь, где установлен выбранный JDK.
JAVA_HOME = <path_to_JDK>Для информации о расширенных параметрах конфигурации см. Конфигурация параметров - Параметры конфигурации BE.
- Вы можете выполнить
-
Запустите узел BE.
./be/bin/start_be.sh --daemonВНИМАНИЕ
- Перед запуском узла BE с включенным доступом по FQDN убедитесь, что вы назначили имена хостов для всех экземпляров в /etc/hosts. См. Контрольный список конфигурации окружения - Имена хостов для получения дополнительной информации.
- Вам не нужно указывать параметр
--host_typeпри запуске узлов BE.
-
Проверьте логи BE, чтобы убедиться, что узел BE запущен успешно.
cat be/log/be.INFO | grep heartbeatЗапись в логе типа "I0810 16:18:44.487284 3310141 task_worker_pool.cpp:1387] Waiting to receive first heartbeat from frontend" указывает на то, что узел BE запущен правильно.
-
Вы можете запустить новые узлы BE, повторив вышеуказанные процедуры на других экземплярах BE.
ПРИМЕЧАНИЕ
Высокодоступный кластер BE автоматически формируется, когда в кластер Selena развернуто и добавлено не менее трех узлов BE. Если вы хотите развернуть только один узел BE, вы должны установить
default_replication_numв1в конфигурационном файле FE fe/conf/fe.conf.
default_replication_num = 1
Шаг 2: (Для shared-data) Запуск службы CN
Вы можете добавлять узлы CN только в кластеры shared-data. Добавление узлов CN в кластеры shared-nothing не рекомендуется и может привести к непредсказуемому поведению.
Compute Node (CN) — это служба вычислений без состояния, которая не поддерживает данные самостоятельно. Вы можете дополнительно добавить узлы CN в ваш кластер для предоставления дополнительных вычислительных ресурсов для запросов. Вы можете развернуть узлы CN с файлами развертывания BE. Compute Nodes поддерживаются начиная с версии 1.5.0.
-
Перейдите в директорию, которая содержит файлы развертывания Selena BE, подготовленные ранее, и измените конфигурационный файл CN be/conf/cn.conf.
a. Если как ие-либо из портов CN, упомянутых в Контрольном списке конфигурации окружения, заняты, вы должны назначить действительные альтернативы в конфигурационном файле CN.
be_port = vvvv # По умолчанию: 9060
be_http_port = xxxx # По умолчанию: 8040
heartbeat_service_port = yyyy # По умолчанию: 9050
brpc_port = zzzz # По умолчанию: 8060b. Если вы хотите включить доступ по IP-адресу для вашего кластера, вы должны добавить параметр конфигурации
priority_networksв конфигурационный файл и назначить выделенный IP-адрес (в формате CIDR) узлу CN. Вы можете игнорировать этот параметр конфигурации, если хотите включить доступ по FQDN для вашего кластера.priority_networks = x.x.x.x/xПРИМЕЧАНИЕ
- Вы можете выполнить
ifconfigв терминале, чтобы просмотреть IP-адрес(а), принадлежащие экземпляру. - Начиная с версии 1.5.0, Selena поддерживает развертывание на основе IPv6.
c. Если у вас установлено несколько JDK на экземпляре, и вы хотите использовать конкретный JDK, отличный от указанного в переменной окружения
JAVA_HOME, вы должны указать путь, где установлен выбранный JDK, добавив параметр конфигурацииJAVA_HOMEв конфигурационный файл.# Замените <path_to_JDK> на путь, где установлен выбранный JDK.
JAVA_HOME = <path_to_JDK>Для информации о расширенных параметрах конфигурации см. Конфигурация параметров - Параметры конфигурации BE, поскольку большинство параметров CN наследуются от BE.
- Вы можете выполнить
-
Запустите узел CN.
./be/bin/start_cn.sh --daemonВНИМАНИЕ
- Перед запуском узла CN с включенным доступом по FQDN убедитесь, что вы назначили имена хостов для всех экземпляров в /etc/hosts. См. Контрольный список конфигурации окружения - Имена хостов для получения дополнительной информации.
- Вам не нужно указывать параме тр
--host_typeпри запуске узлов CN.
-
Проверьте логи CN, чтобы убедиться, что узел CN запущен успешно.
cat be/log/cn.INFO | grep heartbeatЗапись в логе типа "I0313 15:03:45.820030 412450 thrift_server.cpp:375] heartbeat has started listening port on 9050" указывает на то, что узел CN запущен правильно.
-
Вы можете запустить новые узлы CN, повторив вышеуказанные процедуры на других экземплярах.
Шаг 3: Настройка кластера
После того как все узлы FE и BE/CN запущены правильно, вы можете настроить кластер Selena.
Следующие процедуры выполняются на клиент е MySQL. У вас должен быть установлен клиент MySQL версии 5.5.0 или более поздней.
-
Подключитесь к Selena через ваш клиент MySQL. Вам нужно войти с начальной учетной записью
root, пароль по умолчанию пустой.# Замените <fe_address> на IP-адрес (priority_networks) или FQDN
# узла Leader FE, и замените <query_port> (По умолчанию: 9030)
# на query_port, указанный в fe.conf.
mysql -h <fe_address> -P<query_port> -uroot -
Проверьте статус узла Leader FE, выполнив следующий SQL.
SHOW PROC '/frontends'\GПример:
MySQL [(none)]> SHOW PROC '/frontends'\G
*************************** 1. row ***************************
Name: x.x.x.x_9010_1686810741121
IP: x.x.x.x
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: LEADER
ClusterId: 919351034
Join: true
Alive: true
ReplayedJournalId: 1220
LastHeartbeat: 2023-06-15 15:39:04
IsHelper: true
ErrMsg:
StartTime: 2023-06-15 14:32:28
Version: 3.0.0-48f4d81
1 row in set (0.01 sec)- Если поле
Aliveимеет значениеtrue, этот узел FE правильно запущен и добавлен в кластер. - Если поле
Roleимеет значениеFOLLOWER, этот узел FE имеет право быть избранным в качестве узла Leader FE. - Если поле
Roleимеет значениеLEADER, этот узел FE является узлом Leader FE.
- Если поле
-
Добавьте узлы BE/CN в кластер.
- (Для shared-nothing) Добавьте узлы BE.
-- Замените <be_address> на IP-адрес (priority_networks)
-- или FQDN узлов BE, и замените <heartbeat_service_port>
-- на heartbeat_service_port (По умолчанию: 9050), указанный в be.conf.
ALTER SYSTEM ADD BACKEND "<be_address>:<heartbeat_service_port>";ПРИМЕЧАНИЕ
Вы можете использовать предыдущую команду для добавления нескольких узлов BE одновременно. Каждая пара
<be_address>:<heartbeat_service_port>представляет один узел BE.- (Для shared-data) Добавьте узлы CN.
-- Замените <cn_address> на IP-адрес (priority_networks)
-- или FQDN узла CN, и замените <heartbeat_service_port>
-- на heartbeat_service_port (По умолчанию: 9050), указанный в cn.conf.
ALTER SYSTEM ADD COMPUTE NODE "<cn_address>:<heartbeat_service_port>";ПРИМЕЧАНИЕ
Вы можете добавить несколько узлов CN одним SQL. Каждая пара
<cn_address>:<heartbeat_service_port>представляет один узел CN. -
Проверьте статус узлов BE/CN, выполнив следующий SQL.
- (Для shared-nothing) Проверьте статус узлов BE.
SHOW PROC '/backends'\GПример:
MySQL [(none)]> SHOW PROC '/backends'\G
*************************** 1. row ***************************
BackendId: 10007
IP: 172.26.195.67
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-06-15 15:23:08
LastHeartbeat: 2023-06-15 15:57:30
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
TabletNum: 30
DataUsedCapacity: 0.000
AvailCapacity: 341.965 GB
TotalCapacity: 1.968 TB
UsedPct: 83.04 %
MaxDiskUsedPct: 83.04 %
ErrMsg:
Version: 3.0.0-48f4d81
Status: {"lastSuccessReportTabletsTime":"2023-06-15 15:57:08"}
DataTotalCapacity: 341.965 GB
DataUsedPct: 0.00 %
CpuCores: 16
NumRunningQueries: 0
MemUsedPct: 0.01 %
CpuUsedPct: 0.0 %Если поле
Aliveимеет значениеtrue, этот узел BE правильно запущен и добавлен в кластер.- (Для shared-data) Проверьте статус узлов CN.
SHOW PROC '/compute_nodes'\GПример:
MySQL [(none)]> SHOW PROC '/compute_nodes'\G
*************************** 1. row ***************************
ComputeNodeId: 10003
IP: x.x.x.x
HeartbeatPort: 9050
BePort: 9060
HttpPort: 8040
BrpcPort: 8060
LastStartTime: 2023-03-13 15:11:13
LastHeartbeat: 2023-03-13 15:11:13
Alive: true
SystemDecommissioned: false
ClusterDecommissioned: false
ErrMsg:
Version: 2.5.2-c3772fb
1 row in set (0.00 sec)Если поле
Aliveимеет значениеtrue, этот узел CN правильно запущен и добавлен в кластер.После того как CN правильно запущены и вы хотите использовать CN во время запросов, установите системные переменные
SET prefer_compute_node = true;иSET use_compute_nodes = -1;. Для получения дополнительной информации см. Системные переменные.
Шаг 4: (Опционально) Развертывание высокодоступного кластера FE
Высокодоступный кластер FE требует как минимум ТРЕХ узлов Follower FE в кластере Selena. После успешного запуска узла Leader FE вы можете запустить два новых узла FE для развертывания высокодоступного кластера FE.
-
Подключитесь к Selena через ваш клиент MySQL. Вам нужно войти с начальной учетной записью
root, пароль по умолчанию пустой.# Замените <fe_address> на IP-адрес (priority_networks) или FQDN
# узла Leader FE, и замените <query_port> (По умолчанию: 9030)
# на query_port, указанный в fe.conf.
mysql -h <fe_address> -P<query_port> -uroot -
Добавьте новый узел Follower FE в кластер, выполнив следующий SQL.
-- Замените <fe_address> на IP-адрес (priority_networks)
-- или FQDN нового узла Follower FE, и замените <edit_log_port>
-- на edit_log_port (По умолчанию: 9010), указанный в fe.conf.
ALTER SYSTEM ADD FOLLOWER "<fe2_address>:<edit_log_port>";ПРИМЕЧАНИЕ
- Вы можете использовать предыдущую команду для добавления одного узла Follower FE за раз.
- Если вы хотите добавить узлы Observer FE, выполните
ALTER SYSTEM ADD OBSERVER "<fe_address>:<edit_log_port>"=. Для подробных инструкций см. ALTER SYSTEM - FE.
-
Запустите терминал на новом экземпляре FE, создайте выделенную директорию для хранения метаданных, перейдите в директорию, которая содержит файлы развертывания Selena FE, и измените конфигурационный файл FE fe/conf/fe.conf. Для получения дополнительных инструкций см. Шаг 1: Запуск узла Leader FE. В основном, вы можете повторить процедуры из Шага 1 за исключением команды, используемой для запуска узла FE.
После настройки узла Follower FE выполните следующий SQL для назначения вспомогательного узла для узла Follower FE и запустите узел Follower FE.
ПРИМЕЧАНИЕ
При добавлении нового узла Follower FE в кластер вы должны назначить вспомогательный узел (по сути, существующий узел Follower FE) новому узлу Follower FE для синхронизации метаданных.
-
Для запуска нового узла FE с доступом по IP-адресу выполните следующую команду для запуска узла FE:
# Замените <helper_fe_ip> на IP-адрес (priority_networks)
# узла Leader FE, и замените <helper_edit_log_port> (По умолчанию: 9010) на
# edit_log_port узла Leader FE.
./fe/bin/start_fe.sh --helper <helper_fe_ip>:<helper_edit_log_port> --daemonОбратите внимание, что вам нужно указать параметр
--helperТОЛЬКО ОДИН РАЗ при первом запуске узла. -
Для запуска нового узла FE с доступом по FQDN выполните следующую команду для запуска узла FE:
# Замените <helper_fqdn> на FQDN узла Leader FE,
# и замените <helper_edit_log_port> (По умолчанию: 9010) на edit_log_port узла Leader FE.
./fe/bin/start_fe.sh --helper <helper_fqdn>:<helper_edit_log_port> \
--host_type FQDN --daemonОбратите внимание, что вам нужно указать параметры
--helperи--host_typeТОЛЬКО ОДИН РАЗ при первом запуске узла.
-
-
Проверьте логи FE, чтобы убедиться, что узел FE запущен успешно.
cat fe/log/fe.log | grep thriftЗапись в логе типа "2022-08-10 16:12:29,911 INFO (UNKNOWN x.x.x.x_9010_1660119137253(-1)|1) [FeServer.start():52] thrift server started with port 9020." указывает на то, что узел FE запущен правильно.
-
Повторите предыдущие процедуры 2, 3 и 4, пока не запустите все новые узлы Follower FE правильно, а затем проверьте статус узлов FE, выполнив следующий SQL из вашего клиента MySQL:
SHOW PROC '/frontends'\GПример:
MySQL [(none)]> SHOW PROC '/frontends'\G
*************************** 1. row ***************************
Name: x.x.x.x_9010_1686810741121
IP: x.x.x.x
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: LEADER
ClusterId: 919351034
Join: true
Alive: true
ReplayedJournalId: 1220
LastHeartbeat: 2023-06-15 15:39:04
IsHelper: true
ErrMsg:
StartTime: 2023-06-15 14:32:28
Version: 3.0.0-48f4d81
*************************** 2. row ***************************
Name: x.x.x.x_9010_1686814080597
IP: x.x.x.x
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
ClusterId: 919351034
Join: true
Alive: true
ReplayedJournalId: 1219
LastHeartbeat: 2023-06-15 15:39:04
IsHelper: true
ErrMsg:
StartTime: 2023-06-15 15:38:53
Version: 3.0.0-48f4d81
*************************** 3. row ***************************
Name: x.x.x.x_9010_1686814090833
IP: x.x.x.x
EditLogPort: 9010
HttpPort: 8030
QueryPort: 9030
RpcPort: 9020
Role: FOLLOWER
ClusterId: 919351034
Join: true
Alive: true
ReplayedJournalId: 1219
LastHeartbeat: 2023-06-15 15:39:04
IsHelper: true
ErrMsg:
StartTime: 2023-06-15 15:37:52
Version: 3.0.0-48f4d81
3 rows in set (0.02 sec)- Если поле
Aliveимеет значениеtrue, этот узел FE правильно запущен и добавлен в кластер. - Если поле
Roleимеет значениеFOLLOWER, этот узел FE имеет право быть избранным в качестве узла Leader FE. - Если поле
Roleимеет значениеLEADER, этот узел FE является узлом Leader FE.
- Если поле
Остановка кластера Selena
Вы можете остановить кластер Selena, выполнив следующие команды на соответствующих экземплярах.
-
Остановить узел FE.
./fe/bin/stop_fe.sh -
Остановить узел BE.
./be/bin/stop_be.sh -
Остановить узел CN.
./be/bin/stop_cn.sh
Устранение неполадок
Попробуйте следующие шаги для выявления ошибок, которые возникают при запуске узлов FE или BE:
-
Если узел FE не запускается правильно, вы можете выявить проблему, проверив его лог в fe/log/fe.warn.log.
cat fe/log/fe.warn.logВыявив и решив проблему, вы должны сначала завершить текущий процесс FE, удалить существующую директорию meta, создать новую директорию хранения метаданных, а затем перезапустить узел FE с правильной конфигурацией.
-
Если узел BE не запускается правильно, вы можете выявить проблему, проверив его лог в be/log/be.WARNING.
cat be/log/be.WARNINGВыявив и решив проблему, вы должны сначала завершить существующий процесс BE, удалить существующую директорию storage, создать новую директорию хранения данных, а затем перезапустить узел BE с правильной конфигурацией.
-
Если узел CN не запускается правильно, вы можете выявить проблему, проверив его лог в be/log/cn.WARNING.
cat be/log/cn.WARNINGВыявив и решив проблему, вы должны сначала завершить существующий процесс CN, а затем перезапустить узел CN с правильной конфигурацией.
Что делать дальше
После развертывания вашего кластера Selena вы можете перейти к Настройке после развертывания для получения инструкций по начальным мерам управления.