Инсталляция хранилищ
Ниже приведены инструкции по установке всех типов хранилищ для платформы. Пункт по установке Cassandra-хранилищ может быть опциональным, в зависмости от выбранного варианта развертывания.
Все остальные хранилища - обязательны. Инструкции не описывают кластерные конфигурации, только типовое развертывание.
СУБД PostgreSQL
Платформа в качестве оперативного хранилища использует реляционную СУБД PostgreSQL 14.
СУБД PostgreSQL является обязательным хранилищем. В БД хранится мета и справочная информация. Если не используется Cassandra, в БД хранятся измерения.
Установка PostgreSQL
Настройка ОС (минимально необходимые):
/etc/sysctl.conf
# отключить подкачку
vm.swappiness = 0
# увеличить дескрипторы
fs.file-max = 655350
выполнитеsysctl -p
В файле /etc/security/limits.conf
# Core dump size
* - core unlimited
# Open files
* - nofile 655350
# Processes
* - nproc 8192
Создаем лист с репозиторием:
RELEASE=$(lsb_release -cs)
echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main | sudo tee /etc/apt/sources.list.d/PostgreSQL.list
Импортировать ключ репозитория:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
и обновить список пакетов:
apt-get update
Установить postgresql:apt-get install postgresql-14
Установить расширение PostGIS:
apt update
apt install postgresql-14-postgis-3
Настройка PostgreSQL
Конифгураця Postgres расположена в /etc/postgresql/14/main/postgresql.conf
см документацию.
# шифрование пароля MD5, совместимое с semnext
password_encryption = md5
# прослушивание интерфейсов, без IpV6 желательно прописывать так: listen_addresses = '0.0.0.0'
listen_addresses = '0.0.0.0'
# максимальное количество подключений, должно быть на 3 подключения больше чем используемые приложениями максимумы пулов (в конфигах приложений), не должно быть слишком большим
max_connections = 200
# буферы, примерно 1/3 доступной оперативной памяти сервера (для сервера где только БД)
shared_buffers = 2048MB
# буферы сортировки и проч
temp_buffers = 16MB
# память процесса
work_mem = 8MB
# память обслуживания (256 это минимум, для серверов с достаточно большими объемами (более 8гиг) желательно выделить 512MB или 1024MB)
maintenance_work_mem = 256MB
# потоки отправки для репликации (если репликации нет - крайне желательно отключить)
max_wal_senders = 0
# уровень журналов предварительной записи, влияние на IO крайне значительное, чем меньше тем лучше
wal_level = minimal
# размеры журналов увеличить, особенно актуально на сервере гда измерения сохраняются в постгрес а не в кассандру (переключение журнала сложная и затратная процедура, переключения должны быть реже)
max_wal_size = 1GB
min_wal_size = 80MB
Настроить доступ в /etc/postgresql/14/main/pg_hba.conf
. Необходимо разрешить доступ к БД с модулей ядра и DWH (vault), добавив следующие строчки:
host all all IP-сервера core/маска md5
host all all IP-vault/маска md5
Создание БД
Создаем выделенный том для БД. Например, диск /dev/sdb1
c каталогом '/pgstore'
, для этого:
- Создаем каталог
mkdir /pgstore
- определяем UUID разделов blkid в файле
/etc/fstab
- добавить необходимый раздел
UUID=4b2a649f-9668-4637-9d2c-c1d5eaf4fad1 /pgstore ext4 errors=remount-ro 0 1
Выполнить
mount /pgstore
изменить владельца каталога:
sudo chown -R postgres:postgres /pgstore
Перейти под пользователя postgres:
sudo su - postgres
Удаляем кластер базы данных, который был создан по умолчанию при установке, и останавливаем postgresql:
pg_dropcluster --stop 14(версия кластера) main(имя кластера, получить можно pg_lsclusters)
sudo systemctl stop postgresql@14-main
logout
Создаем новый кластер и запускаем службу СУБД:
sudo su - postgres
pg_createcluster -d /pgstore/14 --locale ru_RU.UTF-8 --start 14 main
logout
sudo systemctl daemon-reload
sudo systemctl start postgresql@14-main
Создаем БД semdb
Пользователем postgres выполнить psql -U postgres -h
и там уже:
CREATE DATABASE SEMDB WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8';
ALTER DATABASE SEMDB OWNER TO postgres;
Подключение PostGIS
Подключиться к БД SEMDB и включить в ней расширение:
psql -U postgres -h localhost semdb
semdb> create extension postgis;
semdb> select postgis_version();
CУБД Cassandra
Установка СУБД Cassandra используется только в больших и нагруженных инсталляциях, где подразумевается большой рост "сырых" данных.
См. раздел по оценке [производительности] инталляций.
Совет
Актуальные способы установки доступны по ссылке.
Установка через менеджера пакетов
Добавляем репозиторий
echo "deb https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
Добавляем ключи
curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
Обновляем список пакетов
sudo apt update
Устанавливаем БД Cassandra
sudo apt-get install cassandra
Настройка БД
После установки БД необходимо изменить способ доступа к БД. В директории /etc/cassandra отредактировать файл cassandra.yaml
Изменить
authenticator: AllowAllAuthenticator
На
authenticator: PasswordAuthenticator
По умолчанию при инсталляции системы создается пользователь cassandra
с паролем cassandra
. Для доступа в консоль администрирования БД введите
cqlsh -u cassandra -p cassandra
После входа и авторизации в консоли администрирования мы можем создать пользователя
CREATE USER worker WITH PASSWORD 'worker';
В случае если планируется использовать более 1 экземпляра БД, их необходимо объединить в кластер БД.
В файле cassandra.yaml
необходимо внести следующие изменения:
isten_address: IP-адрес где установлена БД
rpc_address: IP-адрес где установлена БД
seeds: Указать перечисление IP-адресов которые должны входить в кластер.
Примечание: На каждом сервере необходимо настраивать seeds
следующим образом: Сначала указываем IP:порт текущего сервера, далее перечисление других серверов которые должны входить в кластер.
Пример:
- seeds: "2.2.2.2:7000(IP-адрес конфигурируемого сервера),1.1.1.1:7000(перечисление остальных IP-адресов),4.4.4.4:7000,3.3.3.3:7000"
В завершении настроек для кластера необходимо создать пространство ключей
CREATE KEYSPACE sem WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'datacenter1' : N};
Совет
Рекомендуется создавать как минимум сразу 3 узла кластера Cassandra.
СУБД Redis
Обязателен к развертыванию. В БД хранятся "горячие" наборы данных и кэш.
Обновляем список пакетов репозиториев
sudo apt update
Устанавливаем redis-server
sudo apt install -y redis-server
Проверьте подключение к базе. По умолчанию для доступа к базе пароль не требуется:
redis-cli
127.0.0.1:6379> PING
Добавьте сервис в список приложений, запускаемых автоматически:
sudo systemctl enable redis-server
Apache Artemis MQ
Обязателен к установке. Хранилище используется как системная шина между модулями ядра. Apache Artemis MQ поддерживает состояние системных
очередей обмена и обеспечивает гарантированную доставку данных между компонентами платформы.
Установка Apache Artemis
Создаем служебных пользователей artemis
sudo groupadd artemis && \
sudo useradd -s /bin/false -g artemis -d /opt/artemis artemis
Переходим в директорию /opt
и скачиваем Artemis 2.32.0
wget https://archive.apache.org/dist/activemq/activemq-artemis/2.32.0/apache-artemis-2.32.0-bin.tar.gz
Разархивируем скачанных архив и создадим на него символьную ссылку
sudo tar -xvzf apache-artemis-2.32.0-bin.tar.gz
sudo ln -s /opt/apache-artemis-2.32.0 ./artemis
Изменяем права доступа для разархивированной папки
sudo chown -RH artemis:artemis /opt/artemis
sudo chmod o+x /opt/artemis/bin/
Переходим в директорию /var/lib
и в ней выполняем
sudo /opt/artemis/bin/artemis create artemis-broker
Во время создания брокера необходимо будет задать имя пользователя и пароль для доступа к брокеру.
Настройка Apache Artemis
После установки брокера по умолчанию доступ к web-консоли будет только на localhost:8161
, для того чтобы получить удаленный доступ к консоли необходимо будет отредактировать файлы bootstrap.xml
и jolokia-access.xml
которые находятся по пути /var/lib/test-broker/etc/
В файле boostrap.xml
замените в тегах <web></web>
:
<web bind="http://localhost:8161" path="web">
На
<web bind="http://0.0.0.0:8161" path="web">
Далее в файле jolokia-access.xml
замените следующую строку:
<allow-origin>*://localhost*</allow-origin>
На
<allow-origin>*://*</allow-origin>
Создайте файл broker.xml
в директории /var/lib/artemis-broker/etc/
, который содержит в себе информацию об очередях.
Пример настроенного файла доступен по ссылке.
После завершения настроек необходимо создать службу SystemD для управления приложением. По пути /etc/systemd/system создаем файл artemis.service
и добавляем туда следующий код:
[Unit]
Description=Apache ActiveMQ Artemis
After=network.target
[Service]
Type=forking
User=artemis
Group=artemis
ExecStart=/var/lib/artemis-broker/bin/artemis-service start
ExecStop=/var/lib/artemis-broker/bin/artemis-service stop
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
После создания сервиса обновите список сервисов:
sudo systemctl daemon-reload
Проверьте корректность установки, выполните команду:
var/lib/artemis-broker/bin/artemis queue stat