Инсталляция хранилищ
Ниже приведены инструкции по установке всех типов хранилищ для платформы. Пункт по установке Cassandra-хранилищ может быть опциональным, в зависмости от выбранного варианта развертывания.
Все остальные хранилища - обязательны. Инструкции не описывают кластерные конфигурации, только типовое развертывание.
СУБД PostgreSQL
Платформа в качестве оперативного хранилища использует реляционную СУБД PostgreSQL версии от 14 до 17.
СУБД PostgreSQL является обязательным хранилищем. В БД хранится мета и справочная информация. Если не используется Cassandra, в БД хранятся измерения.
Установка PostgreSQL
Шаг 1. Настройка ОС (минимально необходимые для любых версий ОС):
/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
Шаг 2. Генерируем русскую локаль на машине, для корректной работы БД с кириллицей
sudo locale-gen ru_RU && sudo locale-gen ru_RU.UTF-8 && sudo update-locale
Шаг 3. Создаем лист с репозиторием:
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
sudo apt install -y postgresql-common && sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
Шаг 4. Установить postgresql:
apt-get install postgresql-14
sudo apt install postgresql-15 -y
Шаг 5. Установить расширение PostGIS:
apt update
apt install postgresql-14-postgis-3
sudo apt install postgresql-15-postgis-3 -y
Создание БД
Шаг 6. Создаем выделенный том для БД. Например, диск /dev/sdb1
c каталогом '/pgstore'
sudo mkdir -p /pgstore && sudo chown postgres:postgres /pgstore && sudo chmod 0700 /pgstore
Шаг 7. Перейти под пользователя postgres:
sudo su - postgres
Удаляем кластер базы данных, который был создан по умолчанию при установке, и останавливаем postgresql:
pg_dropcluster --stop 14(версия кластера) main(имя кластера, получить можно pg_lsclusters)
sudo systemctl stop postgresql@14-main
Шаг 8. Создаем новый кластер и запускаем службу СУБД
pg_createcluster -d /pgstore/14 --locale ru_RU.UTF-8 --start 14 main
sudo pg_createcluster -d /pgstore/15 --locale ru_RU.utf8 --start 15 main
Шаг 9. Копируем кофинг-файл подключений к БД
Обязательные настройки приведены ниже, в разделе Настройка PostgreSQL
sudo cp ~/pg_hba.conf /etc/postgresql/<версия>/main/pg_hba.conf
Шаг 10. Копируем конфигурацию СУБД
Рекомендуемые настройки приведены ниже, в разделе Настройка PostgreSQL
sudo cp ~/inspark-files/postgresql.conf /etc/postgresql/<версия>>/main/postgresql.conf
Шаг 11. Перезапускаем postgres
sudo systemctl restart postgresql.service
Шаг 12. Создаем пользователя postgres
psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'postgres';"
Шаг 13. Создаем БД semdb
psql -U postgres -c "CREATE DATABASE SEMDB WITH TEMPLATE = template0;"
psql -U postgres -c "ALTER DATABASE SEMDB OWNER TO postgres;"
Шаг 14. Создаем БД wist
::: tips
БД wist предназначена для магазина виджетов и может быть развернута на отдельной СУБД, мы привели ее создание для примера.
:::
psql -U postgres -c "CREATE DATABASE WIST WITH TEMPLATE = template0;"
psql -U postgres -c "ALTER DATABASE WIST OWNER TO postgres;"
Подключение PostGIS
Шаг 15. Подключиться к БД SEMDB и включить в ней расширение:
psql -U postgres -h localhost semdb -c "create extension postgis;"
Настройка PostgreSQL
Конифгураця Postgres расположена в /etc/postgresql/<версия>>/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/<версия>/main/pg_hba.conf
. Необходимо разрешить доступ к БД с модулей ядра и DWH (vault), добавив следующие строчки:
host all all IP-сервера core/маска md5
host all all IP-vault/маска md5
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
Примечание
Предварительно, проверьте наличие на машине JRE. Как установить и проверить JRE, см. Установку JRE
Создаем служебных пользователей 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