Skip to content

Установка

Установка через плейбук

Для установки Greenplum необходимо запустить плейбук GP_core согласно инструкции на соответствующей странице.

Ручная установка

Установка Greenplum состоит из следующих этапов:

  1. Подготовка виртуальных машин к установке Greenplum
  2. Установка Greenplum Database Software
  3. Создание каталогов данных
  4. Валидация системы
  5. Инициализация Greenplum
  6. Создание ресурсных групп
  7. Настройка Kerberos аутентификации в Greenplum

Подготовка серверов к установке Greenplum

Для корректной работы Greenplum необходимо настроить хосты перед установкой. Следующие действия необходимо выполнить на каждом хосте Greenplum:

  • Отключить SELinux

  • Отключить сервис firewalld:

    sudo systemctl stop firewalld.service
    sudo systemctl disable firewalld.service
    

  • Изменить настройки ядра Linux в файле /etc/sysctl.conf. В таблице ниже представлено описание каждого параметра ядра Linux, который необходимо задать:

Параметр Пример значения Расчет Описание
kernel.shmall 197951838 PHYS_PAGES / 2 Устанавливает общий объем разделяемой памяти в страницах, который может использоваться в масштабе всей системы
kernel.shmmax 810810728448 kernel.shmall * PAGE_SIZE Устанавливает максимальный размер одного сегмента разделяемой памяти в байтах
kernel.shmmni 4096 256*(RAM GB) Определяет максимальное количество сегментов разделяемой памяти для всей системы
vm.overcommit_memory 2 Для GP всегда 2 Определяет объем памяти, который может быть выделен процессам
vm.overcommit_ratio 95 При использовании ресурсных очередей:
vm.overcommit_ratio = (RAM - 0.026 * gp_vmem_rq) / RAM
gp_vmem_rq = ((SWAP + RAM) – (7.5GB + 0.05 * RAM)) / 1.7
Процент ОЗУ, который используется для процессов приложений. Остальная часть зарезервирована под ОС
net.ipv4.ip_local_port_range 10000 65535 — Порты, выделенные под ОС
kernel.sem 500 2048000 200 4096 — Описывает количество семафоров, доступных для ОС
kernel.sysrq 1 Фиксированное значение 1 Флаг включения SysRq комбинаций
kernel.core_uses_pid 1 Фиксированное значение 1 Добавляет к имени файла дампа номер PID процесса
kernel.msgmnb 65536 Фиксированное значение 65536 Размер очереди сообщений
kernel.msgmax 65536 Фиксированное значение 65536 Влияет на размер сообщения, которое можно поместить в очередь
kernel.msgmni 2048 1024*(RAM GB) Влияет на число агентов, которые можно запустить
net.ipv4.tcp_syncookies 1 Документация GP рекомендует 1 (несмотря на рекомендации Linux для высоконагруженных систем) Флаг, который включает/отключает передачу syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета
net.ipv4.conf.default.accept_source_route 0 Для GP всегда 0 Флаг, заставляет сетевые интерфейсы принимать пакеты с установленной опцией Strict Source Route (SSR) или Loose Source Routing (LSR)
net.ipv4.tcp_max_syn_backlog 4096 Документация GP рекомендует 4096 Определяет максимальное время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, пакета
net.ipv4.conf.all.arp_filter 1 Документация GP рекомендует 1 Флаг, который включает/выключает связывание IP-адреса с ARP-адресом. Если включена, то ответ передается через тот интерфейс, через который поступил запрос
net.core.netdev_max_backlog 10000 Может потребоваться настройка для обработки пиковых нагрузок Регулирует размер очереди пакетов между сетевой картой и ядром. При переполнении очереди новые пакеты отбрасываются
net.core.rmem_max 2097152 Документация GP рекомендует 2097152 Максимальный размер приемного буфера сокета
net.core.wmem_max 2097152 Документация GP рекомендует 2097152 Максимальный размер буфера отправки сокета
vm.swappiness 10 Документация GP рекомендует 10 Настройка агрессивности "высвапливания" памяти. Поддерживает максимальный объем оперативной памяти доступным для приложений
vm.zone_reclaim_mode 0 Фиксированное значение 0 —
vm.dirty_expire_centisecs 500 Документация GP рекомендует 500 Время в миллисекундах, определяющее интервал сброса на диск данных в dirty pages
vm.dirty_writeback_centisecs 100 Документация GP рекомендует 100 Интервал в миллисекундах для запуска синхронизации обработки данных dirty pages
vm.dirty_background_ratio 0 Если RAM > 64GB, то 0; иначе 3 Процент памяти, занятый dirty pages, при котором необходимо запускать синхронизацию
vm.dirty_ratio 0 — Процент памяти, который можно занять под dirty pages
vm.dirty_background_bytes 1610612736 Рекомендуемое значение 1610612736
Если RAM ≤ 64GB, то удалить параметр
Количество байт под dirty pages до автоматической синхронизации на диск
vm.dirty_bytes 4294967296 Рекомендуемое значение 4294967296
Если RAM ≤ 64GB, то удалить параметр
Общее количество байт, которое можно занять под dirty pages
  • Заполнить информацию о хостах системы в файле /etc/hosts:
127.0.0.1 localhost localhost.localdomain
# Перечислить остальные хосты кластера
  • Настроить System Resources Limits, прописав следующие значения в файлы /etc/security/limits.conf и /etc/security/limits.d/20-nproc.conf:
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
  • Примонтировать диски в формате XFS

  • Выставить Disk I/O settings. Значение blockdev должно быть равно 16384 на каждом диске:

sudo /sbin/blockdev --setra 16384 /dev/[device_name]
sudo echo "/sbin/blockdev --setra 16384 /dev/[device_name]" >> /etc/rc.d/rc.local
sudo chmod +x /etc/rc.d/rc.local
  • Выставить Disk I/O scheduler. Должен принимать значение deadline:
sudo echo deadline > /sys/block/[device]/queue/scheduler
sudo grubby --update-kernel=ALL --args="elevator=deadline"
  • Выставить Transparent Huge Pages в значение never:
sudo grubby --update-kernel=ALL --args="transparent_hugepage=never"
  • Настроить IPC Object Removal. В файле /etc/systemd/logind.conf установить RemoveIPC в значение no

  • Настроить SSH Connection Threshold, выставив следующие значения в файле /etc/ssh/sshd_config:

    MaxStartups 10:30:200
    MaxSessions 200
    
  • Синхронизировать системные часы

  • Создать пользователя gpadmin с правами на sudo

  • Сгенерировать SSH-ключ

  • Выполнить перезагрузку хоста

Установка Greenplum Database Software

Для установки СУБД Greenplum необходимо скачать дистрибутив и выполнить следующие действия под пользователем gpadmin:

  • Загрузить дистрибутив на все хосты Greenplum в папку /home/gpadmin

  • На каждом хосте Greenplum выполнить распаковку дистрибутива в папку /usr/local/greenplum-[version] и создать symlink на /usr/local/greenplum:

tar -xvf [package] -C /usr/local/greenplum-[version]/
sudo ln -s /usr/local/greenplum-[version] /usr/local/greenplum
  • На каждом хосте Greenplum добавить подгрузку переменных окружений в файл .bashrc:
echo "source /usr/local/greenplum/greenplum_path.sh" >> .bashrc
  • С мастер-хоста Greenplum выполнить обмен SSH-ключами между остальными серверами Greenplum при помощи утилиты ssh-copy-id

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

gpssh-exkeys -f hostfile_exkeys

Создание каталогов данных

Для инициализации системы необходимо создать каталоги, в которые будут установлены компоненты Greenplum.

  • На мастер-хосте и резервном мастер-хосте создать папку под системные каталоги:
sudo mkdir -p //master
sudo chown gpadmin:gpadmin //master
  • Создать папки для хранения данных на сегмент-хостах GP. Для этого необходимо создать файл hostfile_gpssh_segonly со списком сегмент-хостов Greenplum и выполнить с мастер-хоста следующие команды:
gpssh -f hostfile_gpssh_segonly -e 'mkdir -p //primary'
gpssh -f hostfile_gpssh_segonly -e 'mkdir -p //mirror'
gpssh -f hostfile_gpssh_segonly -e 'chown -R gpadmin //*'

Валидация системы

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

  • Создать файл hostfile_gpchecknet со списком тестируемых сетевых интерфейсов Greenplum

  • Запустить проверку сети в параллельном и полноматричном режиме:

gpcheckperf -f hostfile_gpchecknet -r N -d /tmp > N_net_test.out
gpcheckperf -f hostfile_gpchecknet -r M -d /tmp > M_net_test.out
  • Создать файл hostfile_gpcheckperf со списком тестируемых сегмент-хостов Greenplum

  • Запустить проверку дисков:

gpcheckperf -f hostfile_gpcheckperf -r ds -D -d /data1/primary -d /data2/primary -d /data1/mirror -d /data2/mirror > perfcheck.out

Инициализация Greenplum

Для инициализации Greenplum необходимо с мастер-хоста выполнить следующие действия:

  • Создать файл hostfile_gpinitsystem со списком сегмент-хостов Greenplum

  • Перенести шаблон инициирующей конфигурации:

cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpinitsystem_config
  • Заполнить инициирующую конфигурацию согласно таблице параметров:
Параметр Пример заполнения Обязательный Описание
ARRAY_NAME Greenplum Data Platform * Имя кластера
MACHINE_LIST_FILE — * При запуске без флага -h указывает на файл со списком сегментов
SEG_PREFIX gpseg * Задает префикс названий папок для сегментов
PORT_BASE 6000 * Базовый номер порта, по которому рассчитываются номера портов сегментов
DATA_DIRECTORY declare -a DATA_DIRECTORY=(//primary //primary //primary //primary //primary //primary //primary //primary) * Указывает директории, в которых нужно создать директории под сегменты. Количество директорий задает количество сегментов на хосте (в данном случае 8)
MASTER_HOSTNAME — * DNS имя мастера
MASTER_DIRECTORY //master * Директория для системных каталогов мастера
MASTER_PORT 5432 * Порт для клиентского подключения
TRUSTED_SHELL ssh * Протокол, по которому происходит взаимодействие с сегментами
CHECK_POINT_SEGMENTS 8 * Максимальное расстояние между контрольными точками WAL в сегментах файла журнала
ENCODING UNICODE * Задает кодировку
DATABASE_NAME gpdb * Название базы данных
MIRROR_PORT_BASE 7000 * Базовый номер порта для зеркал
MIRROR_DATA_DIRECTORY declare -a MIRROR_DATA_DIRECTORY=(//mirror //mirror //mirror //mirror //mirror //mirror //mirror //mirror) * Аналогично DATA_DIRECTORY, только для зеркал
QD_PRIMARY_ARRAY, PRIMARY_ARRAY, MIRROR_ARRAY — * для флага -I Задает альтернативный формат конфигурации инициализации
HEAP_CHECKSUM — * —
HBA_HOSTNAMES — * —
  • Запустить утилиту инициализации Greenplum:
gpinitsystem -c gpinitsystem_config -h hostfile_gpinitsystem
  • Выставить часовой пояс Europe/Moscow:
gpconfig -c TimeZone -v 'Europe/Moscow'
  • Заполнить переменные окружения на мастер и резервном мастер-хостах Greenplum:
echo "export MASTER_DATA_DIRECTORY=//master/gpseg-1" >> .bashrc
echo "export LD_PRELOAD=/lib64/libz.so.1 ps" >> .bashrc
  • Инициировать резервный мастер-хост:
gpinitstandby -s -S $MASTER_DATA_DIRECTORY

Создание ресурсных групп

Для включения ресурсных групп необходимо выполнить следующие шаги:

  • На каждом хосте GP создать файл конфигурации для cgroups /etc/cgconfig.d/gpdb.conf со следующим содержанием:
group gpdb {
 perm {
     task {
         uid = gpadmin;
         gid = gpadmin;
     }
     admin {
         uid = gpadmin;
         gid = gpadmin;
     }
 }
 cpu {
 }
 cpuacct {
 }
 cpuset {
 }
 memory {
 }
}
  • Установить libcgroup-tools на каждом хосте GP при помощи менеджера пакетов (необходим доступ в интернет или локальный репозиторий):
sudo yum install libcgroup-tools    # CentOS
sudo apt install cgroup-tools       # Ubuntu
sudo cgconfigparser -l /etc/cgconfig.d/gpdb.conf
  • На каждом хосте Greenplum запустить сервисы cgroups:
sudo systemctl enable cgconfig.service
sudo systemctl start cgconfig.service
  • Выставить ресурсные группы в качестве ресурсного менеджера Greenplum:
gpconfig -c gp_resource_manager -v "group"
  • Перезапустить кластер GP

О выявленных проблемах и замечаниях просьба обращаться к Марку Лебедеву.
К обращению приложите файл logfile из директории дистрибутива и подробное описание ошибки с указанием параметров среды выполнения.