Петр Зайцев и mail.ru
Интересное видео со встречи Петра Зайцева из Percona в компании mail.ru, есть некоторая интересная информация по теме оптимизации работы mysql. Рекомендую для просмотра всем системным администраторам.
Блог для личных заметок о том, с чем сталкиваюсь пока живу…
Рубрика ‘Linux’
Интересное видео со встречи Петра Зайцева из Percona в компании mail.ru, есть некоторая интересная информация по теме оптимизации работы mysql. Рекомендую для просмотра всем системным администраторам.
Интересный цикл статей описывающий проблемы с буферизацией в современных высокоскоростных TCP/IP сетях. Рекомендую к прочтению всем системным администраторам.
Недавно настраивал подключение из Linux при помощи pptp клиента к Windows 2003 VPN серверу, после подключения и нескольких секунд активного использования туннеля он разрывался с ошибкой вынесенной в заголовок поста.
В результате анализа причиной оказался высокий MTU, судя по technet MTU на 2003 VPN серверах по умолчанию 1400, соответственно после выставления значения MTU = 1200 и MRU = 1192 все заработало стабильно.
В некоторых проектах на текущий момент использую связку Apache 2.2 + mod_fastcgi + php. Запускаемый PHP при помощи suexec работает с правами пользователя, что дает возможность перенести вопросы связанные с безопасностью и изолированностью выполняемых скриптов на уровень ОС.
В последнее время в такой связке я разочаровался, mod_fastcgi не обеспечивает приемлемый уровень производительности и надежности для WEB проектов использующих язык PHP, в итоге решил протестировать связку Apache 2.2 + mod_fcgid + php.
Ограничения mod_fcgid:
Непосредственно настройка:
Считаем, что Apache 2.2 + suexec и PHP с поддержкой FastCGI у вас установлен, далее устанавливаем libapache2-mod-fcgid и изменяем стандартную конфигурацию:
Недавно интегрировал Jira v3 с ActiveDirectory (далее AD).
Для настройки Jira достаточно прочитать и выполнить действия описанные в документации, я опишу способ настройки автоматического импорта пользователей из AD.
Считаем, что вы можете успешно создать XML файл для создания пользователей в Jira, включили Jelly Runner, и можете через WEB интерфейс администрирования Jira выполнить созданный XML файл. Сама Jira у вас настроена, запускается и работает без проблем.
Для автоматизации всего процесса импорта пользователей из AD нужно сделать следующее:
Добавить в cron пользователя, с правами которого работет Jira следующую команду:
0 */1 * * * cd ~/SOFT/jira-ldap-userimporter-1.1; java -jar jira-ldap-userimporter-1.1.jar > AD.export && ./buildADul.shГде папка:
~ — домашняя папка пользователя, с правами которого работает Jira, подразумевается, весь дистрибутив Jira распакован в эту директорию.
SOFT/jira-ldap-userimporter-1.1 — папка, в которой находится программа для импорта пользователей из AD и создания XML файла для JellyRunner.
Скрипт buildADul.sh — простой скрипт на bash следующего содержания:
#!/bin/bash
# Script to build userlist for Jira.
# ver 0.1
export PATH="/usr/kerberos/sbin:/usr/local/sbin:/usr/sbin:/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/root/bin"
WRKP="~/SOFT/jira-ldap-userimporter-1.1/"
ADFILE="AD.export"
AD="AD"
cd $WRKP
echo "<JiraJelly xmlns:jira=\"jelly:com.atlassian.jira.jelly.JiraTagLib\">" > $AD
echo "<jira:Login username=\"CHANGE_ME\" password=\"CHANGE_ME\">" >> $AD
cat $ADFILE | grep -v "JiraJelly" >> $AD
echo "</jira:Login>" >> $AD
echo "</JiraJelly>" >> $ADВместо CHANGE_ME нужно указать логин и пароль пользователя Jira с правами администратора или пользователя с возможностью выполнения Jelly скриптов.
jira:login в данном случае требуется для выполнения авторизации в Jira, и создания нужных переменных в контексте выполнения Jelly скрипта, без этого вы будете получать ошибку при запуске созданного скрипта через com.atlassian.jira.jelly.service.JellyService.
Пример ошибки:
Tag CreateUser requires (jelly.username) variables to be set in the ContextСоответственно XML файл у нас создается в нужном формате, теперь можно создать сервис по запуску данного файла в Jira. Для этого переходим в Администрирование — Services и в разделе Add Service заполняем поля следующим образом:
Имя — AD Import
Class — com.atlassian.jira.jelly.service.JellyService
Delay — 720
Жмем Add Service и в поле Input File указываем полный путь в рамках локальной файловой системы сервера до XML файла с Jelly командами. Пользователь с правами которого работает Jira должен иметь возможность прочитать данный файл.
По идее все, теперь каждые 12 часов у вас будет происходить автоматический импорт пользователей из AD. Удаление пользователей должно производиться вручную, с переносом назначенных багов на кого-нибудь другого.
В случае если при установке VirtualBox на ОС Debian вам встретится такая ошибка:
addgroup: The group `vboxusers' already exists and is not a system group. Exiting.
Unable to find a precompiled module for the current kernel
though module compilation denied by debconf setting.vboxconf со следующим содержимым:
virtualbox virtualbox/module-compilation-allowed boolean true
virtualbox virtualbox/delete-old-modules boolean trueИ выполнить команду:
debconf-set-selections vboxconfПосле этого установка VirtualBox пройдет без проблем.
После обновление Debian с lenny до squeeze сменил DC++ клиента на EiskaltDC++. Вцелом впечатления положительные: редко «падает», интерфейс удобный, хотя немного запутанный (особенно пиктограмки), есть возможность указать персональные настройки для каждого хаба (ник, IP, etc).
Так что с LinuxDC++ пересел на него и обратно переходить не собираюсь.
В данной заметке я напишу как настроить NSCA демона для работы системы проверки идентичности MySQL сервера.
Для корректной работы NSCA у вас уже должна быть установлена и настроена система мониторинга Nagios, то есть как минимум пробники для сервера localhost должны проверяться и отображаться корректно. Далее, необходимо установить NSCA сервер, в RHEL 5 это можно сделать командой (предварительно подключив epel репозиторий):
yum install nscaПосле установки управление демоном происходит при помощи скрипта /etc/init.d/nsca, управление конфигурацией происходит при помощи файла /etc/nagios/nsca.cfg. Необходимо проверить, что путь до command_file указан верный, либо исправить, если это не так. У меня данный параметр настрен следующим образом:
# COMMAND FILE
# This is the location of the Nagios command file that the daemon
# should write all service check results that it receives.
command_file=/var/log/nagios/rw/nagios.cmdВсе данные, что NSCA получает по сети он будет обрабатывать и записывать в этот файл, далее Nagios разберет полученную информацию, и, если нет ошибок, обработает и покажет в системе мониторинга.
После вышеописанных действий NSCA сервер настроен, осталось настроить клиента. Для этого устанавливаем его на сервере при помощи команды:
yum install nsca-clientКонфигурационный файл /etc/nagios/send_nsca.cfg в правках не нуждается, проверить корректность работы утилиты send_nsca можно следующим образом — запустить ее со следующими параметрами:
echo -e 'sql.lan.net\tMySQL Checksum Check\t0\tAll Good\n' | send_nsca nsca.server.hostname -p 5667«echo -e» — передает на через pipe утилите send_nsca специальную строку с указанием сервера, сервиса, состояния (0 — все ок, 1 — Warning, 2 — Error, 3 — Unknown), параметр -e отвечает за обработку управляющих символов, то есть \t — табуляция, \n — перевод строки.
nsca.server.hostname — DNS адрес или IP адрес сервера.
После проверки при помощи send_nsca корректной работы связки nsca client — nsca server, осталось настроить систему мониторинга Nagios.
Для этого нужно создать шаблон для сервиса с типом passive, я использую следующий:
define service{
name service_passive ; The 'name' of this service template
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 1 ; Default is to NOT check service 'freshness'
check_command check_dummy!3!"Service check to old"
freshness_threshold 100
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
is_volatile 0 ; The service is not volatile
check_period never ; The service can be checked at any time of the day
max_check_attempts 1 ; Re-check the service up to 4 times in order to determine its final (hard) state
normal_check_interval 3 ; Check the service every 5 minutes under normal conditions
retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined
contact_groups admins ; Notifications get sent out to everyone in the 'admins' group
notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events
notification_interval 0 ; Re-notify about service problems every hour
notification_period 24x7 ; Notifications can be sent out at any time
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}Измените его под свои настройки Nagios, и проверте, что у вас есть timeperiod c именем never и содержимым:
# This one is a favorite: never
define timeperiod{
timeperiod_name never
alias Never
}Этот период задает нулевую периодичность для проверки сервисов с типом passive. После вышеописанной настройки осталось настроить сам сервис, например так:
define service {
use service_passive
service_description MySQL Checksum Check
name mysql_checksum_check
contact_groups admins, smsadmins
register 0
}
define service {
use mysql_checksum_check
host_name sql.lan.net
}Перезапускаем Nagios, для хоста, у которого мы настроили сервис MySQL Checksum Check он находится в состоянии pending, после отправки при помощи send_nsca сообщения указанного выше, через некоторое время он должен перейти в состояние ОК.
Название сервиса MySQL Checksum Check должно быть одинаковым как в конфигурации Nagios, так и для утилиты send_nsca, иначе Nagios не сможет обработать сообщение полученное от NSCA сервера.
В продолжение прошлой заметки — в этой напишу как автоматизировать проверку идентичности slave сервера в рамках компании.
Основной момент, это определиться с периодом проверки СУБД на идентичность, судя по моему опыту — это раз в неделю, либо после проблем с репликацией. Во всех остальных случаях, если разработчики знакомы с ограничениями MySQL при репликации данных, СУБД ведет себя достаточно стабильно.
Для автоматизации проверки я использую скрипт — mysql_consistency.sh. Скрипт достаточно простой, позволяет автоматизировать проверку СУБД на идентичность, с последующей нотификацией через систему Nagios о имеющихся проблемах.
Для его использования достаточно скачать его и скопировать в нужную вам директорию, в обязательном порядке нужно установить набор утилит Maatkit, иначе скрипт не будет работать, так как не будет необходимых программ для реализации проверки идентичности MySQL серверов.
Перед запуском скрипта необходимо указать в нем логин и пароль, при помощи которых он будет подключаться к СУБД, также, если требуется поддержка Nagios, нужно настроить следующие параметры:
###
# Nagios support variables
# 1 - enable nagios nsca support
# 0 - disable nagios nsca support
###
nagios_support=0
# Name of the nagios service
NAGIOS_SERVICE_NAME="MySQL Checksum Check"
# Set NSCA host and port
NSCA_HOST="localhost"
NSCA_PORT="5667"nagios_support — включает/выключает поддержку Nagios.
NSCA_HOST — определяет имя сервера, на котором установлен NSCA сервер.
После запуска скрипт запустит mk-table-checksum, который проверит master MySQL сервер, далее при помощи mk-table-sync проверит консистентность slave MySQL серверов. Если включена поддержка Nagios — скрипт отправит сообщение со статусом проверки, как положительным так и отрицательным, NSCA серверу при помощи утилиты send_nsca.
В следующей заметке напишу как настраивать систему мониторинга Nagios для работы с NSCA сервером, в этой настройке есть несколько моментов.