You are viewing [info]whiteglasses's journal

DeDMustDIE [entries|archive|friends|userinfo]
DeDMustDIE

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]
[ tags | tags ]

Балансировка с помощью DNS [23.03.2012|15:19]
[Tags|, , , ]

Самый простой способ раскидать посетителей по нескольким серверам - DNS Round-robin.

Для одного доменного имени назначается несколько ip адресов. На каждый запрос возвращаются все адреса, но каждый раз в разном порядке, в расчёте на то, что обычно клиент тупо берёт самое первое значение. Поэтому разные клиенты получают на первом месте разные адреса и идут на разные серверы. Перестановка осуществляется просто циклически.

Вот для примера три запроса yandex.ru

# nslookup yandex.ru
Address: 87.250.251.11
Address: 87.250.250.11
Address: 213.180.204.11
Address: 93.158.134.11
Address: 213.180.193.11
Address: 77.88.21.11

# nslookup yandex.ru
Address: 77.88.21.11
Address: 87.250.251.11
Address: 87.250.250.11
Address: 213.180.204.11
Address: 93.158.134.11
Address: 213.180.193.11

# nslookup yandex.ru
Address: 213.180.193.11
Address: 77.88.21.11
Address: 87.250.251.11
Address: 87.250.250.11
Address: 213.180.204.11
Address: 93.158.134.11

Чтобы использовать DNS round-robin в BIND достаточно указать несколько ip для одного домена.

www IN  A       192.168.0.1
www IN A 192.168.0.2
www IN  A       192.168.0.3
По умолчанию BIND переставляет адреса в циклическом порядке, но это можно изменить:

rrset-order {
class IN type A name "host.example.com" order random;
order cyclic;
};

http://ftp.isc.org/isc/bind9/cur/9.8/doc/arm/Bv9ARM.ch06.html#rrset_ordering

Вообще, DNS клиент не обязан брать первый из возвращаемых адресов. Он может выбрать любой  адрес по любому алгоритму. Но большинство, конечно идёт по пути наименьшего сопротивления.

Отличилась, как обычно, компания Microsoft, которая в Windows Vista изменила алгоритм выбора адреса и DNS-балансировка не всегда срабатывала.
http://support.microsoft.com/kb/968920

В Windows 7 всё исправили. К счастью, доля Vista уже небольшая и продолжает падать.

У Windows XP тоже есть нюанс. По умолчанию включена приоритезация по подсети. Т.е. наверху списка адресов оказываются адреса из вашей подсети. Но вряд ли клиент окажется в одной подсети с вами.
LinkLeave a comment

PowerПиздец [06.03.2012|15:14]
[Tags|, ]

Я тут смотрю PowerShell и не могу понять, то ли Microsoft издевается, то ли реально идиотов понабрали.

Здесь нельзя мышкой изменять ширину консоли, можно только вводя циферки в окошке настроек.
Здесь нет сохранения истории между сеансами, есть костыли делающие это.
Здесь нет встроенного sudo, приходится брать скрипты из интернета.
Здесь нельзя выполнять неподписанные скрипты (даже скрипты профиля) без чтения документации.

Это 2012 год, Microsoft долго говорила, что GUI - наше всё, потом, внезапно, повернулась на 180 градусов и сделала PowerShell и Windows Server Core (с консолькой (cmd.exe) вместо рабочего стола).
Но сделала всё наполовину. С каждой новой версией PowerShell и Windows компания ралдостно рапортует, что теперь из новой консольки можно сделать ещё больше всего того, что раньше было доступно только из графического интерфейса. Но эти победные реляции означают лишь то, что консоль как не была самодостаточной, так и неизвестно сколько ещё будет лишь дополнением к GUI.

Глубину пропасти, разделяющей Microsoft и здравый смысл показывает цитата из статьи Microsoft, которая показывает костыль для сохранения истории команд PowerShell между сеансами.

There is one downside to this technique: Imported commands (via Add-History) do not populate the up and down arrows. But, dude (or dudette), with 2048 potential commands in the command history, that would be a ridiculous amount of Up and Down arrowing; that is why there are single letter aliases for Get-History and for Invoke-History.

http://blogs.technet.com/b/heyscriptingguy/archive/2011/11/25/use-powershell-commands-from-one-session-in-another-session.aspx

Здесь говорится три вещи:
1. Что по клавишам стрелка вверх, стрелка вниз доступно не более 2048 команд
2. Хотя историю можно сохранить в файл и считать оттуда, эта история всё равно не будет доступна по клавишам стрелка вверх, стрелка вниз.
3. Что всё равно невозможно управиться с двумя тысячами команд в истории с помощью клавиш-стрелок.

Вот я сейчас в bash легко с десятью тысячами управляюсь и думаю, что надо лимит раз в 10 поднять.

В Microsoft будут и дальше врать себе и людям, что решения, которые они принимают автоматически становятся верными на долгие годы. Один раз мы уже видели, как эта махина начала разворачиваться. После провала с Vista, компания пересмотрела очень многие вещи. Windows 7 - это не просто исправление багов в Vista, это исправление багов в головах руководств акомпании. Особенно смешно было смотреть, как люди врут, что Vista - это супер, Vista - это лучшая ОС, и одновременно делают говорят, что вот в новой ОС будет не как в Vista, потому что мы ошибались.

Но PowerShell показывает, что багов в головах ещё слишком много, а привычка врать никуда не делась. Продукты попрежнемы выходят недоделаными. Дверь мы поставим, а дверную ручку сделать не успеем, и будем делать вид, что дверных ручек в природе и не существует. Ну ничего, конкуренты помогут Microsoft, клиенты ведь знают, что двери нужны ручка и пойдут к компании, у которой они будут. Даже если сами двери будут похуже.

P.S. я изучение PowerShell бросать не буду. Фактически, это единственная вышедшая за пределы прототипа реализация консоли, кроме консоли nix.
Консоль с объектами, со связкой с языками программирования и системными API.
Консоль со встроенными средствами для создания графических приложений.
Консоль, где можно выстраивать столь любимые мною цепочки методов
$a.ToLower().StartsWith("script")

Link3 comments|Leave a comment

Active Directory DNS ошибка 4515 [05.03.2012|13:16]
[Tags|, , ]

В логах DNS на контроллере Active Directory нашлась ошибка 4515. Статья Event ID 4515 is logged in the DNS Server log in Windows Server 2003 сообщила, что есть несколько копий зоны в разных ветках базы AD. Надо оставить только один экземляр. Вопрос, как определить, где удалять, где оставить.

Есть несколько мест, где может лежать зона (если она лежит в базе Active Directory):
contoso - это для примера, подробнее смотреть статью по ссылке выше.
1 - DC=contoso,DC=com and double-click CN=System.Double-click CN=MicrosoftDNS
2 - DC=DomainDNSZones,DC=contoso,DC=com. In the console tree, double-click DC=DomainDNSZones,DC=contoso,DC=com
3 - DC=ForestDNSZones, DC=contoso, DC=com.Double-click CN=MicrosoftDNS

Теперь открываем свойства зоны (в консоли управления DNS щёлкаем правой кнопкой по зоне и выбираем свойства). Там будет примерно такой выбор широты репликации зоны:
  1. All DNS servers in the Active Directory forest – реплицирует  на  все DC в лесу Active Directory
  2. All DNS servers in the Active Directory domain – реплицирует на все DC в текущем домене Active Directory
  3. All domain controllers in the Active Directory domain – Если есть необходимость использовать DNS сервера под управлением Windows 2000
  4. All domain controllers in a specified application directory partition – Можно создать раздел приложений в Active Directory и настроить его только на нужных DC в лесу. В таком случае репликация  будет проходить только между DC, в которых этот параметр задан вручную.
Выбранный вариант широты репликации и определяет раздел AD, где на самом деле должна лежать зона.
Если All domain controllers in the Active Directory domain, то это место № 1.
Если All DNS servers in the Active Directory domain, то это место № 2.
Если All DNS servers in the Active Directory forest, то это место № 3.
Остальные дубликаты нудно удалить.Только аккуратнее, скорее всего актуальная и наиболее полная версия зоны лежит в неправильном месте и если вы сразу удалите, то потеряете часть записей.
LinkLeave a comment

Windows Server и несколько имён [05.03.2012|12:38]
[Tags|, ]

Захотелось дать серверу под управлением Windows Server 2008 несколько имён. Завёл в DNS несколько CNAME записей. Но по ним не мог получить доступ к общим папкам. Оказывается, всё не так просто. Надо редактировать реестр. Опять, блин.

How to Configure Windows Machine to Allow File Sharing with DNS Alias
LinkLeave a comment

(no subject) [23.02.2012|23:10]

Если вы думаете, что open source - это лёгкий способ выстрелить себе в ногу, то попробуйте Microsoft SQL Server.

Link3 comments|Leave a comment

Spamd bayes создал кучу мусорных файлов [10.02.2012|16:01]
[Tags|]

Spamassassin демон spamd создал в своей папке в /var разделе кучу файлов bayes_toks.expire${number} и bayes.lock.${hostname}.${number}

/var/spool/spamd

В интернете пишут:


This is being caused because the Bayes auto-expire takes too long to run and is being killed. Check your mail logs for “SpamAssassin timed out and was killed” messages, this indicates the kill.

Possible solutions;

  • You could resolve this by increasing the Spamassassin Timeout in MailScanner.conf. I do not recommend this, as you never know how long it will run (it can really take long) and end up with the same problem sooner or later.
  • Run sa-learn as a daily cron;
    0 0 * * * /usr/bin/sa-learn --force-expire
    Disable auto expire in /etc/MailScanner/spam.assassin.prefs.conf(bayes_auto_expire 0)
    This proved to be the best solution.

The bayes_toks.expire* files are orphaned files because of the sa-learn process being killed. They willnot be removed by running sa-learn! Remove them manually.

http://blog.connexeon.com/sysadmin/linux/mailscanner-spamassassin-fills-disc-with-bayes_toksexpire-files/

Удалил эти файлы, занёс sa-learn в cron и отключил в конфиге автоматическую очистку.
Помогло.

LinkLeave a comment

Слушаю с удовольствием [09.02.2012|23:18]
[Tags|]

"Осенью 2011 года ум, честь и совесть московской альтернативной сцены - группа "Мои ракеты вверх" - шумными концертами отметила свое десятилетие и ушла в бессрочный творческий отпуск. Пока перспективы самих "ракет" выглядят туманными, басист группы Алексей Гончаров все же не оставил занятия музыкой и записал дебютный сольный сингл, который и представляет на "Ленте.ру"."

http://lenta.ru/audio/goncharov/
LinkLeave a comment

Релиз с исправлениями ошибок [25.01.2012|18:53]
[Tags|]

Разработчики PHP нормально так поправили код:

In /[svn]/php/php-src/branches/PHP_5_3/main/main.c
*revision 319750, line 602:
    error_time_str = php_format_date("d-M-Y H:i:s", 11, error_time, 1 TSRMLS_CC);

*revision 319823, line 602:
    error_time_str = php_format_date("d-M-Y H:i:s e", 13, error_time, 0 TSRMLS_CC);


Благодаря этому в версии 5.3.9 error_log внезапно стал писаться, игнорируя настройки часового пояса, т.е. всегда в UTC.
Голосуем за исправление ошибки и тихо материмся.
LinkLeave a comment

Параметры сборки Python [23.01.2012|12:57]
[Tags|, ]

Я как-то писал об ужасе, с которым сталкивается программист на Python при попытке скачать файл по http закрытый basic authentication.

Оказалось, что проблема не только у меня. Bolk выложил ссылку на презентацию с описанием слабых мест Питона. Там и urllib пинается и ужасы установки и удаления модулей, subprocess. Установка/удаление модулей - область, которая для меня вообще чёрны ящик, спасают пакетные менеджеры ОС. Subprocess тоже "удостоился" записи в закладках. Хрен запомнишь, как с его помощью выполнить простейшую команду.

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

Ну и как раз юллюстрация на тему близости к народу. Информация о параметрах сборки программы, очень важна для системного администратора. К сожалению не все разработчики об этом помнят. Вот Игорь Сысоев сам много админил, поэтому:

[user@bsd ~]$ nginx -V
nginx version: nginx/0.8.54
TLS SNI support enabled
configure arguments: --without-http_scgi_module --without-http_uwsgi_module
 --prefix=/usr/local/etc/nginx --with-cc-opt='-I /usr/local/include'
 --with-ld-opt='-L /usr/local/lib' --conf-path=/usr/local/etc/nginx/nginx.conf
 --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid
 --error-log-path=/var/log/nginx-error.log --user=www --group=www
 --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
 --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
 --http-proxy-temp-path=/var/tmp/nginx/proxy_temp
 --http-scgi-temp-path=/var/tmp/nginx/scgi_temp
 --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi_temp
 --http-log-path=/var/log/nginx-access.log --with-http_flv_module
 --with-http_random_index_module --with-http_realip_module --with-http_ssl_module
 --with-http_stub_status_module
 --add-module=/var/tmp/ports/usr/ports/www/nginx/work/nginx_upload_module-2.2.0
 --add-module=/var/tmp/ports/usr/ports/www/nginx/work/nginx_uploadprogress_module-0.8.2
 --with-pcre

А Гвидо не админил:
[user@bsd ~]$ python -c 
"import distutils.sysconfig;print(distutils.sysconfig.get_config_var('CONFIG_ARGS'));"

'--with-threads' '--enable-unicode=ucs4' '--disable-ipv6' '--prefix=/usr/local'
 '--mandir=/usr/local/man' '--infodir=/usr/local/info/' '--build=amd64-portbld-freebsd7.2'
 'build_alias=amd64-portbld-freebsd7.2' 'CC=cc'
 'CFLAGS=-O2 -fno-strict-aliasing -pipe -march=nocona ' 'LDFLAGS= -pthread' 'CPPFLAGS=' '
 CPP=cpp'

Еле нашёл эту магическую команду. Иерархия и структурирование - хорошо, но к народу надо быть ближе.
import distutils.sysconfig
print(distutils.sysconfig.get_config_var('CONFIG_ARGS'))
LinkLeave a comment

История группы wheel в FreeBSD [12.12.2011|16:17]
Originally posted by [info]mitlas at История группы wheel в FreeBSD
Почему в FreeBSD административную группу назвали именно wheel?

Имя wheel было аналогом учетной записи root в ОС TOPS-20 (она же Tenex для DEC PDP-10)[1]. И пришло это название из разговорного английского: wheel = big wheel = важный человек (from slang "big wheel" for a powerful person).

1. "UNIX. Руководство для системного администратора, третье издание". Примечание на стр. 101.
LinkLeave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]