Поддержи проект

Скачать

  • Ошибка реорганизация индексов базы данных MS SQL «Невозможно реорганизовать индекс» на базах 1С Предприятие.

    После обновления платформы 8.3.20.1674, обратил внимание что не выполняется реиндексация баз данных относящихся к 1С, в логах значится ошибка — «Невозможно реорганизовать индекс «_Acc48_1» в таблице «_Acc48″, поскольку отключена блокировка на уровне страницы.»

     

    Как оказалось что начиная с версии платформы 8.3.22 необходимо выполнять дефрагментацию индексов по следующему алгоритму:

    • До дефрагментации индекса необходимо включить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON);
    • Выполнить дефрагментацию.
    • Обратно выключить страничные блокировки. Пример команды: ALTER INDEX index_name ON table_name SET (ALLOW_PAGE_LOCKS = OFF, ALLOW_ROW_LOCKS = ON);

     

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

     

    Скрипт работает по следующему принципу:

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

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Установка DRBD9 из исходников на Debian 11 Bullseye

    DRBD (Distributed Replicated Block Device — распределённое реплицируемое блочное устройство) — это блочное устройство, предназначенное для построения отказоустойчивых кластерных систем на операционной системе Linux. DRBD занимается полным отражением (mirroring) по сети всех операций с блочным устройством. 

    Решил разобрать как собрать из исходников пакет DRBD на Debian 11 Bullseye.

    В рамках рассматриваемой статьи будет рассмотрено как собрать и установить последние версии на момент написания статьи пакетов DRBD 9.2.9 + DRBD-Utils 9.28.0, так же необходимо собрать и установить Python с ключом --enable-shared, в противном случае компиляция модуля DRBD завершится ошибкой.

     

    Установка Python

    # Устанавливаем необходимые пакеты зависимостей.

    apt-get install g++ gcc make libffi-dev libnss3-dev libssl-dev zlib1g-dev -y

    # Скачиваем исходников Python и распаковываем их.

    wget https://www.python.org/ftp/python/3.9.19/Python-3.9.19.tar.xz
    tar -Jxf Python-3.9.19.tar.xz
    cd Python-3.9.19
    ИНФОРМАЦИЯ. Официальный сайт источник — https://www.python.org/downloads/source

     

    # Собираем и устанавливаем.

    ./configure --prefix=/usr --enable-optimizations --enable-shared
    make && make altinstall
    cd ..

     

    Установка DRBD

    # Устанавливаем необходимые пакеты зависимостей.

    apt-get install g++ gcc make linux-headers-$(uname -r) git flex xsltproc coccinelle libkeyutils-dev -y

    # Скачиваем последние версии исходников DRBD (9.2.9), DRBD-Utils (9.28.0) и распаковываем их.

    wget https://pkg.linbit.com//downloads/drbd/9/drbd-9.2.9.tar.gz
    wget https://pkg.linbit.com//downloads/drbd/utils/drbd-utils-9.28.0.tar.gz
    
    tar -zxvf drbd-9.2.9.tar.gz
    tar -zxvf drbd-utils-9.28.0.tar.gz
    ИНФОРМАЦИЯ. Официальный сайт с дистрибутивами — https://pkg.linbit.com//downloads/drbd

    Либо последние версии исходников можно склонировать с git репозитория:

    git clone --recursive https://github.com/LINBIT/drbd.git
    git clone --recursive https://github.com/LINBIT/drbd-utils.git

    # Компилируем и устанавливаем DRBD.

    cd drbd-9.2.9
    make
    make install
    cd ..

    # Загружаем модуль DRBD в ядро.

    modprobe drbd
    

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Автоматическое создание подписи в Microsoft Outlook 2016/Office 365

    Поступило задание проработать возможность централизованного создания пользовательских подписей в Outlook на основе данных из их учетных записей в Active Directory и так же запрета пользователям задавать свои подписи.

     

    В сети есть много разных примеров скриптов как это можно реализовать, различной степени годности, но мне привычней реализовать задачу так как в первую очередь удобней мне. Поэтому я решил написать утилиту с использованием WinAPI Windows для формирования подписи на основе шаблона и с возможностью удобной модификацией шаблонов и используемых пользовательских данных из AD.

     

    В состав утилиты входят:

    • Шаблоны подписы из 3х файлов в форматах htm (HTML), rtf (Rich Text) и txt (Plain Text).
    • Файл настроек settings.txt, в котором прописаны ключи и значения для шаблонов.
    • Сама утилита outlook_signature.exe.

     

    В файлах шаблона указываются переменных которые будут заменены на полученные данные из пользовательской учетной записи AD. Переменные по умолчанию указываются в значении заключенном в знаки % — %USERNAME%.

     

    Пример как должен выглядить шаблон:

    Regards,
    %USERNAME%
    
    %POSITION%
    %DEPARTMENT%
    ИНФОРМАЦИЯ. Шаблоны должны называться обязательно signature с файлами расширения txt, rtf, htm.

     

    В файле настроек settings.txt указываются ключи и переменные к ним, под ключами понимается указание названия аттрибутуов из учетной записи AD. Переменные к ключам задаются произвольные, главное чтобы они были четко отличимы от обычных слова, к примеру можно указывать как %USERNAME%, так и @USERNAME. Главное что какие переменные мы указали в файле настроек, такие же мы и должны использовать в файлах шаблонов, для замены их на значения ключей в ходе работы утилиты.

     

    Пример как должен выглядить файл settings.txt:

    displayName=%USERNAME%
    Title=%POSITION%
    Department=%DEPARTMENT%
    mail=%EMAIL%
    streetAddress=%ADDRESS%
    telephoneNumber=%TEL%

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (11 голос(ов), в среднем: 2,55 из 5)
    Загрузка...
  • Установить Syncthing в Debian 11 Bullseye

    Разберем как поднять Syncthing на Debian 11 Bullseye.

     

    Все действия ниже будут выполняться от root.

     

    # Установка Syncthing

    curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
    echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
    apt-get update
    
    apt-get install syncthing -y
    

     

    # Создаем пользователя syncthing от которого будет работать система.

    useradd -r -m -U -s /usr/sbin/nologin -c "Syncthing User" syncthing

     

    # Создаем сервис запуска для — Syncthing.

    cat << EOF > /etc/systemd/system/syncthing@syncthing.service
    [Unit]
    Description=Syncthing - Open Source Continuous File Synchronization for %I
    Documentation=man:syncthing(1)
    After=network.target
    StartLimitIntervalSec=60
    StartLimitBurst=4
    
    [Service]
    User=%i
    ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
    Restart=on-failure
    RestartSec=1
    SuccessExitStatus=3 4
    RestartForceExitStatus=3 4
    
    # Hardening
    ProtectSystem=full
    PrivateTmp=true
    SystemCallArchitectures=native
    MemoryDenyWriteExecute=true
    NoNewPrivileges=true
    
    # Elevated permissions to sync ownership (disabled by default),
    # see https://docs.syncthing.net/advanced/folder-sync-ownership
    AmbientCapabilities=CAP_CHOWN CAP_FOWNER
    
    [Install]
    WantedBy=multi-user.target
    
    EOF
    ИНФОРМАЦИЯ. Хочу обратить внимание на подсвеченную строку, она нужна для того чтобы служба syncthing могла также синхронизировать права собственности между устройствами.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (5 голос(ов), в среднем: 2,00 из 5)
    Загрузка...
  • Установка FreeRADIUS & daloRADIUS на Debian 11 Bullseye

    Разберем как установить FreeRADIUS и daloRADIUS на Debian 11 и как настроить его для использования MySQL / MariaDB.

     

    В рамках данной статьи будет разобрано лишь только установка и настройка FreeRADIUS и daloRADIUS, вариации конфигурации использования freeRADUIS с оборудованием или системами будет рассматриваться в других статьях.

     

    # Все ниже описанные действия будут производиться от root.

     

    Настройка MySQL

    # Устанавливаем MySQL сервер.

    apt-get install mariadb-server -y

     

    # Выполняем базовую настройку безопасности MySQL сервера и входим на сервер.

    mysql_secure_installation
    
    mariadb

     

    # Создаем базу данных для FreeRADIUS.

    CREATE DATABASE radius;
    CREATE USER 'radius'@'localhost' IDENTIFIED BY 'radius';
    GRANT SELECT ON radius.* TO 'radius'@'localhost';
    FLUSH PRIVILEGES;
    

     

     

    Установка FreeRADIUS

    # Устанавливаем FreeRADIUS с дополнительными модулями mysql, ldap:

    sudo apt-get install freeradius freeradius-utils freeradius-mysql freeradius-ldap -y

     

    # Импортируем схему RADIUS MySQL:

    mariadb radius < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql
    

     

    Проверим что таблицы в базе данных (radius), были созданы:

    mariadb -e "use radius;show tables;"
    
    +------------------+
    | Tables_in_radius |
    +------------------+
    | nas              |
    | radacct          |
    | radcheck         |
    | radgroupcheck    |
    | radgroupreply    |
    | radpostauth      |
    | radreply         |
    | radusergroup     |
    +------------------+

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (2 голос(ов), в среднем: 3,50 из 5)
    Загрузка...
  • MSSQL cоздание оповещения для Availability Groups и не только.

    Опишу как настроить алерты на возникающие различные события в MSSQL, дабы быть вовремя информированным о возникшей той или иной проблеме.

     

    На примере покажу как настроить оповещения на почту при событиях Always On Availability Groups по проблеме синхронизации баз даных между нодами кластера.

     

     

    Сперва нужно понимать какой message_id интересующего нас оповещения для которого мы хотим настроить уведомление. Для этого можно запросить базу данных в таблице sys.messages и посмотреть, что доступно.

     

    Ниже я выполнил запрос для нахождения оповещений содержащих слова — %Always On Availability Groups data movement for database%.

    select * from sys.messages
    where text like '%Always On Availability Groups data movement for database%'

    Результат:

     

     

    Видим что есть интересующие нас оповещения (при приостановке синхронизации базы данных и ее воссновления) — 35264 (приостановка), 35265 (восстановление).

     

    Настроим уведомление на почту по этим событиям. Заходим в SSMS, щелкните правой кнопкой мыши на Alerts и выберите New Alert.

     

     

    В открывшемся окне, указываем желаемое название алерта, но я обычно называю его так, что о чем оно оповещает.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • MSSQL база данных в Always on Availability Group в статусе Not Synchronizing.

    В продуктиве имеется два MSSQL работающих в режиме Always On High Availability и после очередного планового переключения ноды в secondary для установки обновлений сервер и перезагрузки, после перезагрузке одна из баз в Always on Availability Group оказалась в статусе — Not Synchronizing.

     

     

     

    В логах значится следующая ошибка:

    Always On Availability Groups data movement for database 'WORK' has been suspended for the following reason: "system" (Source ID 2; Source string: 'SUSPEND_FROM_REDO'). To resume data movement on the database, you will need to resume the database manually. For information about how to resume an availability database, see SQL Server Books Online.

    И в предупреждении к проблемной базе данных:

     

    Исправить это относительно просто, нужно просто возобновить HADR, используя приведенную ниже команду для всех баз данных, которые не синхронизированы.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (1 голос(ов), в среднем: 5,00 из 5)
    Загрузка...
  • Ввод Debian 10 Buster в домен Windows с помощью Kerberos, Samba, Winbind

    Ниже опишу как ввести linux систему Debian 10 в домен Windows с помощью Kerberos, Samba, Winbind.

     

    Исходные данные:

    • Контроллер домена (DC1) на Windows Server 2019, домен SYSOS.LOCAL
    • Linux система (datastore1) на Debian 10 Buster

     

    Подготовка системы

    Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:

    apt-get update && apt-get upgrade -y

     

    Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле /etc/hostname:

    datastore1.sysos.local

     

    Так же файл /etc/hosts приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:

    127.0.0.1	localhost
    192.168.1.10	datastore1.sysos.local datastore1

     

     

    Настройка синхронизации времени

    Если разница будет более 5 минут, то будет не возможно получить билет от Kerberos. Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP:

    apt-get install ntp ntpdate

     

    В файле конфигурации /etc/ntp.conf, добавляем в него информацию о вашем сервере времени (в моем случае указываю контролер домена):

    # You do need to talk to an NTP server or two (or three).
    server dc1.sysos.local

     

    Перезапускаем службу времени:

    /etc/init.d/ntp restart

     

     

    Для единовременной синхронизации можно воспользоваться командой:

    ntpdate dc1.sysos.local
    Рекомендую ознакомится подробней о синхронизации времени на Linux системах можно почитать в этой статье и выполнить его настройку.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (1 голос(ов), в среднем: 3,00 из 5)
    Загрузка...
  • Как запускать команды без пароля sudo в Linux

    В различных ситуациях может понадобится выполнение sudo без ввода пароля. Рассмотрим как это сделать на Linux на нескольких примерах.

     

    Для удобства рекомендую хранить файл настроек для каждого пользователя системы (если их много, то будет проще управлять) отдельно в /etc/sudoers.d.

     

     

    К примеру для пользователя jakonda, разрешим выполнять абсолютно все команды без sudo пароля:

    echo "jakonda ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers.d/jakonda

    Пояснение по синтаксису:

    jakonda Задаём имя пользователя, к которому нужно применить данное правило (в данном случае это jakonda).
    Первое ALL Означает, что правило будет применяться ко всем хостам.
    Второе ALL Означает, что указанный пользователь может запускать команды в сессии любого пользователя.
    Третье ALL Означает, что указанный пользователь может запускать команды в любой группе.
    Последнее ALL Указывает, что эти правила нужно применять ко всем командам.

     

     

    Если необходимо разрешить выполнять только определенные команды, к примеру chown, chmod:

    jakonda ALL=(ALL) NOPASSWD:/usr/bin/chmod,/usr/bin/chown
    ИНФОРМАЦИЯ. Важно указывать полный путь к исполняемому файлу. Узнать расположение файла можно используя — which <имя команды>.

     

     

    Можно разрешить пользователю перезапускать какую либо службу (к примеру apache):

    jakonda ALL=(ALL) NOPASSWD:/usr/bin/systemctl restart apache2

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
    Загрузка...
  • Установка OpenSSL GOST Engine на Debian 11 Bullseye

    Ранее я уже описывал как добавить поддержку шифрования по ГОСТ Р 34.10-2012 в OpenSSL на Debian 9, недавно возвращался к этому вопросу но уже на системе Debian 11, поэтому решил актуализировать под Debian 11.

     

    # Все ниже действия будут производится от root.

     

    Устанавливаем необходимые пакеты:

    apt-get install g++ gcc make git libssl-dev

     

    Поддержу GOST-Engine будем реализовывать для OpenSSL 1.1.1p.

     

    Выполняем сборку OpenSSL 1.1.1p, выполняем команды (скачиваем, распаковываем, собираем билд, устанавливаем, настраиваем):

    wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz
    tar -zxvf openssl-1.1.1p.tar.gz
    cd openssl-1.1.1p
    
    ./config --prefix=/usr/ssl --openssldir=/usr/ssl
    make all
    make install
    
    cd .. && rm /usr/bin/openssl
    ln -s /usr/ssl/bin/openssl /usr/bin/openssl
    echo "/usr/ssl/lib" >> /etc/ld.so.conf.d/ssl.conf
    ldconfig
    

     

    Проверяем версию OpenSSL, должно быть так:

    openssl version -v
    OpenSSL 1.1.1p  21 Jun 2022

     

    # Для сборки GOST Engine нужна версия CMake 3.0 и выше.

    Читать далее…

    БесполезноСлабоватоПриемлемоОтличноПревосходно (2 голос(ов), в среднем: 3,00 из 5)
    Загрузка...

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика