• Pgpool-II, отзывы?

    lesovsky
    @lesovsky Автор вопроса
    System engineer and PostgreSQL DBA
    их тех «косяков» что я обнаружил:
    — в режиме балансировки, при падении слейва, pgpool может начать игнорировать мастера))) в итоге мастер хоть и жив, но pgpool не отправляет на него запросы; толи это странность в health_ и sr_ проверках, толи еще что…
    — неэффективный пуллинг конектов, нельзя запихнуть в него больше клиентов чем max_connections в postgresql.conf (в pgbouncer же это можно сделать); т.е. пуллинг он как бы есть но внутри одного воркера =)
    — непонял как подцепить pgpool к постгресу через unix-сокет, не видит его и все тут… собака, вроде все тривиально решается одной строчкой конфига, но нет жэ… all backends are down
    — все время пытается мне сделать при сбое слейва авто-файловер,… ну не сторонник я автоматики при разгребании аварии с базами данных…

    пока заставил его работать как мне надо, но какой ценой… помоему keepalived+haproxy+pgbouncer и какая-нибудь makara на строне приложения были бы годнее
    Ответ написан
    Комментировать
  • VPC Amazon Cloud, с чего начать или какие есть альтернативы? Как рассчитать стоимость?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    lightsail, как можно догадаться по названию, это упрощенный(легкий) интерфейс над вычислительными - Elastic Compute Cloud (EC2) сервисами. И немного более дешевый в связи с тем, что контроля вам дают мало. Однако он сразу реализует некоторые паттерны и наборы сервисов для быстрого старта. Это - путь стартапов.
    Lightsail, насколько я помню, запускается в "VPC по умолчанию" которым управляет AWS и где все сервера живут в публичной подсети, что небезопасно.

    Та схема которую вы хотите, наверное, реализуется lightsail-ом, но для большего контроля все таки рекомендуется организовать свой VPC (Virtual Private Cloud) - компонент сетевых сервисов AWS.
    В вашем случае потребуется что-то вроде(для оценки стоимости) :

    1. Балансировщик :
    - ALB\ELB сервис (отдельный прайсинг). HA сервиса обеспечивает AWS
    или
    - два инстанса нужного вам балансировщика (Nginx, HAProxy и другие). HA и прочая обеспечиваете вы.

    2. N бэкендов нужного типа (смотрите стоимость конкретного инстанса соответствующего вашим потребностям)

    3. реплицируемые базы :
    - вы можете взять 2 инстанса нужной мощности(платите за инстансы) и настроить все сами
    или
    - взять RDS (отдельный сервис, другой прайсинг) нужной базы где HA и обслуживанием будет заниматься AWS для вас, предоставляя вам эндпойнт для подключения с серверов.

    4. Файловое хранилище. Тут интереснее
    Если у вас Windows : вам понадобятся два инстанса для обеспечения отказоустойчивости и HA
    Если у вас *nix : вы можете сделать так же как с WIndows или взять EFS (отдельный сервис, где вы платите за занятое место) который высокодоступен и может быть подключен к разным *nix инстансам одновременно.

    5. Внутренности VPC
    VPC организуется так же как и любая сеть в железном эквиваленте.
    Подсети - приватные, публичные
    Настройка роутинга для публичных подсетей, для приватных подсетей через NAT инстанс\сервис
    NAT инстанс или сервис
    VPN инстанс или бастион (для доступа к инстансам в приватной подсети)

    Вот тут вы уже можете подсчитать во сколько обойдется примерно владение только инстансами и необходимыми сервисами.
    Сколько у вас будет непредвиденных расходов на передачу данных и тп. - вы сможете увидеть только по результатам билинга за первый месяц.

    Это мое личное мнение по тому, как следовало бы сделать в вашем случае.
    Может статься, что вы не осилите (у каждого своя скорость освоения) это достаточно быстро и быстрее реализуете другую схему - это на ваш выбор
    Ответ написан
    Комментировать
  • Как создать JSON с помощью python с ключом последовательности для обнаружения Zabbix LLD TOP 5 процессов по памяти?

    @Hanharr
    А если так

    #!/usr/bin/env python3
    
    import os
    import json
    
    s = os.popen("ps axho comm --sort -rss | head -5").read()
    
    service_states = s.split()
    
    count = 0
    data = {}
    
    for i in service_states:
        count += 1
        key = "{#TOPMEMNAME" + str(count) + "}"
        data.setdefault("data", []).append({key:i})
    
    print(json.dumps(data, sort_keys=True, indent=2))


    Вывод:
    {
      "data": [
        {
          "{#TOPMEMNAME1}": "python3"
        },
        {
          "{#TOPMEMNAME2}": "bash"
        },
        {
          "{#TOPMEMNAME3}": "ps"
        },
        {
          "{#TOPMEMNAME4}": "head"
        },
        {
          "{#TOPMEMNAME5}": "sh"
        }
      ]
    }


    Подшаманил чуть-чуть.
    Ответ написан
    Комментировать
  • Как правильно конвертировать bash вывод в JSON с ключом {#PROCNAME}?

    @q27off
    echo -e '{\n\t"data": ['
    
    ps axho comm --sort -rss | head -5 |
    while read -r proc
    do
        echo -ne '\t\t{\n\t\t\t"{#PROCNAME}":'
        echo " \"$proc\""
        echo -e '\t\t},'
    done
    
    echo -e '\t]\n}'
    Ответ написан
    1 комментарий
  • Как делаете периодическое обслуживание PostgreSQL, если у вас есть большие базы с большими таблицами на сотни ГБ?

    Melkij
    @Melkij
    PostgreSQL DBA
    Под периодическим обслуживанием я подразумеваю vacuum, reindex, analyze

    А зачем?
    Обратите внимание: это вопрос от postgresql DBA. Да, у нас есть таблицы и на несколько террабайт.

    После нормальной настройки автовакуума под железо (вместо дефолтных настроек под любую кофеварку) с вакуумом и analyze нормально справляется автовакуум.
    Вместо reindex - pgcompacttable, pg_repack, да хоть вручную или каким-нибудь своим скриптом create index concurrently + drop index concurrently
    Ответ написан
    Комментировать
  • Где искать практические задания для системного администратора?

    Могу еще добавить развертывание на паре нод openstack с каким-нибудь ceph:))
    Еще то развлечение
    Ответ написан
    Комментировать
  • Каковы перспективы самописных ОС типа ReactOS, чего они добиваются?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Сегодняшние операционные системы - это монстры на несколько гигабайт, в которых полно багов. Мало того, что они много места занимают на диске, так они ещё и много оперативы жрут.

    А много ли требуется от ОС? Обеспечить бесперебойную работу приложений и драйверов, и доступ к ресурсам компьютера. Всё!

    Раньше, во времена MS-DOS, как-то всем хватало 640Кб, даже с запасом. А что сейчас?

    Вот самописные ОС и пытаются конкурировать. Их проблема в том, что им не удаётся стать достаточно универсальными. Не то, чтобы это было невозможно, просто очень долго, а денег за это, как правило, никто не платит. Можно пойти по пути быстрой разработки тяп-ляп с нагромождением готовых решений, которые тянут за собой огромные библиотеки и кучу ресурсов прозапас, но это выльется в то, что ОС будет монстром. А можно долго и вдумчиво делать качественную продуманную архитектуру, внедрять поддержку существующих технологий, внедрять поддержку старых умерших технологий для обратной совместимости, писать или приспосабливать драйвера, и надеяться, что ОС увидит светлое будущее, но на это уйдут годы или десятилетия, а многих не хватает на такой подвиг на голом энтузиазме.

    Самый правильный путь - это отказаться от старых технологий. А современные технологии допилить до ума, не перегружая, сделав их простыми и надёжными. И только их и поддерживать. Но, как я уже сказал, при таком подходе страдает универсальность и обратная совместимость, да и просто совместимость, поэтому такая ОС будет не популярной.
    Ответ написан
    1 комментарий
  • Каковы перспективы самописных ОС типа ReactOS, чего они добиваются?

    @nukler
    местный юродивый
    Солидарен с dollar.
    Еще есть нюанс, многие крупные компании заинтересованы в ОС совместимой с WXP или W7, просто потому что есть масса оборудования еще рабочее но MS не поддерживает операционную систему.
    К примеру станки, сервера, принтеры, специфическое оборудование и прочее итд. Ставить на них W10? Драйверов нет, поддержки нет. Вот и поддерживают ReactOS.

    Да и вообщем то, простому пользователю плевать, на чем запустить офис и браузер.
    Ответ написан
    5 комментариев
  • Каковы перспективы самописных ОС типа ReactOS, чего они добиваются?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Тогда зачем?
    Сделать Windows c отрытым кодом.

    в роли догоняющих
    Это если есть за чем гнаться. Не всем нужно то, что сейчас добавляется в Windows 10.
    Ответ написан
    Комментировать
  • Почему CLOSE_WAIT зависают и вешают веб-сервер?

    @hx510b
    "Я знаю, что ничего не знаю"
    Можно донастроить TCP стек, чтобы уменьшить время удержания открытых сокетов:
    echo 5 > /proc/sys/net/ipv4/tcp_fin_timeout  # освобождать через 5 секунд
    echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle  # включить утилизацию

    Изменить параметрые nginx:
    worker_processes auto;
    - количество процессов по количеству ядер CPU или auto
    events {
           worker_connections 10000;
           multi_accept on;
    }

    - worker_connections сколько надо держать соединений на один процесс, т.е.
    worker_processes * worker_connections = сколько всего соединений надо обрабатывать.
    multi_accept on - процесс будет пытаться сразу брать все новые соединения, а не по одному.
    worker_rlimit_nofile 200000;
    - т.е. если хотим 100000 соединений, то пишем 200000

    надо изменить в системе лимит на количество открытых файлов:
    ulimit -n 1031089
    считается, что для гигабитного канала больше 50 тысяч соединений не получить.

    Еще по теме:
    https://habr.com/post/198982/ - Ускоряем Nginx за 5 минут
    https://romantelychko.com/blog/1300/ - Настройка Linux для высоконагруженных проектов и защиты от DDoS
    Ответ написан
    1 комментарий
  • Можно ли и как использовать kubespray без клонирования репозитория kubespray?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    склонируйте на машине с интернетом, скопируйте, поправьте скрипт, никаких проблем.
    вот только кубер без интернета - как-то странно, дальше по коду скрипта кубер будет сетапиться тоже не из космоса
    Ответ написан
    2 комментария
  • Как проверить используется ли модуль passwordcheck без попытки создания пользователя?

    Melkij
    @Melkij
    PostgreSQL DBA
    Настроек у него никаких, поэтому достаточно проверить, что он загружен, т.е. упомянут в
    show shared_preload_libraries;
    Ответ написан
    Комментировать
  • Как правильно использовать Puppet?

    xenozauros
    @xenozauros
    Админю, пишу на питоне, вот это вот все...
    Для этого в паппете есть окружения.

    Создаете новое окружение с нужными вам настройками, загоняете одну - две - несколько нод в это окружение, проверяете. Потом переносите изменения в продакшн окружение, возвращаете ноды обратно в прод.

    При использовании r10k - это очень удобно делать прямо ветками в гите - создаете новую ветку, деплоите ее как отдельный environment, потом мерж.
    Ответ написан
    Комментировать
  • Зачем нужна связка python и go?

    VGrabko
    @VGrabko
    Golang, Php, Js
    А зачем нам другие ЯП если всё можно на C написать ?)

    А вообще для Питон разработчика проще освоить Go чем Cи и сравнительно быстро начать оптимизировать питон при помощи Golang -a. Я видел как люди большие проекты переписывают на Go путём вынесения тяжелых кусков в Go и со временем вообще уходят от питона.
    Ответ написан
  • Как правильно считать сколько памяти занимает PostgreSQL?

    OrlovEvgenii
    @OrlovEvgenii
    golang developer / DevOps
    sudo curl -L https://raw.githubusercontent.com/pixelb/ps_mem/master/ps_mem.py --output /usr/local/bin/psmem


    sudo chmod +x /usr/local/bin/psmem

    psmem

    вернет подробную таблицу (Shared, private) используемой памяти по каждому запущеному демону
    Ответ написан
    2 комментария
  • Какую утилиту лучше использовать для реорганизации таблиц PostgreSQL (например: pg_repack vs pgcompactor vs подстройка автовакума)?

    Melkij
    @Melkij
    PostgreSQL DBA
    pg_repack - это community extension, форк более раннего pg_reorg. И не отрицая вклад участников pgpro в разработку postgresql в целом - я не вижу их среди контрибьютеров pg_repack.

    Мы активно используем обе. Основные моменты касательно pg_repack vs pgcompacttable в общем-то именно я и изложил в README компактора. Если говорить на русском:
    - pg_repack делает копию таблицы, т.е. требуется двукратный запас диска. Компактор работает в рамках одной таблицы и требует место только под копию наиболее толстого индекса и то, толстые индексы обрабатываются самыми последними. Т.е. расчёт на работу когда места уже мало.
    - компактор намеренно выполняется медленно чтобы не задевать работающий проект
    - компактор не может обрабатывать toast таблицы. Репак - может.
    - pg_repack характеризуется очень заметными пиками io и wal. Вся таблица едет одной транзакцией и это никак не регулируется. Поэтому может аффектить прод на неважных дисках и в том числе оторвать реплики при недостатке сетевой полосы.
    - pg_repack умеет перемещать между tablespace и может делать команду cluster

    (или лучше подстроить автовакум)?

    Конечно необходимо настроить автовакуум и не мешать ему работать - т.е. исключить долгие транзакции. Но всё равно бывают хитрые моменты, когда репак или компактор бывают нужны.
    Ответ написан
    2 комментария
  • Зачем в Linux ограничение на количество открытых файлов?

    opium
    @opium
    Просто люблю качественно работать
    Чтобы процессы не борзели открывать файлы
    Эмпирическим путем
    Можно в лимитс задавать
    Ответ написан
    3 комментария
  • Куда лучше выкладывать публично Java SE проекты?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    На github, как и любые другие.
    Ответ написан
    Комментировать
  • На чем вести учет ИТ-оборудования на всем их жизненном цикле?

    @Tabletko
    никого не трогаю, починяю примус
    Ответ написан
    Комментировать