DevOps | Linux

Как определить, почему Prometheus потребляет много CPU. Частный случай.

Небольшая предыстория. Есть Prometheus, который запущен в k8s кластере и на нём большая нагрузка по CPU, хотя достаточно не много ресурсов скрейпятся в единицу времени (около 200к таймсерий каждые 10 сек). Картина нагрузки выглядит следующим образом: В получившемся результате, меня заинтересовала группа node-exporter т.к. она выполнялась много времени Теперь, я хочу понять, какое правило в […]

Continue Reading...

DevOps | Linux | Разное

Массовое восстановление индексов Elasticsearch из snapshot с переименованием

Часто надо восстановить индексы, чтобы провалидировать логи за длительное время. И для анализа логов, нам не требуется отказоустойчивость, в данном скрипте, индексы восстанавливаются сразу с переименованием и с отключенными репликами. Скрипт требует доступа к elastic напрямую. У меня это работа eck оператора в namespace logging в кластере kubernetes по https и с авторизацией

Continue Reading...

DevOps | Linux

MySQL Replication master-slave with zero-downtime [Docker]

Сделаем бекап на мастере в папку /mysql-backup-20 После этого, надо применить бинарный лог к нашему дампу, иначе оно не «взлетит». Вложенную папку с временем дампа можно увидеть в момент бекапа. =) Заливаем на SLAVE сервер с мастера Создаём пользователя на MySQL мастере, который может реплицировать: На SLAVE сервере в настройках сразу меняем server-id и выставляем […]

Continue Reading...

DevOps | Linux

Jenkins Pipeline With k8s Staging

Требование: С помощью Jenkins Pipeline на каждый пул-реквест поднимать стейдж окружение и делать web-доступ на индивидуальном поддомене в kubernetes кластере, чтобы прогонять тесты, проверять гипотезы и предоставлять заказчику preview выполненной работы. Описание: Для каждого PR поднимается свой деплой со своими deployment, service, ingress в namespace project-stage. Удаляются дейплои после закрытия PR с помощью скрипта и […]

Continue Reading...

DevOps | Linux

Обновление AWS RDS Postgress 10 => 11 с минимальным простоем

Задача: Обновить PostgreSQL в AWS RDS сервисе с версии 10 на версию 11. Задача осложняется размером БД в 4Тб данных. В тестовом окружении мы увидели, что при обновлении сбрасывается вся статистика запросов и они начинают выполняться очень медленно. Решение — запуск ANALYZE, который работает на нашей базе ~ 8 часов. Значит будем реплицировать. 🙂 Требования: […]

Continue Reading...

DevOps | Linux

Перенос БД PostgreSQL 10.1 в AWS RDS PostgreSQL 10.5.

Рассмотрим перенос данных базы «l_generator» с помощью Londiste. Почему Londiste?Рекомандация использовать Londiste от Amazon:https://aws.amazon.com/ru/blogs/aws/rds-postgres-read-replicas/ — 2014 Data Import (Londiste)In order import data using Londiste, you would need to install it on the external PostgreSQL instance (not on RDS), set up RDS PostgreSQL instance as a replica, and enable replication. Londiste would initially do a dump and […]

Continue Reading...

DevOps | Linux

Elasticsearch register snapshot storage in s3

Проблема Необходимо зарегистрировать и подключить S3 хранилище для снапшотов Elasticsearch Решение Процесс регистрации для снимков S3-репозиториев требует роли и подписанного запроса. Чтобы создать подписанный запрос для регистрации конечной точки S3, вы можете использовать python script. Пример ниже. Весь этот процесс описан здесь: http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html Но, чтобы суммировать, вы можете выполнить следующие шаги: 1) Создайте политику IAM и добавьте […]

Continue Reading...

Linux | DevOps

Репликация Postgresql 10 (Hot standby в другом ДЦ)

Итак. На примере Важной Базы данных Postgresql попробую описать процесс поднятия. Исходные данные. На обоих серверах стоит ubuntu 16.04 , а также стоит классический postgresql-10  (10.5 если быть точным). Слейв обязательно видит мастер, мастер может быть за VPN и не видеть слейва. На мастер сервере: В файл /etc/postgresql/postgresql.conf добавляем следующие значения: Далее, в файле /etc/postgresql/pg_hba.conf включаем доступ для внешней […]

Continue Reading...

Linux | DevOps

MySQL очистка binlog

Сегодня позвонил старый знакомый с проблемой, что у него на сервере БД нет места. На сервере стоит Ubuntu 16.04 и старая MariaDB, настроена репликация мастер-слейв (master-slave). Зайдя на сервер, оказалось, что репликация БД отключена (банально выключили слейв — сервер), а мастер усердно складирует логи, т.к. нет ротации. Ну, что , устраним данный косяк. Для начала […]

Continue Reading...

Linux | DevOps

True Blue-green deploy to kubernetes

Проблема При дефолтном роллауте какое-то время одновременно доступны старый и новый деплоймент. Для некоторых приложений это критично, если изменения в коде не обратносовместимые. (к примеру, используется CDN и имена файлов не меняются, а меняются только аргументы обращений к ним: /index.0.js?t=12G33s15c) Такая стратегия обновления называется ramped. Решение Честный blue-green, когда переключение со старой версии софта на новую […]

Continue Reading...