1. Сконфигурируйте параметры для работы платформы умного дома с репликами БД в файле/etc/ansible-iot/latest/vars/default.yml
sudo nano /etc/ansible-iot/latest/vars/default.yml
Базовая структура раздела mongodb в файле/etc/ansible-iot/latest/vars/default.yml:
# Параметры установки платформы.
iot:
# Параметры MongoDB.
mongodb:
# Версия MongoDB. На старом железе, не поддерживающем оптимизацию, нужно выставить значение `4`.
version: 6
external:
# Если имеет значение true, будет использоваться внешняя MongoDB.
# ВАЖНО!!! MongoDB должна быть настроена, а параметры подключения нужно указать в 'addr' и 'port'.
enable: false
# Адрес внешней MongoDB.
addr: "external.mongodb.address"
# Порт внешней MongoDB.
port: 27017
Описание основных параметров БД платформы умного дома в файле default.yml:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|
iot.mongodb.external.enable | false | true | Включение подключения к внешней БД MongoDB. |
iot.mongodb.external.addr | "external.mongodb.address" | Домены или IP-адреса всех реплик в следующем формате: "[ip первой реплики]:[port mongodb первой реплики],[ip второй реплики]:[port mongodb второй реплики],[ip третьей реплики]"
Пример приведен для трех реплик, однако этот шаблон расширяется на любое количество реплик. | Указание адресов реплик БД, к которым будет выполняться подключение. |
iot.mongodb.external.port | 27017 | Порт MongoDB последней реплики | Указание порта БД последней реплики, к которой будет выполняться подключение. |
2. Сконфигурируйте параметры для работы платформы умного дома с репликами БД в файле /etc/ansible-iot/latest/templates/iot/core.yml.j2
sudo nano /etc/ansible-iot/latest/templates/iot/core.yml.j2
Структура параметров БД в файле /etc/ansible-iot/latest/templates/iot/core.yml.j2:
db:
# Основная база данных iot-core
core:
host: "{{ mongodb_addr }}"
port: {{ mongodb_port }}
user: ""
password: ""
database: "{{ iot.core.db.name }}"
#todo Удалить блок в #225317
file:
host: "{{ mongodb_addr }}"
port: {{ mongodb_port }}
user: ""
password: ""
database: "{{ iot.core.db.deprecated.fs.name }}"
#todo Удалить блок в #225317
license:
host: "{{ mongodb_addr }}"
port: {{ mongodb_port }}
user: ""
password: ""
database: "{{ iot.core.db.deprecated.licenses.name }}"
#todo Удалить блок в #225317
eventLog:
host: "{{ mongodb_addr }}"
port: {{ mongodb_port }}
user: ""
password: ""
database: "{{ iot.core.db.deprecated.events.name }}"
Описание основных параметров БД платформы умного дома в файле core.yml.j2:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|
db.core.host | "{{ mongodb_addr }}" | "{{ mongodb_addr }}:{{ mongodb_port }}/{{ iot.core.db.name }}?socketTimeoutMS=20000&replicaSet=iotRepl&w=majority&appName=" | Шаблон адреса для подключения к БД, в который будут подставляться значения переменных из других конфигурационных файлов. |
3. Сконфигурируйте параметры для работы MQTT брокера с репликами БД в файле/etc/ansible-iot/latest/templates/iot/docker-compose/broker/include/docker-compose.yml.j2
sudo nano /etc/ansible-iot/latest/templates/iot/docker-compose/broker/include/docker-compose.yml.j2
Структура параметров БД в файле /etc/ansible-iot/latest/templates/iot/docker-compose/broker/include/docker-compose.yml.j2:
# ------------------------------------------------------ Broker ------------------------------------------------------
broker:
image: "{{ registry }}{{ registry_iot_subdir }}/iot-mqttbroker-mongo:{{ release }}"
container_name: "iot-mqtt-broker{{ containerNameSuffix }}"
{% if iot.limits.enable and iot.broker.limits.enable %}
deploy:
resources:
limits:
cpus: '{{ iot.broker.limits.cpus }}'
memory: {{ iot.broker.limits.memory }}
{% endif %}
{% if not iot.mongodb.external.enable %}
depends_on:
- db
links:
- db
{% endif %}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8083/common/ping"]
interval: 30s
timeout: 10s
retries: 5
start_period: 3m
environment:
- JAVA_TOOL_OPTIONS=-Xms256m -Xmx4g {{ "" if not iot.broker.jconsole.enable else "-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=" ~ iot.broker.jconsole.port ~ " -Dcom.sun.management.jmxremote.rmi.port=" ~ iot.broker.jconsole.port ~ " -Djava.rmi.server.hostname=" ~ iot.broker.jconsole.host }}
- TZ={{ timezone.stdout }}
- IOT_MQTTBROKER_API_PORT=8083
- IOT_MQTTBROKER_DISK_USAGE_THRESHOLD_WARN={{ iot.diskUsage.warnThreshold }}
- IOT_MQTTBROKER_DISK_USAGE_THRESHOLD_CRITICAL={{ iot.diskUsage.criticalThreshold }}
- IOT_MQTT_BROKER_USE_RABBIT_MQ={{ iot.replication.mqttBroker.enabled }}
- HIVEMQ_ROOT_FOLDER={{ iot.broker.hivemq.rootFolder }}
- SPRING_RABBITMQ_HOST=rabbitmq
- SPRING_DATA_MONGODB_URI=mongodb://{{ mongodb_addr }}:{{ mongodb_port }}
- SPRING_DATA_MONGODB_DATABASE={{ iot.broker.db.name }}
- LOGGING_CONFIG={{ iot.logbackConfig }}
- LOGGING_LOGBACK_DIR=/var/log/broker
{% if elk.enable %}
- LOGGING_LOGSTASH_HOST={{ elk.serverName }}
- LOGGING_LOGSTASH_PORT={{ elk.logstash.port.map }}
{% endif %}
- LOGGING_LEVEL_ROOT={{ iot.broker.logLevel }}
- LOGGING_LEVEL_HIVEMQ={{ iot.broker.logLevel }}
ports:
- {{ iot.broker.external.port.map }}:8883
{% if iot.broker.internal.port.export or iot.broker.external.enable %}
- {{ iot.broker.internal.port.map }}:8083
{% endif %}
{% if iot.broker.jconsole.enable %}
- {{ iot.broker.jconsole.port }}:{{ iot.broker.jconsole.port }}
{% endif %}
volumes:
- "{{ install_dir }}/mqtt/hivemq/:/hivemq/"
- "{{ install_dir }}/mqtt/var/log/broker:/var/log/broker"
restart: unless-stopped
Описание основных параметров БД MQTT брокера в файле broker/include/docker-compose.yml.j2:
| Параметр | Значение по умолчанию | Требуемое значение | Описание |
|---|
broker.environment.SPRING_DATA_MONGODB_URI | mongodb://{{ mongodb_addr }}:{{ mongodb_port }} | mongodb://{{ mongodb_addr }}:{{ mongodb_port }}/?socketTimeoutMS=20000&replicaSet=iotRepl&w=majority | Шаблон адреса для подключения к БД, в который будут подставляться значения переменных из других конфигурационных файлов. |