Установка и настройка компонентов

28 сентября 2026

ID 320881

Для формирования рабочей среды оркестратора и его зависимостей в отказоустойчивой конфигурации запустите контейнеры MongoDB, Redis, Redis Sentinel и оркестратора с настроенными томами, TLS-соединениями и переменными окружения.

MongoDB

Для использования MongoDB необходимо включить у CPU расширение системы команд AVX. Для этого при развертывании ВМ задайте режим CPU host-passthrough, если для развертывания вы используете KVM.

Чтобы установить и настроить компоненты, выполните следующие команды:

  1. Запустите контейнеры. Для этого:
    1. Создайте Docker volume на всех узлах:

      docker volume create --name orc_dbs_data

    2. Создайте и запустите контейнер на узле Node_1:

      docker run -d --name=mongo-1 \

      --hostname=mongo-1 \

      --volume orc_dbs_data:/data/db \

      --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/cert.pem:ro \

      --volume $HOME/ssl/mongo/combined.pem:/ssl/certs/mongo/combined.pem:ro \

      --volume /data/configdb \

      --env=TZ=Europe/Moscow \

      --network=knaas_aio_int \

      -p 27017:27017 \

      --restart=unless-stopped \

      --runtime=runc \

      mongo:5.0.7 \

      mongod --bind_ip_all --replSet knaas --tlsMode requireTLS --tlsCertificateKeyFile /ssl/certs/mongo/combined.pem --tlsCAFile /ssl/certs/ca/cert.pem --tlsDisabledProtocols TLS1_0,TLS1_1

    3. Создайте и запустите контейнер на узле Node_2:

      docker run -d --name=mongo-2 \

      --hostname=mongo-2 \

      --volume orc_dbs_data:/data/db \

      --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/cert.pem:ro \

      --volume $HOME/ssl/mongo/combined.pem:/ssl/certs/mongo/combined.pem:ro \

      --volume /data/configdb \

      --env=TZ=Europe/Moscow \

      --network=knaas_aio_int \

      -p 27017:27017 \

      --restart=unless-stopped \

      --runtime=runc \

      mongo:5.0.7 \

      mongod --bind_ip_all --replSet knaas --tlsMНеode requireTLS --tlsCertificateKeyFile /ssl/certs/mongo/combined.pem --tlsCAFile /ssl/certs/ca/cert.pem --tlsDisabledProtocols TLS1_0,TLS1_1

    4. Создайте и запустите контейнер на узле Node_3:

      docker run -d --name=mongo-3 \

      --hostname=mongo-3 \

      --volume orc_dbs_data:/data/db \

      --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/cert.pem:ro \

      --volume $HOME/ssl/mongo/combined.pem:/ssl/certs/mongo/combined.pem:ro \

      --volume /data/configdb \

      --env=TZ=Europe/Moscow \

      --network=knaas_aio_int \

      -p 27017:27017 \

      --restart=unless-stopped \

      --runtime=runc \

      mongo:5.0.7 \

      mongod --bind_ip_all --replSet knaas --tlsMode requireTLS --tlsCertificateKeyFile /ssl/certs/mongo/combined.pem --tlsCAFile /ssl/certs/ca/cert.pem --tlsDisabledProtocols TLS1_0,TLS1_1

  2. Настройте набор репликации (replica set). Для этого:
    1. Инициируйте replica set на узле Node_1:

      docker exec -i mongo-1 mongosh --tls \

      --tlsCertificateKeyFile /ssl/certs/mongo/combined.pem \

      --tlsCAFile /ssl/certs/ca/cert.pem <<EOF

      rs.initiate({

      _id: 'knaas',

      version: 1,

      members: [

      {_id: 0, host: '$NODE_1:27017', priority: 2},

      {_id: 1, host: '$NODE_2:27017', priority: 1},

      {_id: 2, host: '$NODE_3:27017', arbiterOnly: true}

      ]

      })

      EOF

    2. На узле Node_1 добавьте в БД пользователя admin:

      docker exec -i mongo-1 mongosh --tls \

      --tlsCertificateKeyFile /ssl/certs/mongo/combined.pem \

      --tlsCAFile /ssl/certs/ca/cert.pem <<EOF

      db.getSiblingDB("admin").createUser({

      user:"admin",

      pwd:"$MONGO_ADMIN_PASS",

      roles:[{

      role:"userAdminAnyDatabase",

      db:"admin"

      }]

      })

      EOF

    3. На узле Node_1 добавьте в БД пользователя knaas:

      docker exec -i mongo-1 mongosh --tls \

      --tlsCertificateKeyFile /ssl/certs/mongo/combined.pem \

      --tlsCAFile /ssl/certs/ca/cert.pem <<EOF

      db.getSiblingDB("admin").auth("admin","$MONGO_ADMIN_PASS");

      db.getSiblingDB("knaas").createUser({

      user:"knaas",

      pwd:"$MONGO_KNAAS_PASS",

      roles:["readWrite"]

      })

      EOF

  3. Настройте защиту MongoDB:
    1. Добавьте правило разрешения на узлы Node_1, Node_2 и Node_3:

      iptables -A INPUT -p tcp -s <IP-адрес узла> --dport 27017 -j ACCEPT

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

      iptables -A INPUT -p tcp --dport 27017 -j DROP

    3. Сохраните правила:

      apt install iptables-persistent

      netfilter-persistent save

Redis

Для Ubuntu 22.04 используйте образ redis:6.2.20 вместо registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3.

Чтобы установить и настроить компоненты, выполните следующие команды:

  1. Создайте том Docker volume на всех узлах:

    docker volume create --name redis_data

  2. Создайте и запустите контейнер на узле Node_1:

    docker run -d \

    --name redis-master \

    -p 6379:6379 \

    -v redis_data:/data \

    --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/ca.pem:ro \

    --volume $HOME/ssl/redis/cert.pem:/ssl/certs/redis/cert.pem:ro \

    --volume $HOME/ssl/redis/cert.key:/ssl/keys/redis/key.pem:ro \

    registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3 \

    redis-server \

    --port 0 \

    --bind 0.0.0.0 \

    --protected-mode no \

    --tls-port 6379 \

    --tls-replication yes \

    --tls-cert-file /ssl/certs/redis/cert.pem \

    --tls-key-file /ssl/keys/redis/key.pem \

    --tls-ca-cert-file /ssl/certs/ca/ca.pem

  3. Создайте и запустите контейнер на узле Node_2:

    docker run -d \

    --name redis-replica \

    -p 6379:6379 \

    -v redis_data:/data \

    --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/ca.pem:ro \

    --volume $HOME/ssl/redis/cert.pem:/ssl/certs/redis/cert.pem:ro \

    --volume $HOME/ssl/redis/cert.key:/ssl/keys/redis/key.pem:ro \

    registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3 \

    redis-server \

    --port 0 \

    --bind 0.0.0.0 \

    --protected-mode no \

    --tls-port 6379 \

    --tls-replication yes \

    --tls-cert-file /ssl/certs/redis/cert.pem \

    --tls-key-file /ssl/keys/redis/key.pem \

    --tls-ca-cert-file /ssl/certs/ca/ca.pem \

    --replicaof $NODE_1 6379

Redis Sentinel

Для Ubuntu 22.04 используйте образ redis:6.2.20 вместо registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3.

Чтобы установить и настроить компоненты, выполните следующие команды:

  1. Создайте том Docker volume на всех узлах:

    docker volume create --name redis_sentinel_data

  2. Создайте и запустите контейнер на узле Node_1:

    docker run -d \

    --name redis-sentinel-1 \

    --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/ca.pem:ro \

    --volume $HOME/ssl/redis-sentinel/cert.pem:/ssl/certs/redis/cert.pem:ro \

    --volume $HOME/ssl/redis-sentinel/cert.key:/ssl/keys/redis/key.pem:ro \

    -p 26379:26379 \

    registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3 \

    sh -c "cat > /sentinel.conf <<EOF

    port 0

    bind 0.0.0.0

    protected-mode no

    tls-port 26379

    tls-cert-file /ssl/certs/redis/cert.pem

    tls-key-file /ssl/keys/redis/key.pem

    tls-ca-cert-file /ssl/certs/ca/ca.pem

    tls-auth-clients optional

    tls-replication yes

    tls-cluster yes

    sentinel monitor mymaster $NODE_1 6379 2

    sentinel down-after-milliseconds mymaster 5000

    sentinel failover-timeout mymaster 60000

    sentinel parallel-syncs mymaster 1

    sentinel announce-ip $NODE_1

    sentinel announce-port 26379

    EOF

    redis-server /sentinel.conf --sentinel"

  3. Создайте и запустите контейнер на узле Node_2:

    docker run -d \

    --name redis-sentinel-2 \

    --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/ca.pem:ro \

    --volume $HOME/ssl/redis-sentinel/cert.pem:/ssl/certs/redis/cert.pem:ro \

    --volume $HOME/ssl/redis-sentinel/cert.key:/ssl/keys/redis/key.pem:ro \

    -p 26379:26379 \

    registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3 \

    sh -c "cat > /sentinel.conf <<EOF

    port 0

    bind 0.0.0.0

    protected-mode no

    tls-port 26379

    tls-cert-file /ssl/certs/redis/cert.pem

    tls-key-file /ssl/keys/redis/key.pem

    tls-ca-cert-file /ssl/certs/ca/ca.pem

    tls-auth-clients optional

    tls-replication yes

    tls-cluster yes

    sentinel monitor mymaster $NODE_1 6379 2

    sentinel down-after-milliseconds mymaster 5000

    sentinel failover-timeout mymaster 60000

    sentinel parallel-syncs mymaster 1

    sentinel announce-ip $NODE_2

    sentinel announce-port 26379

    EOF

    redis-server /sentinel.conf --sentinel"

  4. Создайте и запустите контейнер на узле Node_3:

    docker run -d \

    --name redis-sentinel-3 \

    --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/ca.pem:ro \

    --volume $HOME/ssl/redis-sentinel/cert.pem:/ssl/certs/redis/cert.pem:ro \

    --volume $HOME/ssl/redis-sentinel/cert.key:/ssl/keys/redis/key.pem:ro \

    -p 26379:26379 \

    registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3 \

    sh -c "cat > /sentinel.conf <<EOF

    port 0

    bind 0.0.0.0

    protected-mode no

    tls-port 26379

    tls-cert-file /ssl/certs/redis/cert.pem

    tls-key-file /ssl/keys/redis/key.pem

    tls-ca-cert-file /ssl/certs/ca/ca.pem

    tls-auth-clients optional

    tls-replication yes

    tls-cluster yes

    sentinel monitor mymaster $NODE_1 6379 2

    sentinel down-after-milliseconds mymaster 5000

    sentinel failover-timeout mymaster 60000

    sentinel parallel-syncs mymaster 1

    sentinel announce-ip $NODE_3

    sentinel announce-port 26379

    EOF

    redis-server /sentinel.conf --sentinel"

Веб-сервис оркестратора

Чтобы установить и настроить компоненты, выполните следующие команды:

  1. Перенесите образ контейнера оркестратора из комплекта поставки на узлы Node_1 и Node_2.
  2. Загрузите образ контейнера в Docker engine:

    docker load -i "${ORC_CONTAINER_NAME//:/_}.tar"

  3. Создайте том Docker volume на всех узлах:

    docker volume create --name orc_data

  4. Создайте и запустите контейнер на узле Node_1:

    docker run -d --name=orc-1 \

    --hostname=orc-1 \

    --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/cert.pem:ro \

    --volume $HOME/ssl/ca/certificate.key:/ssl/keys/ca/key.pem:ro \

    --volume $HOME/ssl/orc/trustStore.p12:/ssl/certs/orc/trustStore.p12:ro \

    --volume $HOME/ssl/orc/keyStore.p12:/ssl/certs/orc/keyStore.p12:ro \

    --volume $HOME/ssl/orc/cert.pem:/ssl/certs/orc/cert.pem:ro \

    --volume $HOME/ssl/orc/key.pem:/ssl/keys/orc/key.pem:ro \

    --volume orc_data:/data \

    -p 8080:8080 \

    --env=TZ=Europe/Moscow \

    --env=KNAAS_EULA_AGREED=yes \

    --env="JAVA_OPTS=-Xms2048m -Xmx3560m -Dspring.data.mongodb.database=knaas -Dorc.security.encryption.password=$ORC_ENC_PASS -Dspring.data.mongodb.uri=mongodb://knaas:$MONGO_KNAAS_PASS@$NODE_1:27017,$NODE_2:27017,$NODE_3:27017/knaas?replicaSet=knaas&tls=true -Dspring.redis.redisson.sentinel-servers-config.subscription-mode=master -Dspring.redis.redisson.sentinel-servers-config.master-name=mymaster -Dspring.redis.redisson.sentinel-servers-config.add-sentinel-address=rediss://$NODE_1:26379,rediss://$NODE_2:26379,rediss://$NODE_3:26379 -Dspring.redis.redisson.sentinel-servers-config.ssl-truststore=file:///ssl/certs/orc/trustStore.p12 -Dspring.redis.redisson.sentinel-servers-config.ssl-truststore-password=$ORC_KEY_PASS -Dspring.redis.redisson.sentinel-servers-config.ssl-keystore=file:///ssl/certs/orc/keyStore.p12 -Dspring.redis.redisson.sentinel-servers-config.ssl-keystore-password=$ORC_KEY_PASS -Dorc.openflow.tls.ca-private.certificate.path=/ssl/keys/ca/key.pem -Dorc.openflow.tls.ca-public.certificate.path=/ssl/certs/ca/cert.pem -Dgrpc.tls.certificate.path=/ssl/certs/orc/cert.pem -Dgrpc.tls.private.key.path=/ssl/keys/orc/key.pem -Dgrpc.tls.ca.certificate.path=/ssl/certs/ca/cert.pem -Dserver.ssl.enabled=true -Dserver.ssl.trust-store=/ssl/certs/orc/trustStore.p12 -Dserver.ssl.trust-store-password=$ORC_KEY_PASS -Dserver.ssl.trust-store-type=pkcs12 -Dserver.ssl.key-store=/ssl/certs/orc/keyStore.p12 -Dserver.ssl.key-store-password=$ORC_KEY_PASS -Dserver.ssl.key-store-type=pkcs12 -Dorc.sdn.grpc.timeout=60s" \

    --network=knaas_aio_int \

    --workdir=/opt/b4n/orc \

    --restart=unless-stopped \

    $ORC_CONTAINER_NAME

  5. Создайте и запустите контейнер на узле Node_2:

    docker run -d --name=orc-2 \

    --hostname=orc-2 \

    --volume $HOME/ssl/ca/certificate.pem:/ssl/certs/ca/cert.pem:ro \

    --volume $HOME/ssl/ca/certificate.key:/ssl/keys/ca/key.pem:ro \

    --volume $HOME/ssl/orc/trustStore.p12:/ssl/certs/orc/trustStore.p12:ro \

    --volume $HOME/ssl/orc/keyStore.p12:/ssl/certs/orc/keyStore.p12:ro \

    --volume $HOME/ssl/orc/cert.pem:/ssl/certs/orc/cert.pem:ro \

    --volume $HOME/ssl/orc/key.pem:/ssl/keys/orc/key.pem:ro \

    --volume orc_data:/data \

    -p 8080:8080 \

    --env=TZ=Europe/Moscow \

    --env=KNAAS_EULA_AGREED=yes \

    --env="JAVA_OPTS=-Xms2048m -Xmx3560m -Dspring.data.mongodb.database=knaas -Dorc.security.encryption.password=$ORC_ENC_PASS -Dspring.data.mongodb.uri=mongodb://knaas:$MONGO_KNAAS_PASS@$NODE_1:27017,$NODE_2:27017,$NODE_3:27017/knaas?replicaSet=knaas&tls=true -Dspring.redis.redisson.sentinel-servers-config.subscription-mode=master -Dspring.redis.redisson.sentinel-servers-config.master-name=mymaster -Dspring.redis.redisson.sentinel-servers-config.add-sentinel-address=rediss://$NODE_1:26379,rediss://$NODE_2:26379,rediss://$NODE_3:26379 -Dspring.redis.redisson.sentinel-servers-config.ssl-truststore=file:///ssl/certs/orc/trustStore.p12 -Dspring.redis.redisson.sentinel-servers-config.ssl-truststore-password=$ORC_KEY_PASS -Dspring.redis.redisson.sentinel-servers-config.ssl-keystore=file:///ssl/certs/orc/keyStore.p12 -Dspring.redis.redisson.sentinel-servers-config.ssl-keystore-password=$ORC_KEY_PASS -Dorc.openflow.tls.ca-private.certificate.path=/ssl/keys/ca/key.pem -Dorc.openflow.tls.ca-public.certificate.path=/ssl/certs/ca/cert.pem -Dgrpc.tls.certificate.path=/ssl/certs/orc/cert.pem -Dgrpc.tls.private.key.path=/ssl/keys/orc/key.pem -Dgrpc.tls.ca.certificate.path=/ssl/certs/ca/cert.pem -Dserver.ssl.enabled=true -Dserver.ssl.trust-store=/ssl/certs/orc/trustStore.p12 -Dserver.ssl.trust-store-password=$ORC_KEY_PASS -Dserver.ssl.trust-store-type=pkcs12 -Dserver.ssl.key-store=/ssl/certs/orc/keyStore.p12 -Dserver.ssl.key-store-password=$ORC_KEY_PASS -Dserver.ssl.key-store-type=pkcs12 -Dorc.sdn.grpc.timeout=60s" \

    --network=knaas_aio_int \

    --workdir=/opt/b4n/orc \

    --restart=unless-stopped \

    $ORC_CONTAINER_NAME

Рабочая среда оркестратора будет сформирована.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!