Установка и настройка компонентов
28 сентября 2026
ID 320881
Для формирования рабочей среды оркестратора и его зависимостей в отказоустойчивой конфигурации запустите контейнеры MongoDB, Redis, Redis Sentinel и оркестратора с настроенными томами, TLS-соединениями и переменными окружения.
MongoDB
Для использования MongoDB необходимо включить у CPU расширение системы команд AVX. Для этого при развертывании ВМ задайте режим CPU host-passthrough, если для развертывания вы используете KVM.
Чтобы установить и настроить компоненты, выполните следующие команды:
- Запустите контейнеры. Для этого:
- Создайте Docker volume на всех узлах:
docker volume create --name orc_dbs_data
- Создайте и запустите контейнер на узле 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
- Создайте и запустите контейнер на узле 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
- Создайте и запустите контейнер на узле 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
- Создайте Docker volume на всех узлах:
- Настройте набор репликации (replica set). Для этого:
- Инициируйте replica set на узле Node_1:
docker exec -i mongo-1 mongosh --tls \--tlsCertificateKeyFile /ssl/certs/mongo/combined.pem \--tlsCAFile /ssl/certs/ca/cert.pem <<EOFrs.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 - На узле 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
- На узле 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
- Инициируйте replica set на узле Node_1:
- Настройте защиту MongoDB:
- Добавьте правило разрешения на узлы Node_1, Node_2 и Node_3:
iptables -A INPUT -p tcp -s
<IP-адрес узла>--dport 27017 -j ACCEPT - Добавьте правило блокировки для остальных обращений к узлам:
iptables -A INPUT -p tcp --dport 27017 -j DROP
- Сохраните правила:
apt install iptables-persistent
netfilter-persistent save
- Добавьте правило разрешения на узлы Node_1, Node_2 и Node_3:
Redis
Для Ubuntu 22.04 используйте образ redis:6.2.20 вместо registry.astralinux.ru/library/astra/ubi18-redis7015:1.8.3.
Чтобы установить и настроить компоненты, выполните следующие команды:
- Создайте том Docker volume на всех узлах:
docker volume create --name redis_data
- Создайте и запустите контейнер на узле 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
- Создайте и запустите контейнер на узле 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.
Чтобы установить и настроить компоненты, выполните следующие команды:
- Создайте том Docker volume на всех узлах:
docker volume create --name redis_sentinel_data
- Создайте и запустите контейнер на узле 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"
- Создайте и запустите контейнер на узле 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"
- Создайте и запустите контейнер на узле 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"
Веб-сервис оркестратора
Чтобы установить и настроить компоненты, выполните следующие команды:
- Перенесите образ контейнера оркестратора из комплекта поставки на узлы Node_1 и Node_2.
- Загрузите образ контейнера в Docker engine:
docker load -i "${ORC_CONTAINER_NAME//:/_}.tar"
- Создайте том Docker volume на всех узлах:
docker volume create --name orc_data
- Создайте и запустите контейнер на узле 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
- Создайте и запустите контейнер на узле 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
Рабочая среда оркестратора будет сформирована.