Denis 災 nobody
echo "rs.status()" | mongo | grep 'stateStr'
"stateStr" : "SECONDARY",
"stateStr" : "STARTUP",
"stateStr" : "STARTUP",
"stateStr" : "STARTUP",
yopp
Denis 災 nobody
3 в кластере + одна в delayed на сутки
yopp
Она hidden и priority 0?
yopp
Сейчас кворума нет
Denis 災 nobody
use admin;
config = {_id: "{{ReplicaSetName}}", members : [
{_id : 0, host:"{{CLUSTER}}mongo1-{{Env}}.{{Domain}}:27017"},
{_id : 1, host:"{{CLUSTER}}mongo2-{{Env}}.{{Domain}}:27017"},
{_id : 2, host:"{{CLUSTER}}mongo3-{{Env}}.{{Domain}}:27017"},
{_id : 3, host:"{{CLUSTER}}mongo4-{{Env}}.{{Domain}}:27017", "priority": 0, "slaveDelay": 43200, "hidden":true}
]};
rs.initiate(config);
Denis 災 nobody
Сейчас кворума нет
в таком режиме больше года собирали успешно. А тут - пробуем 4.2 от перконы
yopp
А в логах что?
yopp
С р:0 и hidden кворум будет
Denis 災 nobody
...
2020-08-27T01:51:29.208+0000 I ELECTION [replexec-2] VoteRequester(term 0 dry run) received an invalid response from mongo4-staging.s20.loc:27017: NotYetInitialized: no replset config has been received; response message: { operationTime: Timestamp(0, 0), ok: 0.0, errmsg: "no replset config has been received", code: 94, codeName: "NotYetInitialized", $clusterTime: { clusterTime: Timestamp(1598492395, 1), signature: { hash: BinData(0, 0000000000000000000000000000000000000000), keyId: 0 } } }
2020-08-27T01:51:29.208+0000 I ELECTION [replexec-2] not running for primary, we received insufficient votes
2020-08-27T01:51:29.208+0000 I ELECTION [replexec-2] Lost dry run election due to internal error
Denis 災 nobody
какая-то ерунда
yopp
Можно ещё votes: 0 поставить
Denis 災 nobody
на нодах вписано
replication:
replSetName: "services-20-staging-mongodb"
сам код настройки нод не менялся уже давно...
Denis 災 nobody
было предположение что кластер не собирался потому что ptr не было, но его уже давно добавили по всем адресам
yopp
Я бы попробовал пересоздать кластер с votes: 0, чтоб в кластере было точно нечетное количество голосов и проверить что все ноды друг друга видят
Denis 災 nobody
пересоздать это удалять папку с данными?
yopp
Если не все ноды друг-друга видят, то могут быть разные эффекты, типа вот этого not initialized. Но это вторичная гипотеза, на мой взгляд вероятнее что кворума нет и праймери не выбирается
yopp
Denis 災 nobody
есть предположение что с нуля выкатка - кластер поднимется, но сейчас нужно понять именно что не так
а как выставить просто votes из консоли? Только через force:true?
yopp
Denis 災 nobody
эх... благо, в доке я этот момент описывал
yopp
В принципе все эти автоматические выкатки они могут вот так закончится, потому что ноды иницилвизировались например не в том порядке
Denis 災 nobody
блин, на cfg = rs.conf() говорит "codeName" : "Unauthorized"
Denis 災 nobody
это всё в амазоне если что
yopp
Denis 災 nobody
тут ещё запросили "расширенную проверку" через порт 27017, но там даже не хттп.. только клиентом тыкаться..
Denis 災 nobody
У пользователя роли clusterAdmin нет?
тут обход security должен срабатывать, через коннект к локалхост, потому что сразу деплоится конфиг с ключом и это автоматом security: true делает
Denis 災 nobody
до создания рут юзера ещё не дошли..
yopp
¯\_(ツ)_/¯ это форк, там все что угодно может быть
Denis 災 nobody
ну вот и нужно понять, подходит ли и какие камни. И чем больше камней соберу, тем лучше
Denis 災 nobody
так-то там memory хранилище есть и ещё ряд плюшек
yopp
Для начала надёжнее попробовать собрать кластер руками с той конфигурацией, которая была. возможно будет понятнее где оно ломается
Denis 災 nobody
The localhost interface is only available since no users have been created for the deployment. The localhost interface closes after the creation of the first user.
Denis 災 nobody
Denis 災 nobody
собсно применяю конфиг сборки, потом конфиг рута
Denis 災 nobody
при этом rs.status() работает. Когда рут уже создан, статус тоже давал отлуп что не авторизован
Pavel
Здравствуйте! Хотел бы предложить монгодевам дать комментарий для материала ко дню программиста в журнал "Системный Администратор". Мы проводим опрос "Срез индустрии", чтобы понять тенденции развития отрасли. От героев требуются развёрнутые ответы на 3 вопроса:
1. Почему вы стали программистом? С какими трудностями столкнулись?
2. Что вам нравится в работе программиста? Что придаёт смысла и драйва ежедневным таскам?
3. Каким вы видите будущее программирования? Что ждёт программистов через год, пять, десять?
Ответы на вопросы, ваши имя, фамилию, должность и фото присылайте в ЛС.
Статья с результатами опроса пойдёт в сентябрьский выпуск журнала.
Nick
Pavel
Осуществление законной профессиональной деятельности журналиста является одним из 4 условий свободного использования ПД согласно п.8 ст. 6 152-ФЗ «О персональных данных».
Nick
Женя
Ребят, как найти все order, у которых ссылка user, и у этого user определённый email?
Nick
Женя
Denis 災 nobody
а в какой чат можно обратиться по продуктам перконы? У них нет фирменных чатов?
Denis 災 nobody
монга-перкона так и не запускается
Alex
Как правильно прибавить число к объекту?
Сейчас реализую вот так
Alex
Alex
Повторно запросить объект?
Ростислав ✚
Pavel
Чё, совсем туго с людьми? Даже сюда добрались)
Просто техническая журналистика потихоньку поднимается из грязи. Можно сказать, что "Код" Яндекса пнул руководство СисАдмина пересмотреть модель работы. А так - мы никуда и не уходили. Просто крутились где-то выше в глубоком энтерпрайзе среди чиновников и госдепа.
Denis 災 nobody
@dd_bb тут набег ботов, надо всех выкинуть
Denis 災 nobody
и я кстати разобрался почему 3 из 4 были в STARTING
Denis 災 nobody
скрипты были под 3.4, где надо было просто закомменитить bindIp, а в 4.2 так не работает. Но на мастере подключался скрипт инициализации, поэтому слейвы и не могли к нему прицепиться
Denis 災 nobody
что-то нет в доке, как подключаться через cli как mongodb+srv? В каком формате тогда строка подключения?
Denis 災 nobody
короче, строка подключения тогда выглядит так
mongo mongodb+srv://mongo-staging.domain.loc/?ssl=false --authenticationDatabase admin --username root --password
Denis 災 nobody
вынос &ssl=false в днс даёт ошибку FailedToParse: Encountered invalid options in TXT record.
как бы избавиться от неё..
yopp
SSL в txt запись добавить нельзя, только через query params или cli options (не уверен что поддерживается вместе с dns seedlist)
yopp
multiple TXT records appear in the DNS and/or if the TXT record contains an option other than replicaSet or authSource, the client will return an error.
Андрей
Подскажите плиз как базу организовать. У меня есть HomepageSchema и там поле feedbackSection и в нем sectionTitle и feedback, feedback сделал отдельной сущностью-моделью. Хочу сделать так что бы в feedbackSection как то по ссылке лежали все созданные Feedback документы. Правильно ли я думаю что нужно просто создать документ Feedback и положить его в поле feedback , а когда нужно удалить, нужно удалить из HomepageSchema.feedbackSection из самой коллекции Feedback?
Vlad
Андрей
Вроде да, спасибо, попробу
Nick
Привет. Почему, в атласе имя коллекции не совпадает с тем, что я указал в модели? Я пытался руками создать в атласе Test, но запрос начинает возвращать пустой массив.
Nick
Это каcается и towns и users. В коде сервера я обращаюсь к ним как к await Town.find() и await User.find()
Nick
Nick
Denis 災 nobody
Nick
Как бы вы реализовали хранение и выдачу изображений товаров в интернет магазине?
1. Есть вариант хранить base64 в массиве в самой схеме товара
2. Подключить s3 от амазона
3. Тупо статика на сервере
4. GridFs
Посоветуйте какой вариант будет самый оптимальный? В одном товаре от 1 до 4 изображений максимум. А в целом товаров до 500.
Nick
Nick
Допустим 2 - как тогда в запросе отдать img?
Nick
url
Nick
Конвертить?
Nick
Просто ссылка?
Nick
да
Nick
ее использовать как src картинки
Gopneg
если картинки будут заливать юзеры, то 3 не вариант ваще
завтра станет два сервака и получится херота
в остальном пофиг, главное что бы между твоим серваком и юзером была CDN
ну и хранить base64 это накладно по месту
Nick
Вроде самый лёгкий вариант
Nick
Надо как то связать id товара с нужными картинками