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.enablefalsetrueВключение подключения к внешней БД MongoDB.
iot.mongodb.external.addr"external.mongodb.address"

Домены или IP-адреса всех реплик в следующем формате:

"[ip первой реплики]:[port mongodb первой реплики],[ip второй реплики]:[port mongodb второй реплики],[ip третьей реплики]"

Пример приведен для трех реплик, однако этот шаблон расширяется на любое количество реплик.

Порт последней реплики в данном параметре не указывается!
Его необходимо указывать в параметре iot.mongodb.external.port

Указание адресов реплик БД, к которым будет выполняться подключение.
iot.mongodb.external.port27017

Порт 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_URImongodb://{{ mongodb_addr }}:{{ mongodb_port }}mongodb://{{ mongodb_addr }}:{{ mongodb_port }}/?socketTimeoutMS=20000&replicaSet=iotRepl&w=majorityШаблон адреса для подключения к БД, в который будут подставляться значения переменных из других конфигурационных файлов.