Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Внешний сервер MongoDB, UniFi Network
 
Есть ли способ настроить хост и порт базы данных для контроллера Unifi (и mFi)? У меня уже есть кластер MongoDB в AWS, реплицированный по разным регионам для надежности, и я хотел бы настроить контроллер так, чтобы он использовал именно этот кластер, а не ту версию, которая запускается при старте контроллера. Я не нашёл опции в настройках, которая это позволяла бы, а контроллер *очень* упорно запускает свою копию MongoDB и держит её работающей.
 
Не могу помочь с ответом, так как сам тоже ищу этот ответ: будет ли контроллер UniFi совместим с внешней версией MongoDB 3.4.
 
Привет, @UBNT-JoeHughes,

Интересно, продвинулось ли это как-то дальше — например, интеграция в GUI.

С новой возможностью логирования в Controller 5.7.8 моя 32-битная база данных просто взорвётся!

Энди
 
@UBNT-JoeHughes

Есть ли шанс перенести эту функцию в Unifi Video Controller?
 
Хороший вопрос, почему мы должны удалять базу данных, которую сейчас используем через пользователя?
 
Какие права ожидает UniFi? Я создал пользователя для unifi с ролью «readWrite». В журнале заметил ошибку, где mongo отказал в доступе на выполнение «dropDatabase».
 
Привет, @UI-Team, это еще работает с версией 6.26 (или выше)? Я, похоже, что-то делаю не так, но приложение unifi просто зависает и не продолжает запускаться. Спасибо за помощь!
 
@UBNT-JoeHughes

это теперь не работает в версии 5.10.x
 
Однако я всё равно думаю, что что-то не так с контейнером, ведь команда `service unifi status` показывает «unifi не запущен», хотя на самом деле он работает.
 
Оказалось, это была ошибка в MetalLB — сервисе, с помощью которого я открываю доступ к своим bare metal Kubernetes-сервисам в сети. https://github.com/google/metallb/issues/399 Теперь всё работает. Но децентрализация MongoDB, к сожалению, мало помогла решить проблемы, вызванные множеством реплик.
 
Возможно, я нашёл причину проблемы. Я написал следующий скрипт, который выполняется при настройке базы данных MongoDB:

mongo \
 --username ubnt \
 --password "{{ mongodb_password }}" \
 --authenticationDatabase admin \
 --eval 'db.getSiblingDB("unifi").createUser({user: "ubnt", pwd: "{{ mongodb_password }}", roles: [{role: "readWrite", db: "unifi"}]})'

mongo \
 --username ubnt \
 --password "{{ mongodb_password }}" \
 --authenticationDatabase admin \
 --eval 'db.getSiblingDB("unifi_stat").createUser({user: "ubnt", pwd: "{{ mongodb_password }}", roles: [{role: "readWrite", db: "unifi_stat"}]})'

Затем я настроил Unifi Controller для подключения к базе через файл `system.properties` с таким содержимым:

# Inform IP Address
system_ip={{ load_balancer_ip }}

# Autobackup directory
autobackup.dir=/backups

# External MongoDB information
db.mongo.local=false
db.mongo.uri=mongodb://ubnt:{{ mongodb_password }}@unifi-controller-mongodb:27017/unifistat
db.mongo.uri=mongodb://ubnt:{{ mongodb_password }}@unifi-controller-mongodb:27017/unifi_stat
unifi.db.name=unifi

Как я уже сказал, всё это работает. Я могу подтвердить, что Unifi Controller общается с внешней MongoDB, так как во всех базах `unifi` и `unifi_stat` создаются множество коллекций. Однако дальше Unifi Controller перестаёт писать логи и на самом деле не запускается.

Я выяснил, что Controller запускается через выполнение jar-файла. Попробовал остановить и запустить этот jar, и получил следующий стек вызовов:

$> s6-setuidgid abc java -Xmx1024M -jar /usr/lib/unifi/lib/ace.jar start  
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter INFO: destroy called  
Exception in thread "launcher" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Ò00000' defined in class com.ubnt.service.AppContext: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [com.ubnt.service.P.D com.ubnt.service.AppContext.Ò00000()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dbService' defined in class com.ubnt.service.AppContext: Invocation of init method failed; nested exception is com.mongodb.CommandFailureException: { "serverUsed" : "unifi-controller-mongodb:27017" , "ok" : 0.0 , "errmsg" : "not authorized on unifi to execute command { dropDatabase: 1 }" , "code" : 13 , "codeName" : "Unauthorized" }

Ключевой момент здесь —

И вот здесь моё понимание MongoDB заканчивается. И начинается мой вопрос. Я думаю, что причина, по которой Unifi Controller не продолжает запускаться и не пишет новые логи после подключения к базе и создания коллекций, в том, что он тихо падает, пытаясь выполнить действие в MongoDB, для которого у него нет нужных прав.

Основываясь на скрипте выше, где я создаю базы и даю пользователю `ubnt` роль `readWrite`, мне интересно, как правильно выдать пользователю `ubnt` права, необходимые для удаления базы данных. Если я меняю роль `readWrite` на такие, как `root` или `dbAdminAnyDatabase`, команды не проходят.

Что нужно сделать, чтобы пользователь `ubnt` мог удалять базы `unifi` и `unifi_stat`? Или что изменить в строках подключения, чтобы это не происходило? Я в базах данных пока новичок.
 
dsully, ты обновлял докер-образ с релизом контроллера UniFi 5.9? Хотелось бы попробовать, но хочется использовать свежую версию. Спасибо!
 
EC2 Instance — это как виртуальная машина VMware или HyperV. Самостоятельный компьютер.

Docker — это то, что ты запускаешь НА машине, например, можно запустить Docker на EC2 instance. Docker создает изолированные «тюремные» пространства для программ, которые работают на одной машине, и при этом тратит меньше ресурсов, чем VMware.

Если можно запускать приложения на одной и той же ОС — пользуйся Docker. Если нужна полная изоляция — используй VMware, HyperV или EC2.

Понятно?
 
Два вопроса: 1) Кто-нибудь пробовал перейти на wired tiger Storage engine, например, на версии 3.4? 2) Если обновить системные настройки, чтобы указать внешний Mongo-сервер... что произойдет при обновлении контроллера? Вернёт ли он файл настроек обратно?
 
Спасибо — похоже, дебаг не показал ничего нового.  
[2017-03-24 14:58:26,886] <launcher> INFO db — ожидаем подключения к базе...
[2017-03-24 14:58:27,418] <launcher> INFO db — подключаемся к mongodb://<user>:<password>@<hostname>.documents.azure.com:<port>/unifi-ace?ssl=true
[2017-03-24 14:58:29,473] <launcher> DEBUG db — база подключена (3.2.0@<hostname>.documents.azure.com:<port>)
[2017-03-24 14:58:41,813] <launcher> INFO system — ======================================================================
[2017-03-24 14:58:41,819] <launcher> INFO system — UniFi 5.6.1 (сборка atag_5.6.1_9445 — релиз) запущен
[2017-03-24 14:58:41,819] <launcher> INFO system — ======================================================================
[2017-03-24 14:58:41,833] <launcher> INFO system — Базовая директория: /usr/lib/unifiloops, продолжаем…
— Не критично, что у меня это в DocumentDB или в любом другом хостинге, просто было интересно, заработает ли. Не против дальше разбираться, просто мало данных, почему происходит зацикливание.
 
Итак, они говорят, что в большинстве случаев всё сводится к тому, чтобы просто обновить URL подключения к Mongo. Но нам нужна полная реализация Mongo API, а не просто отправка документов. Мы настраиваем параметры базы данных Mongo под наши задачи, и я не уверен, что Azure позволяет менять эти настройки или вообще поддерживает эту часть Mongo API.

Поэтому мой первый совет — использовать платформу для хостинга Mongo, например, mlab. Можно попробовать бесплатно и получить избыточный shared instance всего за 5 долларов в месяц. Этого будет более чем достаточно.

Чтобы включить логирование, добавьте:
debug.system=debug

Это должно выдавать больше информации о том, почему вы зацикливаетесь в boot loop.
 
@UBNT-JoeHughes

Уверен ли я? Нет. Рекламирует ли Microsoft это так? Да 😀 https://docs.microsoft.com/en-us/azure/documentdb/documentdb-protocol-mongodb  
Вот моя строка подключения. И ещё, как включить логирование, если контроллер не стартует?  
db.mongo.local=false  
db.mongo.uri=mongodb://<user>:<password>@<hostname>.documents.azure.com:<port>/unifi-ace?ssl=true  
statdb.mongo.uri=mongodb://<user>:<password>@<hostname>.documents.azure.com:<port>/unifi-ace_stat?ssl=true  
unifi.db.name=unifi-ace
 
Насколько я понимаю, Atlas (MongoDB SAAS) появится на Microsoft/Azure — смотрите с 1:40 и дальше — https://www.youtube.com/watch?v=0vPt7GI-2kc&list=RD0vPt7GI-2kc. Учтите, что это отличный маркетинговый розыгрыш, но субтитры передают суть. Так что, возможно, лучше подождать полноценный оригинальный Mongo на Azure. R+C
 
@rageKage

Ты уверен, что Azure Document Store на 100% совместим с Mongo? Если сможешь выложить настройки mongo из своего system.properties (естественно, с удалёнными личными данными), возможно, я смогу заметить какие-то проблемы. Ещё стоит увеличить уровень логирования — это может прояснить ситуацию.
 
@UBNT-JoeHughes

Пытался использовать DocumentDB в Azure — взял версию с MongoDB API, пробовал разные варианты.  
1. mongorestore, но столкнулся с ограничением RU/s на уже существующий контроллер, решил  
2. Использовать полный бэкап сайта и сделать новую установку с целью восстановления конфигурации через UI контроллера.  
3. Контроллер стартовал с mongodb:// строками, создал коллекции в Azure DocumentDB, но ушёл в цикл перезапуска, не показывая, что именно не так.

Вижу, что контроллер создаёт базы данных, например:  
[2017-03-24 12:51:48,391] <launcher> INFO system - ======================================================================
[2017-03-24 12:51:48,392] <launcher> INFO system - UniFi 5.6.1 (build atag_5.6.1_9445 - release) is started
[2017-03-24 12:51:48,392] <launcher> INFO system - ======================================================================
[2017-03-24 12:51:48,400] <launcher> INFO system - BASE dir:/usr/lib/unifi
[2017-03-24 12:51:48,412] <launcher> INFO system - Current System IP: 10.0.0.4
[2017-03-24 12:51:48,413] <launcher> INFO system - Hostname: unifi-controller
[2017-03-24 12:51:48,261] <launcher> INFO db - waiting for db connection...
[2017-03-24 12:51:49,408] <launcher> INFO db - Connecting to mongodb://<user>:<password>@<hostname>.documents.azure.com:<port>/unifi-ace?ssl=true
[2017-03-24 12:55:05,107] <launcher> INFO db - Connecting to mongodb://<user>:<password>@<hostname>.documents.azure.com:<port>/unifi-ace_stat?ssl=true

Но после этого происходит постоянный цикл:  
[2017-03-24 12:56:34,187] <launcher> INFO system - ======================================================================
[2017-03-24 12:56:34,187] <launcher> INFO system - UniFi 5.6.1 (build atag_5.6.1_9445 - release) is started
[2017-03-24 12:56:34,187] <launcher> INFO system - ======================================================================
[2017-03-24 12:56:34,195] <launcher> INFO system - BASE dir:/usr/lib/unifi
[2017-03-24 12:56:34,197] <launcher> INFO system - Current System IP: 10.0.0.4
[2017-03-24 12:56:34,234] <launcher> INFO system - Hostname: unifi-controller
[2017-03-24 12:56:34,598] <launcher> INFO db - waiting for db connection...
[2017-03-24 12:56:35,114] <launcher> INFO db - Connecting to mongodb://<user>:<password>@<hostname>.documents.azure.com:<port>/unifi-ace?ssl=true
[2017-03-24 12:56:55,166] <launcher> INFO system - ======================================================================
[2017-03-24 12:56:55,167] <launcher> INFO system - UniFi 5.6.1 (build atag_5.6.1_9445 - release) is started
[2017-03-24 12:56:55,167] <launcher> INFO system - ======================================================================
[2017-03-24 12:56:55,170] <launcher> INFO system - BASE dir:/usr/lib/unifi
[2017-03-24 12:56:55,178] <launcher> INFO system - Current System IP: 10.0.0.4
[2017-03-24 12:56:55,180] <launcher> INFO system - Hostname: unifi-controller
[2017-03-24 12:56:55,573] <launcher> INFO db - waiting for db connection...
[2017-03-24 12:56:56,095] <launcher> INFO db - Connecting to mongodb://<user>:<password>@<hostname>.documents.azure.com:<port>/unifi-ace?ssl=true
[2017-03-24 12:57:11,151] <launcher> INFO system - ======================================================================
[2017-03-24 12:57:11,159] <launcher> INFO system - UniFi 5.6.1 (build atag_5.6.1_9445 - release) is started
[2017-03-24 12:57:11,159] <launcher> INFO system - ======================================================================
[2017-03-24 12:57:11,179] <launcher> INFO system - BASE dir:/usr/lib/unifi
[2017-03-24 12:57:11,190] <launcher> INFO system - Current System IP: 10.0.0.4

Как мне получить больше информации, чтобы понять, почему идёт этот цикл?
Страницы: 1
Читают тему (гостей: 1)