Задать вопрос
  • Как можно поменять ip адрес мастер и воркер нод кластера Kubernetes?

    @bankinobi
    Легче пересоздать кластер. Поднять второй и перенести нагрузку на него.
    Если адреса еще из тойже подсети, то можно исхитриться: выводится нода из кластера - вводится с новым адресом. Желательно сделать переустаровку операционки. Тоже самое с мастерами.
    Если подсети разные, то возникают трудноразрешимые вопросы с сетевым плагином: фланель понимает только плоские сети, с калико можно поиграть с параметром cross-subnet.
    Но самое простое и быстрое - это пересоздание.
    Ответ написан
    1 комментарий
  • Как осуществить доступ через внешний IP на свои ресурсы, находящиеся внутри сети?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    маршрутизатор + маркировка пакетов

    марш может быть микротиком, любым другим, сервером с линуксом и т.п.
    Ответ написан
  • Нужно ли хранить путь к картинке в БД?

    @yayashitoya
    Если картинка ровно 1 на пост и лежит всегда в одном месте - то не нужно.
    Если картинок много, но лежат они в одном месте - то путь не нужен, только имя файла.
    Если картинка может лежать в разных местах, то нужно и путь хранить.
    Ответ написан
    2 комментария
  • Как организовать zerodowntime обновление СУБД?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Вы должны разрабатывать и деплоить приложение соответствующим образом. Так, чтобы старая версия приложения могла работать с новой версией схемы базы. Или наоборот, новая версия приложения могла работать со старой схемой базы.
    То есть удаление таблички: сначала деплоите приложение, которое уже не работает с этой таблицей, потом удаляете таблицу
    Новая табличка: сначала миграция, затем приложение
    Новое поле в таблице с default значением: сначала поле, затем приложение
    Новое поле без default: сначала новое поле с default null, затем релиз приложения которое обязано писать новое поле, но ещё не читать его (либо приводить null к нужному если это возможно на приложении), затем миграция с проставлением нужного значения (и, блин, не одним update по всей большой таблице), drop default, set not null, деплой приложения со всей логикой
    И так далее. Во время разработки думаем, а как, когда и в сколько итераций это можно будет задеплоить.

    Ну и, разумеется, DBA (или заменяющий его обязанности человек) думает над тем, как именно вносить нужную миграцию в базу
    Ответ написан
    Комментировать
  • Как правильно сгенерировать и подключить ssl сертификат в nginx?

    @ber_enot
    Веб-разработчик, Vue.js / Node.js
    Проще всего получить сертификат от Let's Encrypt.
    Инструкция здесь: https://certbot.eff.org
    Выбираете сервер (nginx) и ОС, открывается инструкция.

    Вот пример для debian 9:
    https://certbot.eff.org/lets-encrypt/debianstretch...

    А вот конфигурация хоста:
    server {
        listen 443 ssl default_server;
        server_name my-domain;
        
        ssl_certificate /etc/letsencrypt/live/my-domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/my-domain/privkey.pem;
      
        # ...
    }


    Это упрощенно. Работать будет, но почитайте еще про настройку HTTPS в nginx.
    Ответ написан
    Комментировать
  • Переполнен /dev/md2/. Что делать?

    @pfg21
    ex-турист
    поставить и запустить ncdu
    посмотреть где что лишнего валяется.
    в нем же можно и удалить лишнее, но осторожно.
    /var/cache, var/log, и много где чего лишнего может лежать.
    Ответ написан
    1 комментарий
  • В чем отличие описание деплой в docker-compose command и ENTRYPOINT?

    @qq1
    ENTRYPOINT определяет команду которая будет выполнятся при старте контейнера.
    CMD определяет аргументы которые будут переданы в ENTRYPOINT.
    Докер по-умолчанию имеет ENTRYPOINT равный /bin/sh -c
    В свою очередь, command параметр в docker-compose.yml переопределяет CMD из докерфайла.
    Вот и все различия.
    По поводу лаконичности, то что имеет отношение к самому контейнеру и то что не зависит от окружения в котором запускается контейнер логичнее убрать в Dockerfile/entrypoint.sh дабы избежать дублирования в случае нескольких docker-compose.yml
    Ответ написан
    Комментировать
  • Как запустить контейнер, если Docker говорит, что нет свободного места, а df показывает, что есть?

    @luxter Автор вопроса
    Вопрос решил тем, что почистил директорию /run , ибо проблема была в недостаточном кол-ве места в ней.
    Ответ написан
    Комментировать
  • Как сделать отказоустойчивый кластер PostgreSQL?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Мультимастер СУБД - это такая замечательная штука, которую все хотят и ни у кого пока не получилось.
    Потому что есть такая штука как CAP теорема, весьма мешающая сделать серебряную пулю.

    Ладно, ближе к делу.
    Самая большая проблема с автоматическим failover СУБД - решить, что уже пора переключаться. Для чего необходимо выяснить, а что вообще происходит, не развалилась ли сеть, не вернётся ли через пару секунд мастер обратно - если в сети в результате окажется два мастера, то нет никакого разумного способа определить, где данные актуальны. Худшее что можно представить - это split brain: когда часть приложений ходит в один мастер, часть в другой и данные стремительно расходятся в разные стороны. Есть такая байка про гуглдиск "у нас всё отказоустойчиво, все данные хранятся в 4 экземплярах. Правда, у нас была авария и мы теперь понятий не имеем, какая из копий актуальная"
    Переключение мастера на 90% - решение административное и человеческое. Автоматика же добавляет головной боли. Зачастую - больше головной боли, чем без неё. Особенно если железо адекватное серверное, которое "вдруг" выпадает очень редко.

    Обычно автоматики нет, и есть детальная инструкция по переключению мастера БД, по которой и в ночи можно переключиться.

    Если всё ещё хочется походить по граблям - посмотрите patroni. Есть пара кластеров с ним на поддержке, при наличии мониторинга особых проблем не припоминаю. До split brain по крайней мере не придумал как довести, вроде все варианты прикрыты. В худшем случае в readonly уходит.
    Ответ написан
    7 комментариев
  • Можно ли открыть порт в Dockerfile?

    ZiggiPop
    @ZiggiPop
    Linux Admin / Frontend Developer
    Из документации:
    EXPOSE <port> [<port>/<protocol>...]
    VOLUME ["/data"]

    То есть в докерфайле ничего нет о том, куда пробрасываются из контейнера порты и откуда маунтятся тома. Все это указывается при создании контейнера, так как от докерфайла не должна зависить инфраструктура вне контейнера.
    Ответ написан
    Комментировать
  • Как пересоздать MySQL бд в docker-compose?

    yellow79
    @yellow79
    Senior Software Engineer
    Удалите то, что лежит в db_data
    Ответ написан
    2 комментария
  • Как посмотреть какой docker контейнер грузит систему?

    Nirail
    @Nirail
    Дайте мне повод и я во все решу
    Если мы говорим о Docker на Linux, то все процессы контейнеров будут отображаться в ps auxf в виде обычных процессов, из этого списка можно найти тот процесс который грузит систему, после чего по иерархии можно найти идентификатор контейнера, по нему конкретный контейнер.
    Ответ написан
    Комментировать
  • Какая разница между версиями Linux для VPS?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Разница между дистрибами конечно есть. Но для VPS она никакого рояля не играет. Если не знаете ни один - ставьте тот, по которому проще будет проконсультироваться.
    На самом деле, когда нет каких-то жестких критериев типа "этот софт работает только в дистрибе N" (вариант - есть пакет только под дистриб M), выбор обычно делают из личных предпочтений :) Как они складываются? Ну вот как получилось, что моим первым дистрибом стал CentOS? На прежней работе сказали - нам все равно что это будет за дистриб, если это будет CentOS :D
    Вся разница проявится при админстве системы и установке программ - у каждого дистриба свой пакетный менеджер и свои приколы в этой области - в работе сайта разницы не будет никакой.
    Ответ написан
    Комментировать
  • Вопрос по docker. Как работают команды docker create and docker run?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1)Что делает команда docker create ubuntu ?

    Распаковывает образ и создает на его основании контейнер
    2)Что делает команда docker run ?

    Распаковывает образ и создает на его основании контейнер и запускает его
    3)И для чего нужна команда docker start ?

    Запускает ранее созданный контейнер
    Ответ написан
    Комментировать
  • Какие это права?

    @Alexander1705
    Не обязательно запоминать номера для каждого флага:
    chmod u=rwx,g=rs,o=rx /usr/bin/crontab
    Ответ написан
    1 комментарий
  • Управление несколькими линукс серверами?

    moropsk
    @moropsk
    Краткая шпаргалка по tmux (менеджеру терминалов)
    https://habrahabr.ru/post/126996/

    От screen к tmux + конфиг
    muhas.ru

    Приручаем Tmux для повседневных нужд 
    https://habrahabr.ru/post/165437/

    запустить сеанс с разделёнными окнами
    https://webhamster.ru/mytetrashare/index/mtb0/1384...

    How to Install and Configure latest version of Ansible on Ubuntu Linux
    https://www.cyberciti.biz/faq/how-to-install-and-c...

    Установка и настройка Ansible в Unix/Linux
    https://linux-notes.org/ustanovka-i-nastrojka-ansi...
    Ответ написан
    Комментировать
  • Как управлять полем сериализатора Django Rest Framework?

    @ilya_chch Автор вопроса
    Как выяснилось, самый простой и надежный способ - Сделать второй сериализатор, который бы отдавал все объекты. а в представлении переопределить метод get_serializer, который бы подсовывал нужный сериализатор
    Ответ написан
    Комментировать
  • ДДос атака на nginx пакетами 1 байт?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    500 строк в секунду - это не мощно и, вероятно, даже не DDoS. Если адрес один, то просто закройте ему доступ брандмауэром, а если адреса разные, то настройте лимит запросов в Nginx.

    nginx.conf
    http {
        ...
        limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=30r/s;
        ...
    }

    some_site.conf
    server {
        ...
        location / {
            ...
            limit_req zone=reqlimit burst=10 nodelay;
        }
    }

    После этого запросы с одного ip-адреса начиная с 31-го в секунду будут отбрасываться.

    Как вишенку на торт, можно добавить ещё фильтр для fail2ban:

    nginx-req-limit.conf
    [Definition]
    
    failregex = limiting requests, excess: .* by zone .*, client: <HOST>
    ignoreregex =

    и правило в jail.local
    [nginx-req-limit]
    enabled = true
    port = http,https
    filter = nginx-req-limit
    logpath = /var/www/*/*/logs/error.log # Здесь укажите свой путь к логам виртуального хоста
    findtime = 600
    maxretry = 10
    bantime = 7200

    После этого адреса DoS'еров будут автоматически блокироваться брандмауэром на два часа. Что разгрузит Nginx от обработки паразитного трафика.
    Ответ написан
    11 комментариев