<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5573393602799425500</id><updated>2011-10-05T05:48:12.175+03:00</updated><title type='text'>Делать чтобы ...</title><subtitle type='html'>Или записываю или забываю. Решил записывать.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-3558159754764794487</id><published>2011-01-29T20:21:00.000+02:00</published><updated>2011-01-29T20:21:01.473+02:00</updated><title type='text'>quagga</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Уже некоторое время борюсь со странным поведением ospfd из пакета quagga. При работе в сети построенной с использованием нескольких виртуальных машин на базе kvm (сеть у меня работает в&amp;nbsp; forward mode='route') через время отдельные ноды отваливаются и в логах оspf видно массовое&lt;br /&gt;2011/01/29 19:51:57 OSPF: Packet[DD] [Slave]: Neighbor 10.99.234.102 packet duplicated.&lt;br /&gt;которое заканичается пропажей маршрутов на хромой ноде и пропаже её маршрутов из анонсов. Почему происходит - понять не удалось, гугление не помагает. Лечится только рестартом сервиса на больной голове.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Сегодня увидел что в "виртульных убунтах" вовсе не последняя quagga. Собрал последнюю и поставил. Посмотрим, чем закончится.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-3558159754764794487?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/3558159754764794487/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2011/01/quagga.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/3558159754764794487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/3558159754764794487'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2011/01/quagga.html' title='quagga'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-564164417428107546</id><published>2011-01-29T19:57:00.000+02:00</published><updated>2011-01-29T19:57:55.909+02:00</updated><title type='text'>Египет и инернет</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Незнаю, что там арабы-революционеры делали со своими роутерами и интернетом, но через зону ответствености Telia.net трафик с 11:00 шел мудрено. Правда где-то часа за два порешали. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-564164417428107546?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/564164417428107546/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post_29.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/564164417428107546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/564164417428107546'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post_29.html' title='Египет и инернет'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-2894637853275846947</id><published>2011-01-23T21:53:00.000+02:00</published><updated>2011-01-23T21:53:07.587+02:00</updated><title type='text'>Списки пакетов в debian like дистрах</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Если надо список пакетов установленных на одной машине установить на другую делаем так:&lt;br /&gt;&lt;br /&gt;root@apps1:~# dpkg --get-selections &amp;gt; file&lt;br /&gt;&lt;br /&gt;root@apps0:~# dpkg --set-selections &amp;lt; file&lt;br /&gt;root@apps0:~# apt-get dselect-upgrade &lt;br /&gt;&lt;br /&gt;И оПа. Оно всё выкачивает и ставит.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-2894637853275846947?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/2894637853275846947/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2011/01/debian-like.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2894637853275846947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2894637853275846947'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2011/01/debian-like.html' title='Списки пакетов в debian like дистрах'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-5414214692170179624</id><published>2011-01-06T18:51:00.001+02:00</published><updated>2011-01-06T18:52:18.572+02:00</updated><title type='text'>OSPF, фильтр маршрутов</title><content type='html'>Если есть vpn сеть в которой маршрутизацией управляет ospf и при этом vpn строится поверх интернет каналов, возникает проблема - без дополнительных танцев ospf будет анонсировать в сеть маршруты связанные с белыми адресами (теми которые нам даёт провайдер). А нам нафиг не надо чтобы нода А считала что белый адрес ноды Б виден через VPN. Для того чтобы оставить то что нам надо я делаю в quagga такой трюк:&lt;br /&gt;&lt;br /&gt;ospfd.conf&lt;br /&gt;==============================================&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;redistribute connected route-map inner&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; redistribute static route-map inner&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ip prefix-list ospf-inner seq 10 permit 10.0.0.0/8 le 32&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ip prefix-list ospf-inner seq 40 deny any&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;route-map inner permit 10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; match ip address prefix-list ospf-inner&lt;/span&gt;&lt;br /&gt;==============================================&lt;br /&gt;В этом случае будут анонсироваться только маршруты из 10.0.0.0/8 сети. Что и необходимо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-5414214692170179624?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/5414214692170179624/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2011/01/ospf.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/5414214692170179624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/5414214692170179624'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2011/01/ospf.html' title='OSPF, фильтр маршрутов'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-5645041596538246387</id><published>2011-01-05T19:16:00.001+02:00</published><updated>2011-01-05T19:16:27.823+02:00</updated><title type='text'>Годная статья по самоподписанным сертификатам</title><content type='html'>http://www.akadia.com/services/ssh_test_certificate.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-5645041596538246387?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/5645041596538246387/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post_2495.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/5645041596538246387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/5645041596538246387'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post_2495.html' title='Годная статья по самоподписанным сертификатам'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-1567639767897888706</id><published>2011-01-05T18:05:00.000+02:00</published><updated>2011-01-05T18:05:34.487+02:00</updated><title type='text'>Безпарольная авторизация - Очень полезная штука</title><content type='html'>&lt;pre class="geshifilter-text"&gt;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;&lt;b&gt;ssh-copy-id -i ~/.ssh/id_rsa &lt;a class="mailto" href="mailto:user@remote.org.ua"&gt;user@example.com&lt;/a&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;Таким образом можно скопировать свой публичный ключ на удалённую систему.&amp;nbsp;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;Естественно что ~/.ssh/id_rsa дол&lt;span class="mailto"&gt;&lt;/span&gt;жен быть в наличии.&amp;nbsp;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;Если его нет, создать можно &lt;span style="font-weight: bold;"&gt;ssh-keygen -t rsa&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;Если всё пройдёт успешно, то при входе на удалённую систему ssh использует ключ&amp;nbsp;&lt;/pre&gt;&lt;pre class="geshifilter-text"&gt;и не будет запрашивать пароль.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-1567639767897888706?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/1567639767897888706/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post_05.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1567639767897888706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1567639767897888706'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post_05.html' title='Безпарольная авторизация - Очень полезная штука'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-1426158730486244162</id><published>2011-01-05T15:01:00.000+02:00</published><updated>2011-01-05T15:01:24.272+02:00</updated><title type='text'>Настраиваю новый сервер...</title><content type='html'>... рейда нет естественно. Вот хорошая комманда&lt;br /&gt;&lt;br /&gt;sfdisk -d /dev/sda | sfdisk /dev/sdb &lt;br /&gt;&lt;br /&gt;копирует таблицу разделов одного диска на другой&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-1426158730486244162?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/1426158730486244162/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1426158730486244162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1426158730486244162'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2011/01/blog-post.html' title='Настраиваю новый сервер...'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-5629487326855134338</id><published>2010-12-18T14:08:00.000+02:00</published><updated>2010-12-18T14:08:45.350+02:00</updated><title type='text'>Брижка или Бритьё</title><content type='html'>Вот откуда пипел узнает что ему нужно брить физиономию 5-ти лезвийным станком (за много денех) если ему об этом не рассказать. Самое смешное в том, что пиплу может и не нужно, но если долго повторять, да еще показывать как круто этой бритвой шорхают по лицу смазливые педерасты (в телевизоре) то только последний кретин не поймёт - что морду надо мазать именно гелем А и бриться станком Б с вибратором и кучей лезвий. А еще станок можно подарить например на новый год (особенно такому задроту как я) и не дорого и сердито. Лично мне станки дарили 5 раз. Их судьба была одинакова - мучался где-то неделю, потом покупал обычный одноразовый, однолезвийный Bic и не ёб себе мозги. В результате как-то так и сложилось - любой одноразовый станок у меня работает куда дольше чем навороченное чудо технологий. И матюков при бритье дешевкой слышится куда меньше.&lt;br /&gt;А уж про пенки и гели - совсем прикольно. Чем мою голову, тем и мажу бороду. Обычный шампуть -&lt;br /&gt;1. Всегда под рукой (в отличии от пенки или геля которые кончаются твари когда попало)&lt;br /&gt;2. Работают, для меня, реально лучше этих гелей и пенок.&lt;br /&gt;3. Цена - еще меньше.&lt;br /&gt;&lt;br /&gt;Кстати, вообще думаю купить себе опасную бритву. И морду бреет и в других ситуациях пригодится. :)&lt;br /&gt;&lt;br /&gt;А выводы какие? Всё очень просто - сформировался класс &lt;strike&gt;специалистов&lt;/strike&gt;  пидорасов которые за мои-же деньги впарят (ну или постараются впарить) ненужную мне поебень. Как страшно жить!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-5629487326855134338?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/5629487326855134338/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/5629487326855134338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/5629487326855134338'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/12/blog-post.html' title='Брижка или Бритьё'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-1539784468186282435</id><published>2010-12-11T18:32:00.001+02:00</published><updated>2010-12-11T19:01:38.650+02:00</updated><title type='text'>KVM</title><content type='html'>ubuntu-vm-builder kvm hardy \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --domain vm1 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --dest /vm/1 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --arch i386 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --hostname vm1 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --mem 1024 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --user master \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --pass А вот хуюшки! Не скажу \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --ip 192.168.122.101 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --mask 255.255.255.0 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --net 192.168.122.0 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --bcast 192.168.122.255 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --gw 192.168.122.1 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --dns 192.168.122.1 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --rootsize=10000 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --swapsize=4000 \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --components main,universe \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --addpkg openssh-server \&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --libvirt qemu:///system ;&lt;br /&gt;&lt;br /&gt;Создаёт kvm гостя с установленной ubunu 8.04. Однако почемуто попасть на него через openssh-server низя (он оказывается не установлен). Хотя английским по белому написано --addpkg acpid vim openssh-server. Приходится делать&lt;br /&gt;&lt;br /&gt;virsh --connect qemu:///system&lt;br /&gt;потом &lt;br /&gt;edit vm1&lt;br /&gt;Прописывать&lt;br /&gt;&lt;graphics autoport="yes" listen="127.0.0.1" port="5900" type="vnc"&gt;&lt;/graphics&gt;&lt;br /&gt;Заходить туда через "Просмотрщик удалённых столов" и поднимать ssh сервер руками.&lt;br /&gt;&lt;br /&gt;up&lt;br /&gt;--addpkg acpid vim openssh-server это неправильно&lt;br /&gt;надо --addpkg openssh-server&lt;br /&gt;тогда всё нормально и сразу входиш.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-1539784468186282435?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/1539784468186282435/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/12/kvm.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1539784468186282435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1539784468186282435'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/12/kvm.html' title='KVM'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-1450100686210181492</id><published>2010-11-27T19:45:00.001+02:00</published><updated>2010-11-27T19:47:18.015+02:00</updated><title type='text'>Мониторинг</title><content type='html'>Хороший хозяин должен всегда иметь актуальную информацию о том что там у него на хозяйстве происходит. В этом вопросе никак не обойтись без системы мониторинга. Первый раз о том что мне необходима обратная связь я задумался года так 4ре назад, и тогда-же занялся подбором соответсвующих инструментов. Естествено сначала был создан примерно такой список задач которые подобный инструмент должен решать:&lt;br /&gt;1. Собирать&amp;nbsp; наборы целочисленных и дробных значений, тестовые записи &lt;br /&gt;и предоставлять возможность работы с собранной информацией.&lt;br /&gt;2. Расширяться (набор и типы счётчиков которые сохраняются в системе должен расширяться)&lt;br /&gt;3. Полностью настраиваться через ГУИ&lt;br /&gt;4. Не создавать проблем&lt;br /&gt;5. Уведомлять о интересующих меня событиях.&lt;br /&gt;&lt;br /&gt;Финалистами выбора стали nagios и zabbix. Плюсы нагиоса я так и не понял. Выглядело оно как конструктор "сделай сам". Я ленив и не люблю ковыряться массе опенсорсных кубиков, которые вроде что-то делают но насколько хорошо непонятно. И совсем непонятно какие их этих кубиков надо взять чтобы получить искомое. От вида гуйни нагиоса хотелось рыгать, возможно сейчас что-то и поменялось но тогад все было очень грустно. Zabbix в этом случае имел куда больше плюсов просто за счет того что представлял собой комплексное решение - всё в одном. А полная конфигурация обьектов мониторинга через ГУИ меня вообще сразила. В общем я пользуюсь Zabbix уже достаточно давно и более чем доволен результатом. Каждый обьект который подключается в систему заносится в соответствующую категорию в результате чего по данному обьекту накапливается специфичная для категории информация и срабатывают тригера по интересующим меня событиям. В любой момент я могу посмотреть график изменения состояния счётчиков (к примеру среднее время обработки запросов с клиентских АРМ), а текущее состоянии системы я всегда вижу через dashboard. Информация о том что я считаю проблемой приходит мне на почту. При этом доступ к информации я могу предоставить и своим клиентам, выставив им права только на их обьекты (клиентов-то может быть несколько).&lt;br /&gt;&amp;nbsp;&amp;nbsp; В общем я себе не представляю более мене серьёзную систему без мониторинга.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-1450100686210181492?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/1450100686210181492/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/11/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1450100686210181492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1450100686210181492'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/11/blog-post.html' title='Мониторинг'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-1932784630821543596</id><published>2010-10-23T20:16:00.001+03:00</published><updated>2010-10-23T20:21:59.468+03:00</updated><title type='text'>Сетевая инфраструктура предприятия</title><content type='html'>&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Вот бывает так что у нас есть предприятие с кучей филиалов, в каждом филиале производится создание данных с помощью одной или нескольких автоматизированных систем. Если используемая система имеет единый центр, то всё достаточно просто - надо организовать подключение клиентов к этому центру. Но если система распределённая и гетерогенная, т.е. состоит из разнородных элементов (грубо говоря серверов) распределённых по филиалам - надо думать. В общем случае мы можем говорить что у нас есть рессурсы распределённый по N территориально распределённым серверам (N может быть равно 1), и M клиентов которые пользуются этими рессурсами. В такую ситуацию я и встрял однажды (только предприятий было несколько).&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; В описанной стуации были использованы таки принципы построения сетевой инфраструктуры:&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Все клиенты и сервера объединены&amp;nbsp; в единую приватную сеть к которой подключаются через интернет.&lt;/li&gt;&lt;li&gt;Рессурс (сервис) который необходим клиентам получает IP адрес в приватной сети (10.0.0.0/24). Естественно на одном сервере (железке) вполне может крутиться N сервисов. На интерфейс lo вешаем нужное количество алиасов на которые биндим сервисы. По заданному адресу клиенты обнаруживают искомый сервис. Вопрос, - "откуда клиенты знают с каким сервисом им надо общаться?", не имеет отношения к данному посту.&lt;/li&gt;&lt;li&gt;Сервера используют OSPF для того чтобы внутри приватной сети анонсировать повешенные на них адреса. &lt;/li&gt;&lt;li&gt;Есть ряд особых серверов - точек входа. Благодаря этим серверам клиент имеющий интернет подключается в приватную сеть. Наличие несольких точек входа повышает живучесть сети. Если одна точка будет снята на техобслуживание клиенты смогут подключиться к приватной сети через другую точку входа. &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; При использовании такого подхода мы получаем  максимально устойчивую, самоорганизовывающуюся сеть.&amp;nbsp; В такой сети клиент не получит сервис только если конечная железка, реализующая требуемую клиентом функциональность, вывалится из сети. Обеспечение живучести поставщика сервиса я уже описывал ранее. Кстати такой уровень живучести не всегда и нужен. :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Пакет OpenVPN незаменимый помошник в организации сети по таким принципам - он умеет перебирать сервера по списку! Короче моя схема работает так -&amp;nbsp;&amp;nbsp; есть N серверов (точки доступа) принимающих подключения клиентов,&amp;nbsp; причем клиентами в данном случае выступают как люди, так и другие сервера (те которые рессурсы предоставляют). Подключаясь к определённой точке доступа, клиент получает IP адрес в приватной сети. К какой точке подключился - такой адрес и получил. Я пользовался такой схемой - 10.X.YY.ZZ, Где X - номер точки доступа а YY.ZZ фиксированный номер данного клиента. Каждый раз при регистрации в системе нового клиента ему выделялся номер, который по совместительству являлся последними двумя октетами в VPN IP адресе клиента.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; OpenVPN сервера с помощью OSPF анонсируют обслуживаемые ими сети (10.X.0.0/16) внутри vpn, что позволяет любому узлу приватной сети иметь ping на любой узел приватной сети (файерволы не считаем). Когда к&amp;nbsp; OpenVPN, сети поключается сервер (провайдер рессуров) он анонсирует все алиасы которые на него повешены, в результате чего все участники Vpn видят его и могут с ним работать ... &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Естественно возникает вопрос в&amp;nbsp; разграничении доступа в такой сети.&amp;nbsp; Не факт что нам надо чтобы все всех видели! Данный вопрос решается элементарно - поскольку у нас ограниченный набор точек входа и весь информационный поток, тем или иным образом, идет через них, мы можем путём применения разнообразных правил на файерволе, управлять тем кто к комму может ходить а кто не может.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Есть конечно и один минус - не факт что это оптимально, все информационные потоки проганять через конечное число служебных серверов.&amp;nbsp;&amp;nbsp; Но ведь, для совсем страшных случаев, это можно решить объединив пару серверов прямым туннелем и понизив его cost в OSPF.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Больше всего в этой кухне мне нравится то, что поставщики рессурсов не имеют постоянных белых адресов! Т.е. атаки из интернета на железо хранящее жизненно важную информацию практически исключены. Конечно постоянные адреса точек доступа доступны для DDOS, DOS и прочих атак, но это уже совсем другая история.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-1932784630821543596?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/1932784630821543596/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/10/blog-post_23.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1932784630821543596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1932784630821543596'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/10/blog-post_23.html' title='Сетевая инфраструктура предприятия'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-8755206451711629475</id><published>2010-10-19T20:58:00.000+03:00</published><updated>2010-10-19T20:58:24.275+03:00</updated><title type='text'>Стандарты, мать их....</title><content type='html'>&lt;div style="text-align: justify;"&gt;Есть еще такая штука называется WSDL - поидее должен помочь пацанам предоставляющим XML ориентированные WEB сервисы в их публикации. Т.е. если я хочу чтобы мой сервис юзали третьи дядьки я разрисовываю WSDL по своему сервису и довольный стригу бабло с его пользователей. Что мы видим здесь - &lt;a href="http://www.w3.org/TR/wsdl"&gt;http://www.w3.org/TR/wsdl&lt;/a&gt;. Здесь мы видим что первый драфт вышел в 2001 году. И что? И нихуя! Прошло 9ть ёбаных лет! А для того чтобы кто-то начал дёргать меня за Web-сервис, WSDL нахуй не упал. Этож блять его знать надо!&amp;nbsp;&lt;/div&gt;- Вы нам лучше нагенерьте примеров XML запросов и ответов, мы их будем руками.&lt;br /&gt;И если бы это был единичный случай....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS А люди мучались, придумывали...&lt;br /&gt;PPS А другие писали инструментарий рожали, чтобы типа wsdl2java еблысь, и всё готово....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-8755206451711629475?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/8755206451711629475/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/10/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8755206451711629475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8755206451711629475'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/10/blog-post.html' title='Стандарты, мать их....'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-4420902292655558786</id><published>2010-10-18T22:20:00.001+03:00</published><updated>2010-10-18T22:23:30.749+03:00</updated><title type='text'>Serviceability, миграция</title><content type='html'>&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Итак я снова вернулся к настройке кластера, а именно к вопросам миграции сервиса с ноды на ноду в случае каких либо сбоев. Ситуация оставалась прежней - heartbeat отказывался пускать в кластер выздоровевшую голову и ответ на "главный вопрос" (что делать если головы не видят друг друга, но видят внешний мир?) не находился. Чтение документации по pacemaker+heartbeat ответа так и не дало. &lt;i&gt;Как правило вся документация рассказывает как делать (тактика) и маловато внимания уделяет вопросу что и почему делать (стратегия и философия ;) )&lt;/i&gt;. Хотя конечно я дочитался до понятия "&lt;b&gt;кворум&lt;/b&gt;", но даже сейчас не знаю до конца как оно работает, и делает ли то что мне нужно. Кроме того, поскольку, выздоровевшая голова сама в heartbeat кластер так и не входила, я решил было пересобрать всё с использованием OpenAIS стека, но одумался - времени на эксперименты вовсе не оставалось. В этот момент у меня были сформированы такие принципы работы кластера:&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Обе головы обмениваются пакетами каждую секунду.&lt;/li&gt;&lt;li&gt;Каждая голова следит за соседкой с целью обнаружить отвал соседки. (Если от соседки не приходят пакеты N секунд она отвалилась)&lt;/li&gt;&lt;li&gt; Обе головы шлют пакеты не только друг другу но и арбитру&lt;/li&gt;&lt;li&gt;Арбитр тоже следит за "отвалом" голов. &lt;/li&gt;&lt;li&gt;Арбитр размещается так чтобы смотреть на головы кластера с точки зрения его клиентов.&amp;nbsp;&lt;/li&gt;&lt;li&gt;И головы и арбитр ведут карту видимости заполняя её данными на базе принятых пакетов.&lt;/li&gt;&lt;li&gt;Голова считается вышедшей из кластера если её не видит ни арбитр ни соседка. Такая ситация считается &lt;b&gt;достоверным &lt;/b&gt;выходом из кластера. Ситуация если &lt;b&gt;проблемную&lt;/b&gt; голову видит или арбитр или вторая голова такая ситуация считается &lt;b&gt;недостоверным&lt;/b&gt; выходом и не рассматривается.&lt;/li&gt;&lt;li&gt;Есть default master и default slave головы. Default master при прочих равных захватывает master роль в кластере.&lt;/li&gt;&lt;li&gt;Событие &lt;b&gt;достоверного&lt;/b&gt; выхода головы из кластера является причиной принимать решение о миграции сервиса&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Есть три действия которые могут выполнять головы кластера:&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;initial_start -&amp;nbsp; начальное состояние&lt;/li&gt;&lt;li&gt;promote - захват мастер роли (запуск сервисов, перевод drbd в primary, установка ip адреса кластера)&lt;/li&gt;&lt;li&gt; demote - выход из мастер роли - (остановка сервиса, перевод drbd в secondary, удаление ip адреса кластера)&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Данные действия выполняются по таким правилам:&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Если голова только запустилась она выполняет &lt;b&gt;initial_start&lt;/b&gt;&lt;/li&gt;&lt;li&gt;После &lt;b&gt;initial_start, &lt;/b&gt;голова настроенная как default master должна выполнить &lt;b&gt;promote,&lt;/b&gt; если в кластере нет другой головы играющей в данный момент мастер роль, но только тогда когда данная голова стала частью кластера (видит хотя-бы арбитра).&lt;/li&gt;&lt;li&gt;После &lt;b&gt;initial_start, &lt;/b&gt;голова настроенная как default slave не будет делать promote. &lt;/li&gt;&lt;li&gt;Любая голова делает &lt;b&gt;promote&lt;/b&gt; в случае &lt;b&gt;достоверного&lt;/b&gt; выхода из кластера головы играющей мастер роль.&lt;/li&gt;&lt;li&gt;Master голова делает &lt;b&gt;demote&lt;/b&gt; в случае если она &lt;b&gt;достоверно&lt;/b&gt; установила что вывалилась из кластера (не получает пакеты ни от арбитра ни от соседки).&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Данная система правил применима только для варианта кластера состоящего из 2х нод (мастер/слейв) и арбитра. Основные хинты - арбитр повышает достоверность информации о выходе головы из кластера, ранний demote который нода делает сама себе уменьшает цену ресинхронизации при возврате головы в кластер. STONISH уже ненужен. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; В результате у меня получилось 5 скриптов:&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;ecmd.pl - сам демон который запускается на головах и арбитрах. Собственно он и работает.&lt;/li&gt;&lt;li&gt;ecm.pl - утилита получения состояния (чтобы это добро прикрутить к zabbix)&lt;/li&gt;&lt;li&gt; initial_start.sh - скрипт запускающий базовые сервисы (drbd в secondary режиме,...)&lt;/li&gt;&lt;li&gt;promote.sh - скрипт переключающий drbd в primary, монтирующий файловую, запускающий сервисы (БД и Аpps), устанавливающий IP адрес,...&lt;/li&gt;&lt;li&gt;demote.sh - действие обратное promote.sh. Убрать IP, остановить сервисы, отмонтировать файловую, drbd в secondary.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;В таком виде это сейчас и крутится.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Перед запуском в продакшин особо доставил провайдер. У него шли какието работы по сети и ДЦ, в следствии чего мониторинг постоянно фиксировал физические перезагрузки железа (средний аптайм - полтора дня) и периодические минутные пропадания пингов на оба сервера.&amp;nbsp; Кластер работал, мониторинг рисовал регулярные headswitch'и, (вплоть до 4-5 в час) при этом Сервис оставался работоспособным. Один раз&amp;nbsp; примерно на 10ть headswitch'ей пришлось вывести drbd на слейв ноде из splitted brain о котором проорал мониторинг. Вход в splitted brain для drbd отвалившегося мастера вполне возможная ситуация (главное что выход из неё прост и ситуация отлично обнаруживается мониторингом).&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; В общем оно так и будет работать до тех пор пока я не разберусь с понятием quorum, не заставлю ноду входить в heartbeat кластер после офлайна (или не перейду на стек&amp;nbsp; openais), не убежусь что pacemaker реализует те концепции которые мне нужны (или не пойму что я дурак и хочу странного). В общем есть над чем подумать....&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-4420902292655558786?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/4420902292655558786/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability_18.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/4420902292655558786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/4420902292655558786'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability_18.html' title='Serviceability, миграция'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-8125392114578634417</id><published>2010-10-17T22:31:00.002+03:00</published><updated>2010-10-17T22:34:57.619+03:00</updated><title type='text'>Serviceability, дисковая подсистема</title><content type='html'>&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Заморочившись с реализацией миграции сервиса между головами я решил переключиться на выбор технологии синхронизации данных в базе между головами кластера. Выборов было несколько:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Выбор был остановлен на дисковой  репликации, а именно пакете drbd. Основной фактор который повлиял на  выбор -&amp;nbsp; минимум настроек , минимум адиминистрироваия и как следствие  простота решения. (На чтении документации по слонам я скис очень  быстро).&amp;nbsp; Минусом drbd является довольно высокий обьём передаваемого  трафика (особенно на фазе синхронизации), кроме того, постгрес пишет  данные и в transaction log и в&amp;nbsp; таблицы базы данных, потому фактически  по сети гоняется двойной обьём. Опять-же и нагрузка на мастер (процессор  и дисковая) повышается...&lt;/div&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Реплицировать постгресовы WAL'ы. Метод уже пробовали и он меня не устраивает, по условиям задачи.&lt;/li&gt;&lt;li&gt;Использовать один из имеющихся пакетов репликации для Postgresql. Пришлось отказаться в связи с повышением нагрузки на мастер-сервер (как правило все такие пакеты реализуется на тригерах), большей сложностью решения как такового, необходимостью выполнять хитрые трюки в случае модификации структуры базы данных (что приходится делать регулярно), усложнением администрирования, плюс есть такие стрёмные штуки как select в котором вызывается строед процедура. В общем даже если забить на нагрузку и администрирование и всё всё всё прочее, такую репликацию пришлось бы тестировать именно на нашей базе данных. &lt;/li&gt;&lt;li&gt;Использовать репликацию операций записи на диск. &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Выбор был остановлен на дисковой репликации, а именно пакете drbd. Основной фактор который повлиял на выбор -&amp;nbsp; минимум настроек , минимум адиминистрироваия и как следствие - простота решения. (На чтении документации по слонам я скис очень быстро).&amp;nbsp; Минусом drbd является довольно высокий обьём передаваемого трафика (особенно на фазе синхронизации), кроме того, постгрес пишет данные и в transaction log и в&amp;nbsp; таблицы базы данных, потому фактически по сети гоняется двойной обьём. Опять-же и нагрузка на мастер (процессор и дисковая) повышается...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Как показали лабораторные опыты дисковая репликация успешно справлялась с поставленной задачей. Кластер устойчиво реагировал на временные отключения слейв ноды, и по мере её подключения в сеть автоматически выполнял её синхронизацию с мастером. Довольно просто так же происходило переключение режима головы из мастера в слейв и обратно без выхода из синхронного состояния. Так-же был протестирован вход кластера в состояние splitted brain и выход из него с&amp;nbsp; перетипанием выбранной ноды. Всё необходимое по данной тематике было прочитано на &lt;a href="http://www.drbd.org/"&gt;http://www.drbd.org/&lt;/a&gt;. У DRBD действительно хорошая документация, некоторые вопросы были связаны с выбором протокола (A,B,C). В данный момент я остановился на полностью синхронном C (в котором и гонял полигон), может быть в дальнейшем перейду к "более асинхронному" протоколу A, но только если задержка будет создавать мне проблемы.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-8125392114578634417?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/8125392114578634417/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability_8570.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8125392114578634417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8125392114578634417'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability_8570.html' title='Serviceability, дисковая подсистема'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-2124555257851135975</id><published>2010-10-17T18:58:00.000+03:00</published><updated>2010-10-17T18:58:05.513+03:00</updated><title type='text'>Serviceability трудности выбора</title><content type='html'>&lt;div style="text-align: justify;"&gt;Итак, приняв решение&amp;nbsp; организовать кластер &lt;strike&gt;с блекджеком и шлюхами&lt;/strike&gt; я сформировал несколько условий его работы влияющих на выбор решения:&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Головы кластера (железки) должны размещаться только в территориально разнесённых дата центрах (в идеале у разных провайдеров). (Минимизируем влияние аварий на подстанциях).&lt;/li&gt;&lt;li&gt; Цена вопроса. Мой заказчик не станет платить за использование промышленных решений кластеризации, потому только опенсорс.&lt;/li&gt;&lt;li&gt;Автоматическое обнаружение "больной" головы &lt;/li&gt;&lt;li&gt;Автоматическая миграция Сервиса с больной головы на здоровую&lt;/li&gt;&lt;li&gt;Автоматический (по возможности) вход головы в кластер в случае её "выздоровления"&lt;/li&gt;&lt;li&gt;Отсутствие потерь данных при миграции&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;В данный момент под linux существует пакет pacemaker решаюший задачи кластеризации на базе стека hearbeat или стека OpenAIS. Данный пакет, судя по его документации, чудно подходит к решению поставленной задачи, - он предоставляет всё что нужно юному кластеростроителю:&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Высокоуровневую абстракцию рессурса, который может представлять собой файловую систему, IP адрес, приложение. Типы рессурсов можно расширять разрабатывая всякие скрипты.&lt;/li&gt;&lt;li&gt;Мониторинг голов. Головы обмениваются между собой пакетами (unicast, мультикаст, broadcast) на основании чего определяют состояние кластера.&lt;/li&gt;&lt;li&gt; Репликацию концигурации кластера между головами. В результате чего администратор настраивает не головы по отдельности, а кластер в целом.&lt;/li&gt;&lt;li&gt;Миграцию рессурса основанную на куче политик.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Вот этот пакет я и взялся исследовать на "проф.пригодность". Из двух вариантов, для начала был выбран pacemaker со стеком heartbeat который завёлся с пол пинка и показал миграцию IP адреса между головами кластера. Я уже начал предчувствовать как всё красиво будет работать дальше, но тут как всегда подкрался северный пушной зверь, а именно:&amp;nbsp; &lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;При достаточно долгом отключении одной из нод (неважно какой, активной или пассивной) она не входит обратно в кластер. Судя по tcpdump обмен пакетами между нодами идёт успешно но в логах я вижу такую муру: &lt;pre&gt;: Ignoring HA message (op=vote) from Set: not in our membership list (size=2)&amp;nbsp;&lt;/pre&gt;Убедить heartbeat пустить поднявшуюся ноду в кластер можно только передернув сервис (/etc/init.d/heartbeat restart), что нихрена меня не устраивает. Поиск в сети не дал решения данной проблемы, а она продолжала появляться как гейзенбаг - т.е. нода то входила в кластер то оставалась в Offline. Прослеживалась правда некоторая зависимость между входом ноды в кластер и временем её офлайна.&lt;/li&gt;&lt;li&gt;В процессе игры в heartbeat у меня возник вопрос - а что будет если узлы кластера потеряют между собой связь но при этом будут видны своим клиентам? &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Основную головную боль вызвал второй вопрос. По условиям задачи железяки лежат на разных техплощадках и я в прошлом сталкивался с ситуацией когда датацентры видны извне но друг друга не видят. Не часто, но... С точки зрения почерпнутой информации о heartbeat нода потерявшая связь с соседкой должна выполнить promote своим рессурсам. Мы-же мастера не видим - значит он здох. Мастер здох а кто сервис выполняет? Никто? Значит будем мы. В результате чего у нас получится так назвываемый splitted brain - синдром разделённого сознания. Клиенты начнут работать с экземплярами сервиса работающего на обоих нодах одновременно, а это простите, - полный пиздец, что и подтвердилось экспериментально. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Круто жить пацанам которые держат все головы кластера в одной комнате и зацепили их отдельным физическим линком, по которому гоняют и синхронизацию данных и keep alive пакеты. При таком раскладе вероятность скатиться в разделённое сознание стремится к 0 (бабу Маню со шваброй не считаем...), потому можно позволить себе делать promote на slave как только связь с master пропала на минимальное время. А у нас-то не так... У нас, если slave не получает пакеты от master это значит одно - slave не получает пакеты от master, чего ему (слейву) вовсе недостаточно для принятия решения, а решение принимать надо причём автоматически и по чётким правилам....&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; В общем и получилась ситуация: есть проблема которую я не знаю как решать (нода не входит в кластер после офлайна) и&amp;nbsp; еще одна концептуальная проблема по которой я не нашел best practices. Выходом из второй ситуации, для территориально разнесенного кластера, является специальная нода - &lt;b&gt;арбитр&lt;/b&gt;, которая смотрит на кластер с точки зрения типового клиента и может дать авторитетный ответ что именно с кластером происходит. Пропала связь между узлами или один из узлов действительно ушел в офлайн.&amp;nbsp; Без реализации принципа арбитража я решил что мой кластер жить не может.&amp;nbsp; Как его реализовать на pacemaker+heartbeat я так и не придумал, плюс нода попрежнему отказывалась входить в heartbeat кластер после восстановления связи с ней, плюс сроки начинали реально поджимать. В общем затык. Последней каплей стала необходимость разработки скрипта управляющего работой нашего Application server и прикручиваение его к heartbeat....&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-2124555257851135975?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/2124555257851135975/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability_17.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2124555257851135975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2124555257851135975'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability_17.html' title='Serviceability трудности выбора'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-1138265538932727042</id><published>2010-10-17T17:42:00.000+03:00</published><updated>2010-10-17T19:16:55.123+03:00</updated><title type='text'>Serviceability начало</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;b&gt;Что делаем? &lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Не так давно мне понадобилось обеспечить бесперебойную работу Сервиса предоставляемого нами заказчику - сделать работу Сервиса устойчивой к сбоям сети, аппаратуры и электропитания (обеспечить serviceability как говорят буржуины).&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;b&gt;Что у нас есть?&lt;/b&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; Есть у нас куча территориально распределённых филиалов предприятия подключенных к интернету, благодаря которому они выходят в корпоративный VPN. Именно через этот VPN, посредством соответствующих толстых клиентов операторы филиала работают с некоторым Сервисом. Сервис этот, представляет собой Application server использующий PostgreSQL для хранения информации. И Application server и Database Server вертятся под linux на одной железке среднего уровня (4GB,2x4Core 2.4Ghz, etc...). Исторически сложилось так, что у заказчика нет ни своего подразделения способного обеспечить обслуживание серверного комплекса, ни&amp;nbsp; технических условий для его размещения (помещение, питание, каналы), в результате чего эта железяка лежит у провайдера (довольно кстати известного).&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;b&gt;Немного истории...&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; За более чем 5ти летнюю историю предоставления Сервиса был накоплен определённый опыт хождения по детским граблям...&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;К примеру, провайдеры конечно классные парни, но как бы матёр провайдер ни был, он не обеспечивает 100% онлайна железа лежащего у него на технической площадке. Как известно "в действительности всё совсем не так как на самом деле", потому при отключении питания на техплощадке, ИБП вытягивают её где-то около 30-40 минут (хорошо если...), потом всё тухнет, дизель-генератор оказывается не заправлен, а если заправлен то персонал не может его запустить. Подвод питания с двух подстанций конечно присутствует, но тухнут обе подстанции... Бывает еще, что шнурок из свича выдернут, но это реже.... А самое интересное в том, что когда у провайдера ложится дата-центр дозвониться можно только к роботу который расскажет что -"у нас проблемы и мы их решаем". Будто я сам не вижу....&amp;nbsp;&amp;nbsp; Правда надо сказать что проблемы подобные описанным возникали у наших провайдеров не чаще чем в раз 5-6 месяцев.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; На самом деле Сервис всегда обслуживался двумя серверами и оба лежали на двух техплощадках весьма опытных организаций (что не мешало в обоих случаях получать одинаковые шишки). Оба сервера были задействованы в организации отказоустойчивости, но назвать такую систему кластером язык не поворачивался. Дело тут в чем,- база данных у нас крутится на постгресе у которого до последнего времени было слабовато с репликацией (всяких слоней я рассматривал, но откинул ввиду сложности поддержки). Из всех возможных схем репликации, в результате был использован механизм warm standby - это когда master генерит WAL файлы, они доставляются на slave, который  их применяет к своей базе. Данная схема репликации довольно проста в настройке и поддержке, а так-же совсем не нагружает master, однако у неё есть один существенный недостаток - slave сервер отстаёт от master на последний (не применённый) WAL файл. Если master отвалится и будет принято решение о включении slave, в его базе&amp;nbsp; не будет ряда уже закомиченных транзакций данные по которым как-раз и находятся в не переданном WAL файле.&amp;nbsp; Есть способы минимизировать данное кол-во транзакций ценой увеличения трафика, но это окно всё равно останется, а это делает невозможным автоматический promote slave сервера до мастер роли. -- Хрен его знает, может мастер сейчас появится а мы тут пачку транзакций скипнули...&amp;nbsp; В общем от автоматического promote пришлось отказаться. Но и с ручным вышел затык...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp; -- Как принять решение о переключении, если провайдер не только не говорит сколько будет длится down time, но и в чём его причина?&amp;nbsp; А из-за потерянных, при переключении транзакций вони будет не меньше чем из-за down time....&amp;nbsp; В общем схема с Warm standby сервером осталась только на случай снятия одной из железок на техобслуживание. Тут уж можно заставить master ноду отдать текущий WAL, обеспечив при этом отсутствие новых транзакций, и по факту применения последнего WAL'а на slave произвести переключение. Хорошо но мало...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Потому было принято решение реализовать полноценный кластер (о двух головах :) ) с автоматическим head switch'ем.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-1138265538932727042?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/1138265538932727042/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1138265538932727042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/1138265538932727042'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2010/10/serviceability.html' title='Serviceability начало'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-8572525585093400849</id><published>2009-12-11T15:50:00.001+02:00</published><updated>2009-12-11T15:52:34.259+02:00</updated><title type='text'>Киплинг. Заповедь.</title><content type='html'>Владей собой среди толпы смятенной,&lt;br /&gt;Тебя клянущей за смятенье всех,&lt;br /&gt;Верь сам в себя, наперекор вселенной,&lt;br /&gt;И маловерным отпусти их грех;&lt;br /&gt;&lt;br /&gt;Пусть час не пробил - жди, не уставая,&lt;br /&gt;Пусть лгут лжецы - не снисходи до них;&lt;br /&gt;Умей прощать и не кажись, прощая,&lt;br /&gt;Великодушней и мудрей других.&lt;br /&gt;&lt;br /&gt;Умей мечтать, не став рабом мечтанья,&lt;br /&gt;И мыслить, мысли не обожествив;&lt;br /&gt;Равно встречай успех и поруганье,&lt;br /&gt;Не забывая, что их голос лжив;&lt;br /&gt;&lt;br /&gt;Останься тих, когда твое же слово&lt;br /&gt;Калечит плут, чтоб уловлять глупцов,&lt;br /&gt;Когда вся жизнь разрушена и снова&lt;br /&gt;Ты должен все воссоздавать с основ.&lt;br /&gt;&lt;br /&gt;Умей поставить в радостной надежде,&lt;br /&gt;На карту все, что накопил с трудом,&lt;br /&gt;Все проиграть и нищим стать, как прежде,&lt;br /&gt;И никогда не пожалеть о том,&lt;br /&gt;&lt;br /&gt;Умей принудить сердце, нервы, тело&lt;br /&gt;Тебе служить, когда в твоей груди&lt;br /&gt;Уже давно все пусто, все сгорело&lt;br /&gt;И только Воля говорит: "Иди!"&lt;br /&gt;&lt;br /&gt;Останься прост, беседуя с царями,&lt;br /&gt;Останься честен, говоря с толпой;&lt;br /&gt;Будь прям и тверд с врагами и друзьями,&lt;br /&gt;Пусть все, в свой час, считаются с тобой;&lt;br /&gt;&lt;br /&gt;Наполни смыслом каждое мгновенье,&lt;br /&gt;Часов и дней неумолимый бег, -&lt;br /&gt;Тогда весь мир ты примешь во владенье,&lt;br /&gt;Тогда, мой сын, ты будешь Человек!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-8572525585093400849?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/8572525585093400849/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2009/12/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8572525585093400849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8572525585093400849'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2009/12/blog-post.html' title='Киплинг. Заповедь.'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-2963509322092604388</id><published>2009-05-15T11:17:00.000+03:00</published><updated>2009-05-15T11:18:28.944+03:00</updated><title type='text'>Для зацепки двух проксей</title><content type='html'>acl testproxy dst destination_ip/255.255.255.255&lt;br /&gt;cache_peer localhost parent 3129 0 no-query&lt;br /&gt;never_direct allow testproxy&lt;br /&gt;always_direct deny testproxy&lt;br /&gt;always_direct allow all&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-2963509322092604388?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/2963509322092604388/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2009/05/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2963509322092604388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2963509322092604388'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2009/05/blog-post.html' title='Для зацепки двух проксей'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-8686608810357719609</id><published>2009-03-13T11:28:00.000+02:00</published><updated>2009-03-13T11:31:13.160+02:00</updated><title type='text'>Алиас на емейл</title><content type='html'>Поскольку я пользуюсь dbmail+postfix для управления почтой &lt;br /&gt;и поскольку я достаточно ленив чтобы заводить новые акаунты под специфические задачи, то я вешаю алиасы на админский акаунт такой коммандой: &lt;br /&gt;&lt;br /&gt;dbmail-users -c admin -s user@Новый.домен&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-8686608810357719609?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/8686608810357719609/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2009/03/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8686608810357719609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/8686608810357719609'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2009/03/blog-post.html' title='Алиас на емейл'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5573393602799425500.post-2071962127555800997</id><published>2008-09-25T16:27:00.000+03:00</published><updated>2010-10-15T19:16:32.034+03:00</updated><title type='text'>Информация о S.M.A.R.T</title><content type='html'>Очередной раз забыл как смотреть S.M.A.R.T дисков в рейде.&lt;br /&gt;Чтобы, блин, помнить&lt;strong&gt;:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;smartctl /dev/cciss/c0d0 -a -d cciss,0&lt;br /&gt;Где 0 - индекс диска в массиве.&lt;br /&gt;&lt;br /&gt;И вообще надо это в мониторинг всандалить.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5573393602799425500-2071962127555800997?l=doit4.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://doit4.blogspot.com/feeds/2071962127555800997/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://doit4.blogspot.com/2008/09/smart.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2071962127555800997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5573393602799425500/posts/default/2071962127555800997'/><link rel='alternate' type='text/html' href='http://doit4.blogspot.com/2008/09/smart.html' title='Информация о S.M.A.R.T'/><author><name>Billy</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
