mongoDB - Установка и настройка кластера

Этот пост будет посвящен установке MongoDB, посмотрим на различные варианты в single-instance, replicaset. MongoDB - это документориентированная СУБД, для хранения информации в json-подобных структурах BSON (Binary json). Монга написана на C++, использует mmap и имеет javascript-like язык запросов. Установка mongoDB Процесс установки монги достаточно тривиальный, и не требует продолжительных подготовок. В этом разделе будем ставить сервис на одиночный сервер, под управлением RockyLinux 8.5. Идем на сайт монги, копируем конфиг репозитория. Подключаемся на сервер, создаем новый репозиторий.: ...

January 31, 2023 · 6 min · 1261 words · Tony

Netbox - установка сервера

В этой заметке будет описан гайд по установке netbox сервер, который будет использоваться в качестве некой CMDB для учета адресного пространства или места в серверных стойках. У проекта очень хорошо прописана документация, и этот ман можно позиционировать просто как пошаговую инструкцию. (Схема стека) Как видно из схема, предварительно нам нужно заинсталить и подготовить дополнительные компоненты: Postgresql, 11 версия и выше Redis, 4 версия и выше Python - 3.8 WSGI обработчик и Nginx в качестве обратной прокси Установка Postgresql Как всегда начинаем с самого низкого слоя стека, установки и инициализации базы. В нашем кейсе, будем ставить postgresql версии 14. ...

January 25, 2023 · 7 min · 1431 words · Tony
ad-gpo-wall

Active Directory (GPO) - раскатываем Kaspersky NetAgent

В этом мануале будет продемонстрировано, как мы можем ставить агентов Kaspersky Network Agent на сервара, которые управляются под Active Directory. Итак, сначала нужно разместить .msi файл агента на какой нибудь шаре. С этой шары будет запускаться инстралятор, соотвественно у всех клиентов должен быть доступ к этой шаре. Логичнее будет разместить инсталятор на серваке с касперским, так и поступим. На установочный файл даем права для всех (или для доменных пользователей) на чтение/запуск файлов. ...

January 22, 2023 · 2 min · 418 words · Tony
k8s-ingress-welcom.png

K8s - Ingress, Ingress controller

Ingress В прошлой заметке разбирались и запускали сервисы. Как отмечалось, объект сервис на практике применим только для работы внутри кластера. Но также нам нечего не мешает опубликовать наше приложения используя тип сервиса - NodePort. Эта схема будет работать и считается самой простой, но за ней могут стоять большие проблемы. Во первых каждый такой сервис публикует свой порт наружу. В случаи, если у нас какой то публичный кластер не в закрытом сетевом контуре это проблема. Во вторых у нас может быть кучу таких сервисов, каждый из которых имеет свой порт. Мы просто устанем все это инвенторизировать. ...

December 27, 2022 · 5 min · 1005 words · Tony

Vuejs - на shared хостинге

В этой заметке хотел показать как можно реализовать метод деплоя vue.js - проекта на обычный shared-хостинг. Сама схема достаточно примитивная, и работает в полуавтоматическом режиме. С кодом работаем и храним через гитлаб. Редактируем и собираем проект непосредственно на своем ноуте, собираем в виртуальном окружении. Билд заливаем с виртуалки на shared хостинг по ftp (большинство хостингов позволяют это сделать). (Схема реализации) Virtualbox, vagrant В этом проекте, я буду использовать vagrant в связке с virtualbox, чтобы быстро готовить рабочее виртуальное окружение. ...

December 25, 2022 · 5 min · 895 words · Tony

Zabbix - мониторинг памяти на AIX

В процессе добавления на мониторинг aix серверов в zabbix, заметил что в стандартном шаблоне нету метрик собирающих данные по памяти. Сервера мониторятся через агентов, поправить это будет не сложно. Для начала напишем скриптец, который дергает нужные данные, и добавим скрипт на выполнение заббикс-агенту. Сам сниппет: #!/bin/bash totalmem=`lsattr -El sys0 -a realmem | awk {'print $2'}` usedmem=`svmon -G -O unit=KB | head -4 | tail -1 | awk {'print $3'}` freemem=`expr $totalmem - $usedmem` case $1 in "--free") echo "$freemem" ;; "--used") echo "$usedmem" ;; "--total") echo "$totalmem" ;; *) echo "Flags:" echo " --free - Free mem" echo " --used - Used mem" echo " --total - Total mem" esac В переменную totalmem, записывается результат выполнения команды (lsattr). Команда lsattr отобразит все атрибуты определенного объекта или устройства системы, в нашем случаи мы дергаем все аттрибуты устройства sys0, ключ -a отобразит определенный аттрибут, мы берем значение аттрибута - realmem. В переменную usedmem, также указывается результат выполнение команды svmon. Команда svmon, отобразит информацию о текущем состоянии памяти. В значение переменной freemem, вычесляется из переменных $totalmem и $usedmem. (Кстати говоря, эту метрику можно сделать средствами заббикса) Далее идет условный оператор case, в котором перечисляются ключи. В зависимости от ключа, будет пролистено значение одной из трех переменных. Сам скрипт можно разместить в домашнем каталоге пользователя - zabbix, обычно это - /var/lib/zabbix или /home/zabbix: ...

December 19, 2022 · 3 min · 591 words · Tony
k8s-svc-endpoint-pic

K8s - Service, Endpoints

Ранее для доступа к нашему поду, мы через утилиту kubectl реализовывали проброс портов во внутрь пода. Эта история хоть и работает, но вообще не годиться для ежедневной эксплуатации. Так как состояние пода эфемерно, то есть под может сломаться или перезапуститься, изчезнуть или появиться на другой ноде. Соответствено, kubernetes назначает поду новый ip, и клиенты нашего приложения даже не догадываются об изменениях. В дополнение у нашего приложения может быть несколько его реплик. ...

December 15, 2022 · 5 min · 892 words · Tony
k8s-configmaps-schemes

K8s - ConfigMap, Secrets

ConfigMap В kubernetes есть объект ConfigMap, который хранит конфигурации для других объектов куба. ConfigMap может быть использован в случаях, когда мы хотим: Во внутрь контейнера прокинуть файл с конфигурацией для нашего приложения, через read-only volume; Добавить переменные окружения во внутрь контейнера; Передать в контейнер агрументы командной строки. Мы можем хранить любую информацию в манифесте конфигмапы (кроме паролей и etc..), в кластере создаем новый configmap-объект и описываем его конфигурацию, в поле data. Далее включаем объект в деплоймент, поле template: -> containers:. При запуске пода, кубернетес примонтирует конфигмап как volume. ...

December 8, 2022 · 9 min · 1794 words · Tony
rsyslog wall

Rsyslog basics

Rsyslog - это механизм/система обработки потоковых сообщений. Тогда, сообщения журнала (логи) можно представить как поток событий. Программы, которые известны syslog, заносят свои логи в специальный файл /dev/log (сокет домена). Далее журнальные сообщения (лог-события) обрабатываются фильтрами и пересылаются по адресу назначения. В Rsyslog каждый из этих этапов может быть сконфигурирован и дополнен модулям. Настройки службы rsyslog хранятся в файле - /etc/rsyslog.conf. Конфигурация rsyslog Строки конфигурации системы rsyslog обрабатываются по умолчанию сверху вниз, порядок расположения директив имеет значение. В верхней части описываются глобальные настройки, которые применяются на сам rsyslog демон. В глобальных настроках указываются - загружаемые модули (Modules), формат сообщений, права собствености и разрешения на файлы, рабочий каталог. Фильтры (селекторы) составляют основную часть конфигурации, ими rsyslogd определяет как сортировать и обрабатывать сообщения. Фильтры формируются из выражений, в которых описаны критерии и действия. Давайте разберем каждый из разделов, что бы понимать как готовить rsyslog. ...

December 5, 2022 · 7 min · 1478 words · Tony
k8s-probes-resources

K8s - Probes, Resources

В этом посте хотелось бы поделиться заметками относительно использования Probe в кубернетес. И предоставить понимание того, на чем строиться ресурс менеджмент - реквесты и лимиты, QoS-классы. Probes В kubernetes реализован механизм проверки доступности нашего приложения. Существую 3 типа проверок: Liveness Probe - выполняет контроль за состоянием приложения в процессе его жизни. Liveness проверки выполняются постоянно. В случаи, если выполнение liveness пробы завершилось с результатом - failed, то kubernetes перезапустил приложение (под). Readiness Probe - выполняют проверки за состоянием контейнеров, для того что бы понять готов ли под принимать клиентский трафик. В случаи неудачного выполнения readiness проды, приложение убирается из балансировки. Так же как и с liveness, readiness пробы выполняются постоянно, с некой переодичностью. Startup Probe - с помошью startup пробы мы можем проверить, что наше приложение действительно проинициализировалось и готово принимать принимать запросы. Startup проба выполняется только до последнего успешного выполнения, после чего разблокирует выполнение других проб (liveness и readiness). Такой механизм может быть полезен, когда наш контейнер долго запускается, и чтобы избежать преждевременного убийства контейнера другими пробами они блокируются. Теперь напишем деплоймент, и будем разбираться с настройками проб. apiVersion: apps/v1 kind: Deployment metadata: name: deployment-with-probes spec: replicas: 2 selector: matchLabels: app: my-app strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: app: my-app spec: containers: - image: nginx:1.12 name: nginx-web ports: - containerPort: 80 readinessProbe: failureThreshold: 3 httpGet: path: / port: 80 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 livenessProbe: failureThreshold: 3 httpGet: path: / port: 80 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 initialDelaySeconds: 10 startupProbe: httpGet: path: / port: 80 failureThreshold: 30 periodSeconds: 10 Пробы указываются в контексте - containers. И могу быть сконфигурированы полями: ...

December 3, 2022 · 5 min · 981 words · Tony