<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule">

<channel>
	<title>SysAdmins Location &#187; Linux</title>
	<atom:link href="http://vokulov.ru/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://vokulov.ru</link>
	<description>Блог для личных заметок о том, с чем сталкиваюсь пока живу...</description>
	<lastBuildDate>Tue, 20 Jul 2010 18:44:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>		<item>
		<title>pptp_gre.c Message too long</title>
		<link>http://vokulov.ru/2010/07/20/pptp_gre-c-message-too-long/</link>
		<comments>http://vokulov.ru/2010/07/20/pptp_gre-c-message-too-long/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 18:44:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=414</guid>
		<description><![CDATA[Недавно настраивал подключение из Linux при помощи pptp клиента к Windows 2003 VPN серверу, после подключения и нескольких секунд активного использования туннеля он разрывался с ошибкой вынесенной в заголовок поста. В результате анализа причиной оказался высокий MTU, судя по technet MTU на 2003 VPN серверах по умолчанию 1400, соответственно после выставления значения MTU = 1200 [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно настраивал подключение из Linux при помощи pptp клиента к Windows 2003 VPN серверу, после подключения и нескольких секунд активного использования туннеля он разрывался с ошибкой вынесенной в заголовок поста.</p>
<p>В результате анализа причиной оказался высокий MTU, судя по technet MTU на 2003 VPN серверах по умолчанию 1400, соответственно после выставления значения MTU = 1200 и MRU = 1192 все заработало стабильно.</p>

	Tags: <a href="http://vokulov.ru/tag/debian/" title="debian" rel="tag">debian</a>, <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/07/20/pptp_gre-c-message-too-long/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2.2 + mod_fcgid + php</title>
		<link>http://vokulov.ru/2010/06/06/apache2-2-mod_fcgid-php/</link>
		<comments>http://vokulov.ru/2010/06/06/apache2-2-mod_fcgid-php/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 13:47:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=410</guid>
		<description><![CDATA[В некоторых проектах на текущий момент использую связку Apache 2.2 + mod_fastcgi + php. Запускаемый PHP при помощи suexec работает с правами пользователя, что дает возможность перенести вопросы связанные с безопасностью и изолированностью выполняемых скриптов на уровень ОС. В последнее время в такой связке я разочаровался, mod_fastcgi не обеспечивает приемлемый уровень производительности и надежности для [...]]]></description>
			<content:encoded><![CDATA[<p>В некоторых проектах на текущий момент использую связку Apache 2.2 + mod_fastcgi + php. Запускаемый PHP при помощи suexec работает с правами пользователя, что дает возможность перенести вопросы связанные с безопасностью и изолированностью выполняемых скриптов на уровень ОС.</p>
<p>В последнее время в такой связке я разочаровался, mod_fastcgi не обеспечивает приемлемый уровень производительности и надежности для WEB проектов использующих язык PHP, в итоге решил протестировать связку Apache 2.2 + <a href="http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html">mod_fcgid</a> + php.</p>
<p>Ограничения mod_fcgid:</p>
<ol>
<li>1 запрос &#8211; 1 процесс, mod_fcgid не умеет отправлять несколько паралельных запросов запущенному fastcgi процессу, в случае с PHP это и не требуется, так как для корректной работы данной связки параметр нужно использовать PHP_FCGI_CHILDREN=0.</li>
<li>Низкая эффективность различного рода opcode кешеров, так как каждый запущенный fastcgi не имеет доступ к разделяемой памяти других fastcgi процессов (это описано в документации по mod_fcgid, пока не тестировал)</li>
</ol>
<p>Непосредственно настройка:</p>
<p>Считаем, что Apache 2.2 + suexec и PHP с поддержкой FastCGI у вас установлен, далее устанавливаем libapache2-mod-fcgid и изменяем стандартную конфигурацию:</p>
<p><span id="more-410"></span><div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="kw2">cat</span> <span class="sy0">/</span>etc<span class="sy0">/</span>apache2<span class="sy0">/</span>mods-enabled<span class="sy0">/</span>fcgid.conf 
&nbsp;
<span class="sy0">&lt;</span>IfModule mod_fcgid.c<span class="sy0">&gt;</span>
  AddHandler	fcgid-script .fcgi
  FcgidConnectTimeout <span class="nu0">20</span>
&nbsp;
  FcgidBusyTimeout <span class="nu0">60</span>
  FcgidBusyScanInterval <span class="nu0">61</span>
&nbsp;
  SocketPath <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>apache2<span class="sy0">/</span>fcgid<span class="sy0">/</span>sock
&nbsp;
  FcgidMaxProcessesPerClass <span class="nu0">100</span>
  FcgidMaxProcesses <span class="nu0">400</span>
&nbsp;
  FcgidPassHeader Authorization
  FcgidPassHeader Proxy-Authorization
  FcgidPassHeader HTTP_AUTHORIZATION
&nbsp;
  AddHandler php-fcgi .php
  Action php-fcgi <span class="sy0">/</span>php-fcgi<span class="sy0">/</span>php.sh
&nbsp;
  Action application<span class="sy0">/</span>x-httpd-fastphp <span class="sy0">/</span>php-fcgi<span class="sy0">/</span>php.sh
  Action application<span class="sy0">/</span>x-httpd-php <span class="sy0">/</span>php-fcgi<span class="sy0">/</span>php.sh
&nbsp;
  AddType application<span class="sy0">/</span>x-httpd-fastphp     .php
&nbsp;
  <span class="sy0">&lt;</span>Location <span class="sy0">/</span>php-fcgi<span class="sy0">/&gt;</span>
            Options ExecCGI FollowSymLinks
            SetHandler fcgid-script
  <span class="sy0">&lt;/</span>Location<span class="sy0">&gt;</span>
&nbsp;
<span class="sy0">&lt;/</span>IfModule<span class="sy0">&gt;</span></pre></div></div></p>
<p>И выполняем 2-е команды: a2enmod fcgid &amp;&amp; /etc/init.d/apache2 restart</p>
<p>Пример конфигурационного файла для VirtualHost в Apache 2.2:</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="sy0">&lt;</span>VirtualHost <span class="sy0">*</span>:<span class="nu0">80</span><span class="sy0">&gt;</span>
	ServerName papyrus
	ServerAdmin webmaster<span class="sy0">@</span>localhost
&nbsp;
	DocumentRoot <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>papyrus<span class="sy0">/</span>www<span class="sy0">/</span>web
	<span class="sy0">&lt;</span>Directory <span class="sy0">/&gt;</span>
		Options FollowSymLinks
		AllowOverride None
	<span class="sy0">&lt;/</span>Directory<span class="sy0">&gt;</span>
	<span class="sy0">&lt;</span>Directory <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>papyrus<span class="sy0">/</span>www<span class="sy0">/</span>web<span class="sy0">&gt;</span>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	<span class="sy0">&lt;/</span>Directory<span class="sy0">&gt;</span>
&nbsp;
	Alias           <span class="sy0">/</span>php-fcgi<span class="sy0">/</span>      <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>papyrus<span class="sy0">/</span>cgi-bin<span class="sy0">/</span>
&nbsp;
	SuexecUserGroup papyrus papyrus
&nbsp;
  Alias <span class="sy0">/</span>sf <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>papyrus<span class="sy0">/</span>symf<span class="sy0">/</span>data<span class="sy0">/</span>web<span class="sy0">/</span>sf
  <span class="sy0">&lt;</span>Directory <span class="st0">&quot;/var/www/papyrus/symf/data/web/sf&quot;</span><span class="sy0">&gt;</span>
    AllowOverride All
    Allow from All
  <span class="sy0">&lt;/</span>Directory<span class="sy0">&gt;</span>
&nbsp;
<span class="sy0">&lt;</span>Directory <span class="st0">&quot;/var/www/papyrus/cgi-bin&quot;</span><span class="sy0">&gt;</span>
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
<span class="sy0">&lt;/</span>Directory<span class="sy0">&gt;</span>
&nbsp;
	ErrorLog <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>apache2<span class="sy0">/</span>papyrus-error.log
&nbsp;
	<span class="co0"># Possible values include: debug, info, notice, warn, error, crit,</span>
	<span class="co0"># alert, emerg.</span>
	LogLevel warn
&nbsp;
	CustomLog <span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>apache2<span class="sy0">/</span>papyrus-access.log combined
&nbsp;
<span class="sy0">&lt;/</span>VirtualHost<span class="sy0">&gt;</span></pre></div></div>
<p>Данный конфигурационный файл используется для проекта написанного на Symfony, можете его отредактировать для своих нужд. Основные параметры:</p>
<p>/var/www/papyrus/cgi-bin/ &#8211; папка к которой находится файл php.sh, в случае запроса *.php скриптов именно этот скрипт служит как программа, которая вызывается для обработки таких запросов.</p>
<p>SuexecUserGroup &#8211; пользователь и группа с правами которого будут запускаться php скрипты, в данном случае это пользователь и группа papyrus, группа данного пользователя должна быть в группе www-data, иначе при выставленных правах 750 на папку /var/www/papyrus/ Apache не сможет прочитать статические файлы. Пример:</p>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">papyrus:x:<span class="nu0">1003</span>:www-data</pre></div></div>
<p>Пример файла php.sh:</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="co0">#!/bin/sh</span>
<span class="re2">PHP_FCGI_CHILDREN</span>=0
<span class="kw3">export</span> PHP_FCGI_CHILDREN
<span class="re2">PHP_FCGI_MAX_REQUESTS</span>=5000
<span class="kw3">export</span> PHP_FCGI_MAX_REQUESTS
<span class="kw3">exec</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>php5-cgi</pre></div></div>
<p>После перезапуска Apache 2.2 и просмотра страницы http://papyrus/ у вас должен отработать PHP скрипт, в него можете поместить тотже phpinfo(). В случае проблем &#8211; смотрите логи, основной момент, про который обычно забывается &#8211; это права на папки и файлы, они должны быть аналогичные тем, который указаны в SuexecUserGroup.</p>
<p>По поводу скорости работы &#8211; на моем ноутбуке сопоставимо с mod_php, с учетом того, чт о в Apache использую MPM-Worker &#8211; все работает достаточно быстро и стабильно, через некоторое время проверю данную схему в какой-нибудь production среде, тогда дополню данную заметку.</p>
<p>Почему кстати используется PHP_FCGI_CHILDREN=0 &#8211; главный момент, это то, что PHP не управляет своими дочерними процессами, так как их нет, и в случае выпадения php5-cgi процесса в zombie, mod_fcgid должен будет корректно его перезапустить, кстати, аналогичную <a href="http://www.fastcgi.com/drupal/node/5?q=node/10" target="_blank">рекомендацию по настройке приводят</a> и разработчики mod_fastcgi. Так что до тех пор, пока не будет доделан apache-like режим в php5-fpm, планирую использовать такую связку.</p>

	Tags: <a href="http://vokulov.ru/tag/apache/" title="apache" rel="tag">apache</a>, <a href="http://vokulov.ru/tag/debian/" title="debian" rel="tag">debian</a>, <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://vokulov.ru/tag/php/" title="php" rel="tag">php</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/06/06/apache2-2-mod_fcgid-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Интеграция Jira и ActiveDirectory</title>
		<link>http://vokulov.ru/2010/06/05/%d0%b8%d0%bd%d1%82%d0%b5%d0%b3%d1%80%d0%b0%d1%86%d0%b8%d1%8f-jira-%d0%b8-activedirectory/</link>
		<comments>http://vokulov.ru/2010/06/05/%d0%b8%d0%bd%d1%82%d0%b5%d0%b3%d1%80%d0%b0%d1%86%d0%b8%d1%8f-jira-%d0%b8-activedirectory/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 18:50:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[jira]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=406</guid>
		<description><![CDATA[Недавно интегрировал Jira v3 с ActiveDirectory (далее AD). Для настройки Jira достаточно прочитать и выполнить действия описанные в документации, я опишу способ настройки автоматического импорта пользователей из AD. Считаем, что вы можете успешно создать XML файл для создания пользователей в Jira, включили Jelly Runner, и можете через WEB интерфейс администрирования Jira выполнить созданный XML файл. [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно интегрировал <a href="http://www.atlassian.com/software/jira/" target="_blank">Jira v3</a> с ActiveDirectory (далее AD).</p>
<p>Для настройки Jira достаточно прочитать и выполнить действия описанные в <a href="http://confluence.atlassian.com/display/JIRA/Integrating+JIRA+with+LDAP" target="_blank">документации</a>, я опишу способ настройки автоматического импорта пользователей из AD.</p>
<p>Считаем, что вы можете успешно создать <a href="http://confluence.atlassian.com/display/JIRA/Importing+user+from+LDAP" target="_blank">XML файл</a> для создания пользователей в Jira, включили <a href="http://confluence.atlassian.com/display/JIRA/Jelly+Tags#JellyTags-EnablingJelly" target="_blank">Jelly Runner</a>, и можете через WEB интерфейс администрирования Jira выполнить созданный XML файл. Сама Jira у вас настроена, запускается и работает без проблем.</p>
<p>Для автоматизации всего процесса импорта пользователей из AD нужно сделать следующее:</p>
<p>Добавить в cron пользователя, с правами которого работет Jira следующую команду:</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">0       <span class="sy0">*/</span>1     <span class="sy0">*</span>       <span class="sy0">*</span>       <span class="sy0">*</span>       <span class="kw3">cd</span> ~<span class="sy0">/</span>SOFT<span class="sy0">/</span>jira-ldap-userimporter-<span class="nu0">1.1</span>; java <span class="re5">-jar</span> jira-ldap-userimporter-1.1.jar <span class="sy0">&gt;</span> AD.export <span class="sy0">&amp;&amp;</span> .<span class="sy0">/</span>buildADul.sh</pre></div></div>
<p>Где папка:</p>
<p>~ &#8211; домашняя папка пользователя, с правами которого работает Jira, подразумевается, весь дистрибутив Jira распакован в эту директорию.</p>
<p>SOFT/jira-ldap-userimporter-1.1 &#8211; папка, в которой находится программа для импорта пользователей из AD и создания XML файла для JellyRunner.</p>
<p>Скрипт buildADul.sh &#8211; простой скрипт на bash следующего содержания:</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="co0">#!/bin/bash</span>
<span class="co0"># Script to build userlist for Jira.</span>
<span class="co0"># ver 0.1</span>
&nbsp;
<span class="kw3">export</span> <span class="re2">PATH</span>=<span class="st0">&quot;/usr/kerberos/sbin:/usr/local/sbin:/usr/sbin:/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/root/bin&quot;</span>
&nbsp;
<span class="re2">WRKP</span>=<span class="st0">&quot;~/SOFT/jira-ldap-userimporter-1.1/&quot;</span>
<span class="re2">ADFILE</span>=<span class="st0">&quot;AD.export&quot;</span>
<span class="re2">AD</span>=<span class="st0">&quot;AD&quot;</span>
&nbsp;
<span class="kw3">cd</span> <span class="re1">$WRKP</span>
&nbsp;
<span class="kw3">echo</span> <span class="st0">&quot;&lt;JiraJelly xmlns:jira=<span class="es1">\&quot;</span>jelly:com.atlassian.jira.jelly.JiraTagLib<span class="es1">\&quot;</span>&gt;&quot;</span> <span class="sy0">&gt;</span> <span class="re1">$AD</span>
<span class="kw3">echo</span> <span class="st0">&quot;&lt;jira:Login username=<span class="es1">\&quot;</span>CHANGE_ME<span class="es1">\&quot;</span> password=<span class="es1">\&quot;</span>CHANGE_ME<span class="es1">\&quot;</span>&gt;&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$AD</span>
<span class="kw2">cat</span> <span class="re1">$ADFILE</span> <span class="sy0">|</span> <span class="kw2">grep</span> <span class="re5">-v</span> <span class="st0">&quot;JiraJelly&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$AD</span>
<span class="kw3">echo</span> <span class="st0">&quot;&lt;/jira:Login&gt;&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$AD</span>
<span class="kw3">echo</span> <span class="st0">&quot;&lt;/JiraJelly&gt;&quot;</span> <span class="sy0">&gt;&gt;</span> <span class="re1">$AD</span></pre></div></div>
<p>Вместо CHANGE_ME нужно указать логин и пароль пользователя Jira с правами администратора или пользователя с возможностью выполнения Jelly скриптов.</p>
<p>jira:login в данном случае требуется для выполнения авторизации в Jira, и создания нужных переменных в контексте выполнения Jelly скрипта, без этого вы будете получать ошибку при запуске созданного скрипта через <span style="font-size: small;">com.atlassian.jira.jelly.service.JellyService.</span></p>
<p>Пример ошибки:</p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;">Tag CreateUser requires (jelly.username) variables to be set in the Context</pre></div></div>
<p>Соответственно XML файл у нас создается в нужном формате, теперь можно создать сервис по запуску данного файла в Jira. Для этого переходим в Администрирование &#8211; Services и в разделе Add Service заполняем поля следующим образом:</p>
<p>Имя &#8211; AD Import</p>
<p>Class &#8211; com.atlassian.jira.jelly.service.JellyService</p>
<p>Delay &#8211; 720</p>
<p>Жмем Add Service и в поле Input File указываем полный путь в рамках локальной файловой системы сервера до XML файла с Jelly командами. Пользователь с правами которого работает Jira должен иметь возможность прочитать данный файл.</p>
<p>По идее все, теперь каждые 12 часов у вас будет происходить автоматический импорт пользователей из AD. Удаление пользователей должно производиться вручную, с переносом назначенных багов на кого-нибудь другого.</p>

	Tags: <a href="http://vokulov.ru/tag/jira/" title="jira" rel="tag">jira</a>, <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/06/05/%d0%b8%d0%bd%d1%82%d0%b5%d0%b3%d1%80%d0%b0%d1%86%d0%b8%d1%8f-jira-%d0%b8-activedirectory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ошибка &#171;though module compilation denied by debconf setting&#187;</title>
		<link>http://vokulov.ru/2010/05/16/%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b0-though-module-compilation-denied-by-debconf-setting/</link>
		<comments>http://vokulov.ru/2010/05/16/%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b0-though-module-compilation-denied-by-debconf-setting/#comments</comments>
		<pubDate>Sun, 16 May 2010 15:11:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=402</guid>
		<description><![CDATA[В случае если при установке VirtualBox на ОС Debian вам встретится такая ошибка: То для ее решения нужно создать файл vboxconf со следующим содержимым: И выполнить команду: После этого установка VirtualBox пройдет без проблем. Tags: debian, Linux, virtualbox]]></description>
			<content:encoded><![CDATA[<p>В случае если при установке VirtualBox на ОС Debian вам встретится такая ошибка:</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">addgroup: The group <span class="sy0">`</span>vboxusers<span class="st_h">' 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.</span></pre></div></div><br />
То для ее решения нужно создать файл <code>vboxconf со следующим содержимым:</code></p>
<p><div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">virtualbox virtualbox<span class="sy0">/</span>module-compilation-allowed boolean <span class="kw2">true</span>
virtualbox virtualbox<span class="sy0">/</span>delete-old-modules boolean <span class="kw2">true</span></pre></div></div>
<p>И выполнить команду:</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">debconf-set-selections vboxconf</pre></div></div>
<p>После этого установка VirtualBox пройдет без проблем.</p>

	Tags: <a href="http://vokulov.ru/tag/debian/" title="debian" rel="tag">debian</a>, <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://vokulov.ru/tag/virtualbox/" title="virtualbox" rel="tag">virtualbox</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/05/16/%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b0-though-module-compilation-denied-by-debconf-setting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EiskaltDC++ 2.0.3</title>
		<link>http://vokulov.ru/2010/05/09/eiskaltdc-2-0-3/</link>
		<comments>http://vokulov.ru/2010/05/09/eiskaltdc-2-0-3/#comments</comments>
		<pubDate>Sun, 09 May 2010 08:09:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linuxdcpp]]></category>
		<category><![CDATA[linuxdc++]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=400</guid>
		<description><![CDATA[После обновление Debian с lenny до squeeze сменил DC++ клиента на EiskaltDC++. Вцелом впечатления положительные: редко &#171;падает&#187;, интерфейс удобный, хотя немного запутанный (особенно пиктограмки), есть возможность указать персональные настройки для каждого хаба (ник, IP, etc). Так что с LinuxDC++ пересел на него  и обратно переходить не собираюсь. Tags: debian, Linux, linuxdc++, linuxdcpp]]></description>
			<content:encoded><![CDATA[<p>После обновление Debian с lenny до squeeze сменил DC++ клиента на <a href="http://tehnick-8.narod.ru/eiskaltdcpp/" target="_blank">EiskaltDC++</a>. Вцелом впечатления положительные: редко &laquo;падает&raquo;, интерфейс удобный, хотя немного запутанный (особенно пиктограмки), есть возможность указать персональные настройки для каждого хаба (ник, IP, etc).</p>
<p>Так что с LinuxDC++ пересел на него  и обратно переходить не собираюсь.</p>

	Tags: <a href="http://vokulov.ru/tag/debian/" title="debian" rel="tag">debian</a>, <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://vokulov.ru/tag/linuxdc/" title="linuxdc++" rel="tag">linuxdc++</a>, <a href="http://vokulov.ru/tag/linuxdcpp/" title="linuxdcpp" rel="tag">linuxdcpp</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/05/09/eiskaltdc-2-0-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>В тему изучения С++</title>
		<link>http://vokulov.ru/2010/04/05/%d0%b2-%d1%82%d0%b5%d0%bc%d1%83-%d0%b8%d0%b7%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d1%8f-%d1%81/</link>
		<comments>http://vokulov.ru/2010/04/05/%d0%b2-%d1%82%d0%b5%d0%bc%d1%83-%d0%b8%d0%b7%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d1%8f-%d1%81/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 15:39:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Новости]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=394</guid>
		<description><![CDATA[Tags: programming]]></description>
			<content:encoded><![CDATA[<p><a title="ars_longa_vita_brevis" rel="lightbox[pics394]" href="http://vokulov.ru/wp-content/uploads/2010/04/ars_longa_vita_brevis2.png"><img class="attachment wp-att-396 alignleft" src="http://vokulov.ru/wp-content/uploads/2010/04/ars_longa_vita_brevis2.png" alt="ars_longa_vita_brevis" width="744" height="638" /></a></p>

	Tags: <a href="http://vokulov.ru/tag/programming/" title="programming" rel="tag">programming</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/04/05/%d0%b2-%d1%82%d0%b5%d0%bc%d1%83-%d0%b8%d0%b7%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d1%8f-%d1%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка NSCA сервера для системы мониторинга Nagios</title>
		<link>http://vokulov.ru/2010/03/14/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-nsca-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%8b-%d0%bc%d0%be%d0%bd%d0%b8%d1%82/</link>
		<comments>http://vokulov.ru/2010/03/14/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-nsca-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%8b-%d0%bc%d0%be%d0%bd%d0%b8%d1%82/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 14:11:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Red Hat Enterprise Linux]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[rhel]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=381</guid>
		<description><![CDATA[В данной заметке я напишу как настроить NSCA демона для работы системы проверки идентичности MySQL сервера. Для корректной работы NSCA у вас уже должна быть установлена и настроена система мониторинга Nagios, то есть как минимум пробники для сервера localhost должны проверяться и отображаться корректно. Далее, необходимо установить NSCA сервер, в RHEL 5 это можно сделать [...]]]></description>
			<content:encoded><![CDATA[<p>В данной заметке я напишу как настроить <a href="http://nagios.sourceforge.net/docs/3_0/addons.html" target="_blank">NSCA</a> демона для работы системы проверки идентичности MySQL сервера.</p>
<p>Для корректной работы NSCA у вас уже должна быть установлена и настроена система мониторинга Nagios, то есть как минимум пробники для сервера localhost должны проверяться и отображаться корректно. Далее, необходимо установить NSCA сервер, в RHEL 5 это можно сделать командой (предварительно подключив <a href="http://fedoraproject.org/wiki/EPEL" target="_blank">epel</a> репозиторий):</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">yum <span class="kw2">install</span> nsca</pre></div></div>
<p>После установки управление демоном происходит при помощи скрипта /etc/init.d/nsca, управление конфигурацией происходит при помощи файла /etc/nagios/nsca.cfg. Необходимо проверить, что путь до command_file указан верный, либо исправить, если это не так. У меня данный параметр настрен следующим образом:</p>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="co0"># COMMAND FILE</span>
<span class="co0"># This is the location of the Nagios command file that the daemon</span>
<span class="co0"># should write all service check results that it receives.</span>
<span class="re2">command_file</span>=<span class="sy0">/</span>var<span class="sy0">/</span>log<span class="sy0">/</span>nagios<span class="sy0">/</span>rw<span class="sy0">/</span>nagios.cmd</pre></div></div>
<p>Все данные, что NSCA получает по сети он будет обрабатывать и записывать в этот файл, далее Nagios разберет полученную информацию, и, если нет ошибок, обработает и покажет в системе мониторинга.</p>
<p>После вышеописанных действий NSCA сервер настроен, осталось настроить клиента. Для этого устанавливаем его на сервере при помощи команды:</p>
<div id="wpshdo_13" class="wp-synhighlighter-outer"><div id="wpshdt_13" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_13"></a><a id="wpshat_13" class="wp-synhighlighter-title" href="#codesyntax_13"  onClick="javascript:wpsh_toggleBlock(13)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_13" onClick="javascript:wpsh_code(13)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_13" onClick="javascript:wpsh_print(13)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_13" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">yum <span class="kw2">install</span> nsca-client</pre></div></div>
<p>Конфигурационный файл /etc/nagios/send_nsca.cfg в правках не нуждается, проверить корректность работы утилиты send_nsca можно следующим образом &#8211; запустить ее со следующими параметрами:</p>
<div id="wpshdo_14" class="wp-synhighlighter-outer"><div id="wpshdt_14" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_14"></a><a id="wpshat_14" class="wp-synhighlighter-title" href="#codesyntax_14"  onClick="javascript:wpsh_toggleBlock(14)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_14" onClick="javascript:wpsh_code(14)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_14" onClick="javascript:wpsh_print(14)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_14" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="kw3">echo</span> <span class="re5">-e</span> <span class="st_h">'sql.lan.net\tMySQL Checksum Check\t0\tAll Good\n'</span> <span class="sy0">|</span> send_nsca nsca.server.hostname <span class="re5">-p</span> <span class="nu0">5667</span></pre></div></div>
<p>&laquo;echo -e&raquo; &#8211; передает на через pipe утилите send_nsca специальную строку с указанием сервера, сервиса, состояния (0 &#8211; все ок, 1 &#8211; Warning, 2 &#8211; Error, 3 &#8211; Unknown), параметр -e отвечает за обработку управляющих символов, то есть \t &#8211; табуляция, \n &#8211; перевод строки.</p>
<p>nsca.server.hostname &#8211; DNS адрес или IP адрес сервера.</p>
<p>После проверки при помощи send_nsca корректной работы связки nsca client &#8211; nsca server, осталось настроить систему мониторинга Nagios.</p>
<p>Для этого нужно создать шаблон для сервиса с типом passive, я использую следующий:</p>
<div id="wpshdo_15" class="wp-synhighlighter-outer"><div id="wpshdt_15" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_15"></a><a id="wpshat_15" class="wp-synhighlighter-title" href="#codesyntax_15"  onClick="javascript:wpsh_toggleBlock(15)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_15" onClick="javascript:wpsh_code(15)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_15" onClick="javascript:wpsh_print(15)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_15" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">define service<span class="br0">&#123;</span>
 name                            service_passive         ; The <span class="st_h">'name'</span> of this service template
 active_checks_enabled           1                       ; Active service checks are enabled
 passive_checks_enabled          1                       ; Passive service checks are enabled<span class="sy0">/</span>accepted
 parallelize_check               1                       ; Active service checks should be parallelized <span class="br0">&#40;</span>disabling this can lead to major performance problems<span class="br0">&#41;</span>
 obsess_over_service             1                       ; We should obsess over this service <span class="br0">&#40;</span><span class="kw1">if</span> necessary<span class="br0">&#41;</span>
 check_freshness                 1                       ; Default is to NOT check service <span class="st_h">'freshness'</span>
 check_command                   check_dummy<span class="sy0">!</span><span class="nu0">3</span><span class="sy0">!</span><span class="st0">&quot;Service check to old&quot;</span>
 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 <span class="kw1">time</span> of the day
 max_check_attempts              1                       ; Re-check the service up to 4 <span class="kw3">times</span> <span class="kw1">in</span> order to determine its final <span class="br0">&#40;</span>hard<span class="br0">&#41;</span> state
 normal_check_interval           3                       ; Check the service every 5 minutes under normal conditions
 retry_check_interval            1                       ; Re-check the service every minute <span class="kw1">until</span> a hard state can be determined
 contact_groups                  admins                  ; Notifications get sent out to everyone <span class="kw1">in</span> the <span class="st_h">'admins'</span> group
 notification_options            <span class="kw2">w</span>,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 <span class="kw1">time</span>
 register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE<span class="sy0">!</span>
 <span class="br0">&#125;</span></pre></div></div>
<p>Измените его под свои настройки Nagios, и проверте, что у вас есть timeperiod c именем never и содержимым:</p>
<div id="wpshdo_16" class="wp-synhighlighter-outer"><div id="wpshdt_16" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_16"></a><a id="wpshat_16" class="wp-synhighlighter-title" href="#codesyntax_16"  onClick="javascript:wpsh_toggleBlock(16)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_16" onClick="javascript:wpsh_code(16)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_16" onClick="javascript:wpsh_print(16)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_16" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="co0"># This one is a favorite: never </span>
define timeperiod<span class="br0">&#123;</span>
timeperiod_name never
<span class="kw3">alias</span>           Never
<span class="br0">&#125;</span></pre></div></div>
<p>Этот период задает нулевую периодичность для проверки сервисов с типом passive. После вышеописанной настройки осталось настроить сам сервис, например так:</p>
<div id="wpshdo_17" class="wp-synhighlighter-outer"><div id="wpshdt_17" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_17"></a><a id="wpshat_17" class="wp-synhighlighter-title" href="#codesyntax_17"  onClick="javascript:wpsh_toggleBlock(17)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_17" onClick="javascript:wpsh_code(17)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_17" onClick="javascript:wpsh_print(17)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_17" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">define service <span class="br0">&#123;</span>
use                             service_passive
service_description             MySQL Checksum Check
name                            mysql_checksum_check
contact_groups                  admins, smsadmins
register                        <span class="nu0">0</span>
<span class="br0">&#125;</span>
define service <span class="br0">&#123;</span>
use                             mysql_checksum_check
host_name                       sql.lan.net
<span class="br0">&#125;</span></pre></div></div>
<p>Перезапускаем Nagios, для хоста, у которого мы настроили сервис MySQL Checksum Check он находится в состоянии pending, после отправки при помощи send_nsca сообщения указанного выше, через некоторое время он должен перейти в состояние ОК.</p>
<p>Название сервиса MySQL Checksum Check должно быть одинаковым как в конфигурации Nagios, так и для утилиты send_nsca, иначе Nagios не сможет обработать сообщение полученное от NSCA сервера.</p>

	Tags: <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://vokulov.ru/tag/nagios/" title="nagios" rel="tag">nagios</a>, <a href="http://vokulov.ru/tag/rhel/" title="rhel" rel="tag">rhel</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/03/14/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-nsca-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d0%b4%d0%bb%d1%8f-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%8b-%d0%bc%d0%be%d0%bd%d0%b8%d1%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проверка идентичности MySQL Slave сервера, часть 2</title>
		<link>http://vokulov.ru/2010/03/14/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%87%d0%bd%d0%be%d1%81%d1%82%d0%b8-mysql-slave-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%87%d0%b0%d1%81/</link>
		<comments>http://vokulov.ru/2010/03/14/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%87%d0%bd%d0%be%d1%81%d1%82%d0%b8-mysql-slave-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%87%d0%b0%d1%81/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 10:33:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=378</guid>
		<description><![CDATA[В продолжение прошлой заметки &#8211; в этой напишу как автоматизировать проверку идентичности slave сервера в рамках компании. Основной момент, это определиться с периодом проверки СУБД на идентичность, судя по моему опыту &#8211; это раз в неделю, либо после проблем с репликацией. Во всех остальных случаях, если разработчики знакомы с ограничениями MySQL при репликации данных, СУБД [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение <a href="http://vokulov.ru/2010/02/23/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%87%d0%bd%d0%be%d1%81%d1%82%d0%b8-mysql-slave-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0/" target="_blank">прошлой заметки</a> &#8211; в этой напишу как автоматизировать проверку идентичности slave сервера в рамках компании.</p>
<p>Основной момент, это определиться с периодом проверки СУБД на идентичность, судя по моему опыту &#8211; это раз в неделю, либо после проблем с репликацией. Во всех остальных случаях, если разработчики знакомы с <a href="http://dev.mysql.com/doc/refman/5.0/en/replication-features.html" target="_blank">ограничениями MySQL</a> при репликации данных, СУБД ведет себя достаточно стабильно.</p>
<p>Для автоматизации проверки я использую скрипт &#8211; <a href="http://github.com/mightydok/shellscripts/blob/master/mysql_consistency.sh" target="_blank">mysql_consistency.sh</a>. Скрипт достаточно простой, позволяет автоматизировать проверку СУБД на идентичность, с последующей нотификацией через систему Nagios о имеющихся проблемах.</p>
<p>Для его использования достаточно скачать его и скопировать в нужную вам директорию, в обязательном порядке нужно установить набор утилит <a href="http://www.maatkit.org/" target="_blank">Maatkit</a>, иначе скрипт не будет работать, так как не будет необходимых программ для реализации проверки идентичности MySQL серверов.</p>
<p>Перед запуском скрипта необходимо указать в нем логин и пароль, при помощи которых он будет подключаться к СУБД, также, если требуется поддержка Nagios, нужно настроить следующие параметры:</p>
<div id="wpshdo_18" class="wp-synhighlighter-outer"><div id="wpshdt_18" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_18"></a><a id="wpshat_18" class="wp-synhighlighter-title" href="#codesyntax_18"  onClick="javascript:wpsh_toggleBlock(18)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_18" onClick="javascript:wpsh_code(18)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_18" onClick="javascript:wpsh_print(18)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_18" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><span class="co0">###</span>
<span class="co0"># Nagios support variables</span>
<span class="co0"># 1 - enable nagios nsca support</span>
<span class="co0"># 0 - disable nagios nsca support</span>
<span class="co0">###</span>
<span class="re2">nagios_support</span>=<span class="nu0">0</span>
&nbsp;
<span class="co0"># Name of the nagios service</span>
<span class="re2">NAGIOS_SERVICE_NAME</span>=<span class="st0">&quot;MySQL Checksum Check&quot;</span>
&nbsp;
<span class="co0"># Set NSCA host and port</span>
<span class="re2">NSCA_HOST</span>=<span class="st0">&quot;localhost&quot;</span>
<span class="re2">NSCA_PORT</span>=<span class="st0">&quot;5667&quot;</span></pre></div></div>
<p>nagios_support &#8211; включает/выключает поддержку Nagios.</p>
<p>NSCA_HOST  &#8211; определяет имя сервера, на котором установлен NSCA сервер.</p>
<p>После запуска скрипт запустит mk-table-checksum, который проверит master MySQL сервер, далее при помощи mk-table-sync проверит консистентность slave MySQL серверов. Если включена поддержка Nagios &#8211; скрипт отправит сообщение со статусом проверки, как положительным так и отрицательным, NSCA серверу при помощи утилиты send_nsca.</p>
<p>В следующей заметке напишу как настраивать систему мониторинга Nagios для работы с NSCA сервером, в этой настройке есть несколько моментов.</p>

	Tags: <a href="http://vokulov.ru/tag/debian/" title="debian" rel="tag">debian</a>, <a href="http://vokulov.ru/tag/freebsd/" title="FreeBSD" rel="tag">FreeBSD</a>, <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://vokulov.ru/tag/mysql/" title="mysql" rel="tag">mysql</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/03/14/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%87%d0%bd%d0%be%d1%81%d1%82%d0%b8-mysql-slave-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0-%d1%87%d0%b0%d1%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проверка идентичности MySQL Slave сервера</title>
		<link>http://vokulov.ru/2010/02/23/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%87%d0%bd%d0%be%d1%81%d1%82%d0%b8-mysql-slave-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0/</link>
		<comments>http://vokulov.ru/2010/02/23/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%87%d0%bd%d0%be%d1%81%d1%82%d0%b8-mysql-slave-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 22:10:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=360</guid>
		<description><![CDATA[СУБД MySQL, самая популярная СУБД для WEB проектов. Эту БД используют миллионы проектов по всей сети Интернет, от крупных компаний, до отдельных разработчиков, и как следствие, перед любым администратором СУБД MySQL рано или поздно встает вопрос об обеспечении отказоустойчивого режима работы данной подсистемы БД в рамках проекта. СУБД MySQL (далее просто MySQL или СУБД) предлагает [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;"><a href="http://mysql.com/" target="_blank">СУБД MySQL</a>, самая популярная СУБД для WEB проектов. Эту БД используют миллионы проектов по всей сети Интернет, от крупных компаний, до отдельных разработчиков, и как следствие, перед любым администратором СУБД MySQL рано или поздно встает вопрос об обеспечении отказоустойчивого режима работы данной подсистемы БД в рамках проекта. СУБД MySQL (далее просто MySQL или СУБД) предлагает 2-а механизма высокодоступного режима работы:</span></p>
<p><span style="font-size: small;">1) <a href="http://www.mysql.com/products/database/cluster/" target="_blank">MySQL Cluster</a></span></p>
<p><span style="font-size: small;">2) <a href="http://dev.mysql.com/doc/refman/5.0/en/replication.html" target="_blank">MySQL Replication</a></span></p>
<p><span style="font-size: small;">Оба механизма имеют свои плюсы и минусы, но всетаки более популярен и доступен &#8211; это 2-ой вариант, то есть репликация данных между MySQL серверами. Настройка репликации отлично <a href="http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html" target="_blank">описана в документации</a>, поэтому рассматривать мы ее не будем. Предмет данной заметки &#8211; проверка MySQL slave сервера на идентичность его данных MySQL master серверу.</span></p>
<p><span style="font-size: small;"><span id="more-360"></span>Не все администраторы это знают, но из-за того, что репликация в MySQL 4.1-5.0 производится при помощи бинарных логов, в которые пишутся SQL запросы, которые в последствии выполняются MySQL slave сервером, данные на slave сервере могут отличаться от данных на master сервере, причем, как показывает практика, такие ситуацию случаются регулярно.</span></p>
<p><span style="font-size: small;">Соответственно, задача любого MySQL администратора &#8211; это обеспечить ежедневную проверку идентичности данных slave сервера с последующей синхронизацией данных, в случае необходимости.</span></p>
<p><span style="font-size: small;">Для проверки идентичности данных я использую утилиту <a href="http://www.maatkit.org/doc/mk-table-checksum.html" target="_blank">mk-table-checksum</a> из пакета <a href="http://www.maatkit.org/" target="_blank">Maatkit</a>. Данная утилита умеет проверят идентичность данных между серверами, выборочно по базам данных или отдельным таблицам, с помощью разных алгоритмов (ACCUM, BIT_XOR, CHECKSUM), причем, как между серверами связанными репликацией, так и нет. Суть работы данной утилиты &#8211; конкатенация всех данных в таблице, с дальнейшим получением контрольного числа для данного объема данных. Для проверки я использую следующие параметры для запуска данной утилиты:</span></p>
<div id="wpshdo_19" class="wp-synhighlighter-outer"><div id="wpshdt_19" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_19"></a><a id="wpshat_19" class="wp-synhighlighter-title" href="#codesyntax_19"  onClick="javascript:wpsh_toggleBlock(19)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_19" onClick="javascript:wpsh_code(19)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_19" onClick="javascript:wpsh_print(19)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_19" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mk-table-checksum <span class="re5">--quiet</span> <span class="re5">--algorithm</span> BIT_XOR <span class="re5">--chunk-size</span> 500000 <span class="re5">--nocrc</span> <span class="re5">--empty-replicate-table</span> <span class="re5">--float-precision</span> 5 \
<span class="re5">--function</span> FNV_64 <span class="re5">--optimize-xor</span> <span class="re5">--replicate</span>=test.checksum <span class="re5">--sleep-coef</span>=0.5 <span class="re5">--socket</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>mysql_socket_path.sock \
<span class="re2">h</span>=MYSQL_HOST,<span class="re2">P</span>=MYSQL_PORT,<span class="re2">u</span>=MYSQL_USER,<span class="re2">p</span>=MYSQL_PASS,<span class="re2">A</span>=cp1251</pre></div></div>
<p><span style="font-size: small;">Ключевые параметры:</span></p>
<p><span style="font-size: small;">&#8211;algorithm BIT_XOR &#8211; алгоритм BIT_XOR, для получения финальной контрольного числа, данный алгоритм не учитывает очередность вставки данных в таблице, соответственно если на slave сервере данные находятся в другом порядке, чем на master сервере, то данный алгоритм не позволит это обнаружить, при такой ситуации нужно использовать алгоритм ACCUM.<br />
</span></p>
<p><span style="font-size: small;">&#8211;function FNV_64 &#8211; хеш функция для обработки контрольного числа полученного при помощи алгоритам BIT_XOR или ACCUM. Я использую функцию FNV_64, данная функция доступа после установки UDF модуля, исходный код данного модуля распространяется вместе с <a href="http://www.maatkit.org/" target="_blank">Maatkit</a>.<br />
</span></p>
<p><span style="font-size: small;">Для проверки должен быть указан адрес MySQL master сервера, после запуска утилиты определяются БД для проверки и выполняются SQL запросы вида REPLACE с записью конечных данных в таблицу test.checksum, далее эти SQL запросы при помощи репликации передаются на slave сервер, где также выполняются. Соотвественно если результат выполнения одинх и техже запросов равен на master и slave сервере, значит считаем, что данные на серверах идентичны.</span></p>
<p><span style="font-size: small;">Далее для проверки и синхронизации данных, если это требуется, используем утилиту <a href="http://www.maatkit.org/doc/mk-table-sync.html" target="_blank">mk-table-sync</a>. Я использую следующие параметры для запуска:</span></p>
<p><span style="font-size: small;"><div id="wpshdo_20" class="wp-synhighlighter-outer"><div id="wpshdt_20" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_20"></a><a id="wpshat_20" class="wp-synhighlighter-title" href="#codesyntax_20"  onClick="javascript:wpsh_toggleBlock(20)" title="Нажмите, чтобы показать или скрыть блок кода">Исходный код</a></td><td align="right"><a href="#codesyntax_20" onClick="javascript:wpsh_code(20)" title="Показать код отдельно"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_20" onClick="javascript:wpsh_print(20)" title="Напечатать код"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://vokulov.ru/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Показать информацию о плагине"><img border="0" style="border: 0 none" src="http://vokulov.ru/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_20" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;">mk-table-sync <span class="re5">--print</span> <span class="re5">--verbose</span> <span class="re5">--function</span> FNV_64 <span class="re5">--replicate</span> test.checksum <span class="re5">--sync-to-master</span> \
<span class="re2">h</span>=MYSQL_HOST,<span class="re2">P</span>=MYSQL_PORT,<span class="re2">u</span>=MYSQL_USER,<span class="re2">p</span>=MYSQL_PASS,<span class="re2">A</span>=cp1251</pre></div></div></span></p>
<p><span style="font-size: small;">Ключевые параметры:</span></p>
<p><span style="font-size: small;">&#8211;print &#8211; вывести информацию, если найдены различия, изменение данных не производится.</span></p>
<p><span style="font-size: small;">&#8211;sync-to-master &#8211; все изменения, если найдены различия, будут проводиться на MySQL  master сервере. Это особенно актуально в случае master-master репликации. В случае если вместо параметра &#8211;print будет параметр &#8211;execute, данная утилита определит какие данные между master и slave сервером различаются, подключится к master серверу и выполнит необходимые запросы (REPLACE, DELETE) для приведения slave сервера в идентичное состояние master серверу.</span></p>
<p><span style="font-size: small;">Также часто приходится пользоваться параметром &#8211;noforeign-key-checks, для отключения проверки foreign-key`s. Их выполнение все равно не нужно, если данные в итоге будут идентичны на обоих серверах.</span></p>
<p><span style="font-size: small;">Проводя такую нехитрую проверку каждый день, мы можем гарантировать, что данные между master и slave серверами идентичны, и в случае отказа master сервера MySQL администратор сможет без проблем задейстовать slave сервер для обеспечения дальнейшей работы WEB проекта.</span></p>
<p><span style="font-size: small;">В следующей заметке опишу способ простой автоматизации проверки идентичности MySQL master и slave серверов с последующей нотификацией, в случае проблем, при помощи системы мониторинга <a href="http://www.nagios.org/" target="_blank">Nagios</a>.</span></p>

	Tags: <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://vokulov.ru/tag/mysql/" title="mysql" rel="tag">mysql</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/02/23/%d0%bf%d1%80%d0%be%d0%b2%d0%b5%d1%80%d0%ba%d0%b0-%d0%b8%d0%b4%d0%b5%d0%bd%d1%82%d0%b8%d1%87%d0%bd%d0%be%d1%81%d1%82%d0%b8-mysql-slave-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80%d0%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSS лента статуса сборки пакетов LinuxDC++</title>
		<link>http://vokulov.ru/2010/02/22/rss-%d0%bb%d0%b5%d0%bd%d1%82%d0%b0-%d1%81%d1%82%d0%b0%d1%82%d1%83%d1%81%d0%b0-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-%d0%bf%d0%b0%d0%ba%d0%b5%d1%82%d0%be%d0%b2-linuxdc/</link>
		<comments>http://vokulov.ru/2010/02/22/rss-%d0%bb%d0%b5%d0%bd%d1%82%d0%b0-%d1%81%d1%82%d0%b0%d1%82%d1%83%d1%81%d0%b0-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-%d0%bf%d0%b0%d0%ba%d0%b5%d1%82%d0%be%d0%b2-linuxdc/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 13:23:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linuxdcpp]]></category>
		<category><![CDATA[dc++]]></category>
		<category><![CDATA[dcpp]]></category>
		<category><![CDATA[linuxdc++]]></category>

		<guid isPermaLink="false">http://vokulov.ru/?p=353</guid>
		<description><![CDATA[В правой колонке добавил RSS ленту для отображения статуса сборки пакетов linuxdcpp для Debian на сервисе build.opensuse.org. Теперь вы всегда сможете узнавать о последних собранных версиях в режиме реального времени. Либо можете добавить эту ленту в свои RSS клиенты. Последнюю версию из BZR репозитория я собрал сегодня, так что можете уже обновляться из репозитория сервиса [...]]]></description>
			<content:encoded><![CDATA[<p>В правой колонке добавил RSS ленту для отображения статуса сборки пакетов linuxdcpp для Debian на сервисе build.opensuse.org. Теперь вы всегда сможете узнавать о последних собранных версиях в режиме реального времени.</p>
<p>Либо можете добавить <a href="https://hermes.opensuse.org/feeds/59788.rdf" target="_blank">эту ленту</a> в свои RSS клиенты.</p>
<p>Последнюю версию из BZR репозитория я собрал сегодня, так что можете уже обновляться из репозитория сервиса сборки.</p>
<p>Об обновления пакетов из репозитория писать не главной странице больше не планирую. Возможно только в случае значительных изменений для собираемого ПО.</p>

	Tags: <a href="http://vokulov.ru/tag/dc/" title="dc++" rel="tag">dc++</a>, <a href="http://vokulov.ru/tag/dcpp/" title="dcpp" rel="tag">dcpp</a>, <a href="http://vokulov.ru/tag/linux/" title="Linux" rel="tag">Linux</a>, <a href="http://vokulov.ru/tag/linuxdc/" title="linuxdc++" rel="tag">linuxdc++</a>, <a href="http://vokulov.ru/tag/linuxdcpp/" title="linuxdcpp" rel="tag">linuxdcpp</a><br />
]]></content:encoded>
			<wfw:commentRss>http://vokulov.ru/2010/02/22/rss-%d0%bb%d0%b5%d0%bd%d1%82%d0%b0-%d1%81%d1%82%d0%b0%d1%82%d1%83%d1%81%d0%b0-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-%d0%bf%d0%b0%d0%ba%d0%b5%d1%82%d0%be%d0%b2-linuxdc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
