LINUX.ORG.RU

Сообщения Goganchic

 

Зависает Redis Sentinel, куда копать?

Форум — Admin

Внезапно обнаружил, что на виртуалке с Rocky 8 завис Redis Sentinel (ставил пакет @redis:6). Выглядит это так:

$ ps ax | grep redis-sentinel
   1209 ?        Dsl   14:09 /usr/bin/redis-sentinel 192.168.1.2:26379 [sentinel]

Статус D — Uninterruptible sleep (usually IO).

Решил посмотреть с помощью lsof что происходит. Теперь у меня есть еще несколько процессов lsof в состоянии D:

sudo ps ax | grep lsof
  51819 ?        D      0:00 lsof
  51820 ?        Z      0:00 [lsof] <defunct>
  51864 ?        D      0:00 lsof
  51865 ?        Z      0:00 [lsof] <defunct>
  51957 ?        D      0:00 lsof -b
  52971 ?        D      0:00 lsof
  52972 ?        Z      0:00 [lsof] <defunct>

Вопрос: как понять на каком именно IO подвис Redis Sentinel и что бы это могло быть?

 ,

Goganchic
()

Почему journalctl потребляет так много места

Форум — Admin

Хочу посмотреть сколько места занимает Systemd лог:

$ sudo journalctl --disk-usage
Archived and active journals take up 9.7G in the file system.

Дамплю все логи в файл и смотрю его размер:

sudo journalctl > logs.txt
ls -lh logs.txt
-rw-rw-r--. 1 user user 679M Dec  4 16:34 logs.txt

Почему так?

 ,

Goganchic
()

В чем фишка Qt Quick

Форум — Development

Изучаю Qt. Вижу, что есть два подхода к разработке приложения: Qt Widgets и Qt Quick. Судя по всему за Qt Quick активно топят. На официальной странице нашел сравнение этих технологий. И вроде как пишут, что Qt Quick для стильных модных молодежных, а Qt Widgets если не Deprecated, то для старперов. На всяких Reddit-ах тоже активно нахваливают QML.

Интуитивно кажется, что Quick потянет за собой либо какой-то встроенный интерпретатор JavaScript, либо какой-то хитрый компилятор, но в любом случае добавит накладные расходы на взаимодействие между JavaScript и C++ кодом. Кажется, что это будет работать медленнее, чем если всё написано сразу на C++.

С другой стороны, если хочется быстрой разработки, чтобы раз-два и в продакшен - это же точно не про C++. Для этого есть Electron или Web в браузере. C++ для GUI, на мой взгляд, имеет смысл выбирать только если хочется максимальной производительности и минимального расхода ресурсов, а сроки разработки не особо важны.

Вижу что Qt пытается запрыгнуть в мобильную разработку, но это тоже как-то странно, когда есть нативные библиотеки, дающие максимальную производительность или Flutter, дающий кроссплатформу.

Поэтому возникает вопрос: какой практический смысл в Qt Quick?

 , ,

Goganchic
()

HAProxy балансировка PostgreSQL не работает external-check

Форум — Admin

Хочу настроить High Available кластер PostgreSQL. Использую repmgr и логическую репликацию. Перед кластером ставлю HAProxy, чтобы клиент цеплялся всегда к одному адресу, а дальше его уже перебрасывало на текущий Master. Использую такой скрипт для определения кто сейчас Master:

#!/bin/bash

PG_MONITOR_USER=haproxy
PG_MONITOR_PASS=qwerty123
PG_MONITOR_DB=haproxy

PG_PSQL=/usr/bin/psql

VIP=$1
VPT=$2
RIP=$3

echo "We are here" >> /tmp/logs.txt

if [ "$4" == "" ]; then
  RPT=$VPT
else
  RPT=$4
fi

STATUS=$(PGPASSWORD="$PG_MONITOR_PASS" $PG_PSQL -qtAX -c "select pg_is_in_recovery()" -h "$RIP" -p "$RPT" --dbname="$PG_MONITOR_DB" --username="$PG_MONITOR_USER")

if [ "$STATUS" == "f" ]; then
  # Master
  exit 0
else
  exit 1
fi

Пользователя в базе создал, при запуске скрипта вручную всё работает.

HAProxy сконфигурировал следующим образом:

global
    log         /var/lib/haproxy/dev/log local0

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM
    external-check

defaults
    log                     global
    option                  dontlognull
    retries                 3
    timeout queue           1m
    timeout connect         10s
    timeout check           10s
    timeout client          5000s
    timeout server          5000s
    maxconn                 3000

frontend pg_frontend
        log global
        mode tcp
        bind *:5432
        default_backend pg_backend

backend pg_backend
        log global
        mode tcp
        option tcplog
        option external-check
        external-check command /tmp/check_postgresql_master.sh
        server pg1 192.168.56.2:5432 check inter 30s fall 3 rise 3
        server pg2 192.168.56.3:5432 backup check inter 30s fall 3 rise 3

Если попытаться подключиться на адрес HAProxy, то сервер сразу закрывает соединение и ничего не пишет в логи. Если закомментировать external-check, то все работает.

Почему такое может быть? Дистрибутив Rocky 8, PostgreSQL 14, HAProxy из репозиториев. SELinux отключал - не помогло.

 ,

Goganchic
()

Зачем нужен метод roleNames в Qt

Форум — Development

Изучаю Qt по книге Mastering Qt 5 за авторством Guillaume Lazar. Дошел до третьей главы. Автор предлагает реализовать класс AlbumModel для отображения списка альбомов с помощью QListView. Для этого необходимо реализовать два метода rowsCount и data. С помощью этих методов QListView может получить общее количество строк в списке и для каждой строки получить данные для отображения на экране. Абстракция понятна и логична, но возникает вопрос: зачем в модели нужен метод QHash<int, QByteArray> roleNames() const override? Для отображения данных метод судя по всему не используется. Возможно он нужен для какой-то интроспеции, но какой? В документации Qt есть короткий комментарий, который не добавляет ясности:

Returns the model’s role names.

 ,

Goganchic
()

Как правильно устанавливать Qt и QtCreator в Linux?

Форум — Development

Долгое время разрабатывал на JavaScript. Несмотря на то, что во многих дистрибутивах Linux есть какие-то версии Node.JS в репозиториях, обычно разработчики ставят инструменты через специализированные утилиты, типа asdf. Это позволяет установить именно ту версию, что будет в продакшене, а также установить одновременно несколько версий, чтобы иметь возможность использовать разные версии в разных проектах.

Недавно начал посматривать на C++ и Qt. Подскажите, как правильно устанавливать Qt и QtCreator в Linux (Ubuntu 22.04)? Достаточно ли сделать что-то вроде sudo apt install -y qtcreator qtbase5-dev qt5-qmake cmake или есть какой-то более правильный способ?

 ,

Goganchic
()

Почему Redis ест память

Форум — Admin

Есть Redis 6 (Oracle Linux 8). В нем 1.5Гб данных (проверил по размеру дампа и с помощью суммирования значений serializedlength в DEBUG OBJECT по каждому ключу в каждой базе). При этом в памяти он занимает 15Гб. maxmemory и maxmemory-policy в конфиге не указаны. Почему такое может быть и как с этим бороться?

 

Goganchic
()

btrfs на десктопе

Форум — Desktop

Кто пользуется btrfs на десктопе? Подскажите, насколько оно стабильно?

 

Goganchic
()

Что случилось с Amarok?

Форум — Desktop

На днях смотрел какая ситуация с аудиоплеерами в Linux и внезапно обнаружил, что куда-то пропал Amarok: в свежих версиях Ubuntu его нет, на сайте проекта последний релиз датируется 2021 годом. Вроде одно время был самый популярный плеер в KDE. Что с ним стало?

 ,

Goganchic
()

Docker Registry health check

Форум — Admin

Разбираюсь с настройками self-hosted Docker registry. Вижу, что есть опция health для периодических проверок различных подсистем. Результат проверок можно получить по пути /debug/health.

Вопрос: есть ли какой-то смысл во включении этих проверок, если внешнего мониторинга на путь /debug/health нет? Быть может в случае обнаружения проблем Registry как-то пытается их исправить или переходит в какой-нибудь read-only режим, чтобы уменьшить возможные последствия? Или же health check имеет смысл использовать только с внешним мониторингом?

 ,

Goganchic
()

Linux и доменные машины

Форум — General

Часто сталкиваюсь с Linux-доменом, реализованным с помощью OpenLDAP или FreeIPA из некоторого количества Linux-серверов. Это позволяет централизовано создать пользователей и политики доступа. Сервера чаще всего статичны, т.е. имеют фиксированное место в корпоративной сети, а есть ли у кого-то опыт объединения набора пользовательских машин в единый домен, как это делают в коропрациях с Windows-машинами? В отличие от серверов пользовательские машины могут быть мобильны (например, ноутбук, который может забрать домой) и периодически могут не иметь подключения к контроллеру домена. Как в этом случае осуществляется логин на машину?

В общем, тема достаточно обширная. Был ли у кого-нибудь опыт реализации такого? Какие статьи почитать? На какой софт обратить внимание?

 , ,

Goganchic
()

Настройка внешнего Docker Registry в GitLab

Форум — Admin

Пытаюсь разобраться как настроить внешнее Docker Registry в GitLab. Судя по докам Docker Registry можно использовать GitLab как Auth-провайдер. Для этого нужно сгенерировать закрытый ключ и сертификат. При этом GitLab будет подписывать закрытым ключом токены, а Docker Registry с помощью сертификата сможет проверить, что токен действительно сгенерирован GitLab-ом. В доке GitLab-а пишут про пару ключ-сертификат как данное:

A certificate-key pair is required for GitLab and the external container registry to communicate securely. You need to create a certificate-key pair, configuring the external container registry with the public certificate (rootcertbundle) and configuring GitLab with the private key.

При этом не говорят как именно эту пару сгенерировать.

У меня уже есть настроенный предыдущим админом GitLab, в котором уже сгенерированы приватный ключ и сертификат, но я нигде не могу найти ответы на следующие вопросы:

  • как сгенерировать ключ и сертификат?
  • как посмотреть какую-нибудь инфу про ключ и сертификат (возможно с помощью openssl, все мои наивные команды типа openssl x509 -text -noout -in /etc/gitlab/registry-auth.key говорят, что я что-то делаю не так)?
  • как проверить, что сертификат действительно от этого ключа? быть может можно как-то сгенерировать новый сертификат по ключу?
  • есть ли у сертификата и ключа какой-то срок действия? нужно ли мне будет через какое-то время перегенерировать пару заново?

Буду признателен за наводки и полезные ссылки.

 ,

Goganchic
()

Стоит ли ставить Lingeage OS

Форум — Mobile

Недавно узнал о существовании Lineage OS — открытом дистрибутиве Android без Google-сервисов. В интернетах пишут, что Lineage OS дает возможность пользоваться более новой версией Android на телефонах, которым вендор не выпускает обновлений, а также предоставляет ванильную версию системы, без всяких рекламных приложений, которые нельзя удалить (привет Xiaomi). Вот думаю, ставить ли ее на свой 3-летний Xiaomi или нет? Какие могут быть подводные камни кроме отсутствия Google-сервисов? Что там с безопасностью? Не получится ли так, что теперь вместо Google мои данные сливаются какому-нибудь васяну?

Перемещено hobbit из general

 ,

Goganchic
()

HiDPI на 14" экране

Форум — Desktop

По моим ощущениям, в большинстве сред рабочего стола Linux нормально работает только целочисленное масштабирование. Если указать дробное (например, 125%), то возникают разного рода проблемы и артефакты. Устал от этой проблемы на 14" 1080p. Решил, что надо поменять ноут на что-нибудь с экраном, на котором можно задать целочисленный масштаб. Вижу, что на 14" наиболее распространены разрешения 2560х1600 и 2880х1800. Как считаете, какое разрешение лучше подойдет для 200% масштаба? Сейчас на 1080p ставлю 125% масштаб и размер шрифтов и элементов управления устраивает. Давным давно сидел на 13.3" Macbook Pro с 1280х800 и такое разрешение казалось нормальным для данной диагонали. Значит ли это, что надо брать 2560х1600? Или же 2880х1800 для 14" подойдет получше? Или это все очень субъективно и надо самому пробовать и то и то и уже после этого делать какие-то выводы?

 ,

Goganchic
()

Rocky Linux и EAR

Форум — General

Сегодня я зашел на страницу загрузки образов Rocky Linux и увидел там следующее:

By downloading Rocky software, you acknowledge that you understand all of the following:

Rocky software and technical information may be subject to the U.S. Export Administration Regulations (the “EAR”) and other U.S. and foreign laws and may not be exported, re-exported or transferred (a) to a prohibited destination country under the EAR or U.S. sanctions regulations (currently Cuba, Iran, North Korea, Syria, and the Crimea Region of Ukraine, subject to change as posted by the United States government); (b) to any prohibited destination or to any end user who has been prohibited from participating in U.S. export transactions by any federal agency of the U.S. government; or (c) for use in connection with the design, development or production of nuclear, chemical or biological weapons, or rocket systems, space launch vehicles, or sounding rockets, or unmanned air vehicle systems.

Зашел на страницу Legal Notice AlmaLinux и обнаружил там +/- такое же с одной интересной припиской:

AlmaLinux OS software in source code and binary code form are publicly available and are not subject to the EAR in accordance with §742.15(b).

На странице Export Compliance Information дистрибутива Fedora такая же приписка как и для AlmaLinux.

Насколько вообще EAR применим к Open Source?

Пытаюсь понять как это все работает. Есть Rocky, про который на странице лицензирования указано, что он распространяется по BSD 3-Clause license, то есть его можно распространять свободно, при этом согласно EAR никто не запрещает использовать его в Китае, а Китай сам решает чьи законы он соблюдает, а чьи нет. Таким образом какой-нибудь предприимчивый бизнесмен из Китая может сделать зеркало Rocky и предоставлять его для той же Кубы.

Так это работает или нет?

 , ear, ,

Goganchic
()

Лучшие практики по настройки почтового сервера для компании

Форум — Admin

Хочу настроить self-hosted почтовый сервер (IMAP/POP3 + SMTP) для компании на 100 - 200 пользователей. Что сейчас для этого модно использовать? Как и раньше postfix + dovecot + roundcube или имеет смысл посмотреть что-то типа iRedMail?

 , ,

Goganchic
()

Коммутация аудио для занятий на гитаре

Форум — Desktop

Хочу настроить коммутацию аудио для занятий на гитаре с преподом по Skype/Zoom. Хочу чтобы препод слышал:

  • звук с микрофона, подключенного к Scarlett 2i2 gen 3
  • обработанный звук гитары с Yamaha THR
  • звук из браузера (метроном, минусовка)

Хочется чтобы весь этот звук был синхронизированный: не хочу, чтобы мне говорили что я играю мимо метронома, хотя фактически это не так.

Возможна ли такая коммутация? Пока думаю пойти по такому пути: локально установить Jack или Pipewire, создать там виртуальное устройство, в которое запихнуть несколько источников звука, а у Skype/Zoom указать источником это самое устройство. В обратную сторону взять звук из Zoom и браузера и отправить их в Yamaha THR, который подмешает туда обработанную гитару.

Может быть кто-то заморачивался с такими коммутациями? Или даже пытаться не стоит, ибо адская задержка убьет весь пользовательский опыт?

 , , ,

Goganchic
()

Изменение шела в Kubuntu на zsh

Форум — Desktop

Пытаюсь изменить дефолтный шел в Kubuntu с bash на zsh. После выполнения chsh и перезагрузки пропадает часть иконок, и вообще ноут ведет себя странно. Как только возвращаю шел на bash — все возвращается в норму. Как правильно изменить дефолтный шел в Kubuntu так чтобы все работало нормально?

P.s. если сменить терминал в konsole, то это дает частичный эффект: в том же самом mc используется bash, что не очень удобно.

 ,

Goganchic
()

Ansible синхронизация директорий

Форум — General

Есть директория с конфигами. Хочу скопировать ее на сервер и если какие-то файлы поменялись — рестартнуть сервис, конфиги которого я копирую. По наивности делал так:

- name: Copy configs
  copy:
    src: configs
    dest: /etc
  register: configs
- name: Restart service
  systemd:
    name: my-service
    state: restarted
  when: configs.changed

Проблема в том, что если я удаляю какие-то файлы с конфигами, то они не удаляются на удаленном сервере. Как сделать так, чтобы удалялись?

Читал про модуль synchronize. Вроде похоже на правду, но какой-то он, мягко говоря, странный, судя по доке.

По идее, я могу безусловно удалять директорию с конфигами на сервере, а потом подкладывать на ее место локальную, но тогда я потеряю событие changed. Хотя и это можно обойти какой-нибудь предварительной проверкой отличий директорий или копированием локальной директории куда-то в /tmp на сервере и потом ручным запуском rsync, но быть может есть какой-то более проостой способ решения этой проблемы?

 

Goganchic
()

ansible: странности при установке пакета через dnf

Форум — Admin

Настраиваю виртуалки. Есть простая ansible-задачка для установки пакета FreeIPA клиента:

- name: Install package
  dnf:
    name:
      - freeipa-client

В документации Ansible написано, что для модуля dnf, если не задано значение параметра state, то выполнится действие такое, как-будто было бы передано значение present. Ожидаю, что поведение будет следующее: если пакета на машине нет, то он установится, если есть — то ничего не произойдет. Сегодня заметил, что для одной из машин задача выдала состояние changed, хотя я был на 100% уверен что FreeIPA там уже есть.

Посмотрел по логам dnf и увидел следующее:

2022-11-15T11:17:40+0300 DDEBUG timer: sack setup: 2441 ms
2022-11-15T11:17:40+0300 INFO Package ipa-client-4.9.8-6.0.1.module+el8.6.0+20571+0c339766.x86_64 is already installed.
2022-11-15T11:17:40+0300 DDEBUG timer: depsolve: 206 ms
2022-11-15T11:17:42+0300 DEBUG Using rpmkeys executable at /usr/bin/rpmkeys to verify signatures
2022-11-15T11:17:43+0300 INFO Running transaction check
2022-11-15T11:17:43+0300 INFO Transaction check succeeded.
2022-11-15T11:17:43+0300 INFO Running transaction test
2022-11-15T11:17:43+0300 INFO Transaction test succeeded.
2022-11-15T11:17:43+0300 DDEBUG timer: transaction test: 393 ms
2022-11-15T11:17:43+0300 INFO Running transaction
2022-11-15T11:17:44+0300 DDEBUG RPM transaction start.
2022-11-15T11:17:52+0300 DDEBUG RPM transaction over.
2022-11-15T11:17:52+0300 DDEBUG timer: verify transaction: 376 ms
2022-11-15T11:17:52+0300 DDEBUG timer: transaction: 8660 ms
2022-11-15T11:17:52+0300 DEBUG Completion plugin: Generating completion cache...
2022-11-15T11:17:53+0300 DEBUG Upgraded: authselect-1.2.5-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: authselect-compat-1.2.5-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: authselect-libs-1.2.5-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: ipa-client-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: ipa-client-common-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: ipa-common-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: libipa_hbac-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libldb-2.5.2-2.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsmbclient-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_certmap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_idmap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_nss_idmap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_simpleifp-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libtdb-1.4.6-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libwbclient-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-ipaclient-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-ipalib-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-libipa_hbac-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-sss-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-sssdconfig-2.7.3-4.0.1.el8.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: samba-client-libs-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: samba-common-4.16.4-2.0.1.el8.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: samba-common-libs-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-ad-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-client-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-common-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-common-pac-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-dbus-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-ipa-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-kcm-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-krb5-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-krb5-common-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-ldap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-proxy-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-tools-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Installed: sssd-idp-2.7.3-4.0.1.el8.x86_64

То есть сначала dnf говорит, что требуемый пакет уже установлен, а потом начинает его обновлять. Это точно нормальное поведение? Если нет, то что я делаю не так? Если да, то чем state: present отличается от state: latest и можно ли как-то сделать так, чтобы если пакет уже установлен, то ничего не происходило?

ОС: Oracle Linux 8, ansible-core 2.13.4

 , ,

Goganchic
()

RSS подписка на новые темы