пятница, 27 сентября 2013 г.

Сброс кеша записи в Google Public DNS


Если вы изменили какую-либо ресурсную запись на NS-серверах, но кеширующие рекурсоры Google Public DNS  длительное время продолжают отдавать старые записи или вы просто хотите хоть как-то ускорить этот процесс, то можно попробовать сбросить кеш рекурсоров на специальной странице: https://developers.google.com/speed/public-dns/cache
Сброс кеша одной и той же записи возможен один раз в несколько минут.
Напомню IP-адрес гугловых рекурсоров:
  • 8.8.8.8
  • 8.8.4.4
  • 2001:4860:4860::8888
  • 2001:4860:4860::8844
Информация на официальном сайте: https://developers.google.com/speed/public-dns/cache

вторник, 9 июля 2013 г.

send_arp, arping и быстрая миграция ip-адреса (IPv4)

Для того чтобы быстро мигрировать IP-адрес с сервера на сервер нужно сообщить коммутатору о необходимости изменения arp-таблицы. Наиболее простой способ без прямого взаимодействия с коммутатором (т.е. законнектиться по ssh на коммутатор и почистить ручками arp) - воспользоваться утилитами send_arp или arping. В Debian и Ubuntu пакеты называются соответственно fake и arping. С помощью них можно достаточно просто формировать и отравлять arp-запросы. arping является более простой утилитой нежели send_arp, в то время как вторая является более низкоуровневой утилитой для точного формирования arp-пакета. Для работы я предпочёл именно send_arp, т.к. она предоставляет больший контроль и не делает лишних операций.
Сама процедура миграции IP-адреса выглядит следующим образом:
  1. убираем IP-адрес на первом сервере (ip addr del x.x.x.x/yy dev ethX)
  2. поднимаем IP-адрес на втором сервере (ip addr add x.x.x.x/yy dev ethX)
  3. со второго сервера отправляем несколько специально сформированных arp-запросов
Собственно вот так выглядит команда для отправки arp-запроса с помощью send_arp:
# IP=x.x.x.x
# send_arp $IP `cat /sys/class/net/ethX/address` $IP `cat /sys/class/net/ethX/broadcast`

Суть команды: отправляем широковещательные arp-запросы самому себе (src ip = dest ip)

Для надёжности лучше отправить несколько запросов.

Ежели ваш выбор пал на arping, то выглядеть команда будет так:
# arping -U

P.S. В составе pacemaker также есть утилита send_arp, но она лежит вне $PATH, имеет другой синтаксис и используется в ресурс-агентах, каким-либо образом управляющих IP-адресами (например, ocf::heartbeat:IPaddr2)

P.P.S. Для IPv6 используются т.н. анонсы, но как правильно их отправлять - пока не разобрался (есть утилита ndsend, но она находится в пакете vzctl, который как-то совсем нет желания ставить на сервер), буду рад если напишут в комментариях :)

вторник, 4 июня 2013 г.

mdadm. Уменьшаем число устройств в массиве

При установке системы объединил 2 раздела в зеркало и обозначил 3й как spare, поставил и забыл. На следующий день приходит письмо от mdadm'a мол array degraded.... Лезу на сервер, а там в mdstat такая борода:
 md1 : active raid1 sda5[0] sdc5[22] sdb5[1]  
    976129856 blocks super 1.2 [22/3] [UUU___________________]
Ну, думаю, 22 устройства в массиве это очень круто, но надо возвращать mdadm на землю:
 mdadm /dev/md1 --grow --raid-devices=3  
Как пометить 3й диск как spare - на домашнее задание, это сразу гуглится :)

вторник, 30 апреля 2013 г.

PostgreSQL. Разные запросы дабы долго не искать.

Дабы каждый раз не вспоминать/гуглить банальные вещи  буду складывать их сюда.

Меняет последовательность для дефолтоного значения поля в таблице:
ALTER TABLE table_name ALTER COLUMN id SET DEFAULT nextval('sequence_name_seq');

вторник, 23 апреля 2013 г.

Копирование таблицы в PostgresSQL

Задача: создать таблицу table2 со структурой таблицы table1
Решение:
 create table table2 (like table1 INCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING INDEXES);  

понедельник, 8 апреля 2013 г.

Bootstrap WYSIWYG

Очень приятная штука:
http://mindmup.github.io/bootstrap-wysiwyg/

howto insert iso image [Libvirt, KVM, virsh]

So:
attach-disk domain_name /path/to/your.iso hdc --type cdrom --mode readonly

пятница, 29 марта 2013 г.

Online-инструменты работы с json

  • http://www.jsoneditoronline.org/ - редактор json-данных
  • http://www.json-generator.com/ - генератор рандомных данных на основе шаблона

PostgreSQL. Преобразование из timestamp в unix timestamp

Я думаю особо расписывать тут ничего не надо:
SELECT date_part('epoch', now())::int;

вторник, 12 марта 2013 г.

Пересборка tcpreplay в Ubuntu 12.04

Проблема: tcpprep из состава tcpreplay вываливается с "buffer overflow detected", проблема известная, но ...

Решение: пересобрать пакет с внесёнными изменениями, причём для практики соберём его по всем правилам.

Решение привожу в виде последовательности команд, надеюсь разберётесь :)

sudo apt-get build-dep tcpreplay  
apt-get source tcpreplay  
cd tcpreplay-3.4.3/  
dch --nmu # пишем в чейнджлоге что же мы изменили  
export QUILT_PATCHES=debian/patches  
mkdir debian/patches  
quilt new fix-tcpprep-crash  
quilt edit src/common/cache.c # откроется окно редактора и мы вносим изменения в код  
                              # сохраняемся и выходим  
quilt refresh   # этой командой мы и сгенерируем непосредственно патч  
cat debian/patches/fix-tcpprep-crash # посмотрите в чём же была проблема  
Index: tcpreplay-3.4.3/src/common/cache.c  
===================================================================  
--- tcpreplay-3.4.3.orig/src/common/cache.c     2009-06-25 22:45:49.000000000 +0400  
+++ tcpreplay-3.4.3/src/common/cache.c     2013-03-12 16:52:15.583306621 +0400  
@@ -170,7 +170,7 @@  
   cache_header = (tcpr_cache_file_hdr_t *)  
     safe_malloc(sizeof(tcpr_cache_file_hdr_t));  
   strncpy(cache_header->magic, CACHEMAGIC, strlen(CACHEMAGIC));  
-  strncpy(cache_header->version, CACHEVERSION, strlen(CACHEMAGIC));  
+  strncpy(cache_header->version, CACHEVERSION, strlen(CACHEVERSION));  
   cache_header->packets_per_byte = htons(CACHE_PACKETS_PER_BYTE);  
   cache_header->num_packets = htonll((u_int64_t)numpackets);  
  
  
debuild -us -uc  # соберём deb-пакет, он появится в директории уровнем выше
cd ..  
sudo gdebi tcpreplay_3.4.3-2ubuntu2.1_i386.deb # установим пакет
debdiff tcpreplay_3.4.3-2ubuntu2.dsc tcpreplay_3.4.3-2ubuntu2.1.dsc > fix-tcpprep-crash-debdiff # сгенерируем debdiff  

понедельник, 11 марта 2013 г.

Postgres-XC howto

Яндекс поиск по блогам выдал в RSS мануал по поднятию Postgres-XC: http://www.thislinux.org/2013/03/postgres-xc-cluster-setup.html

Postgres-XC - это PostgreSQL, который умеет мултимастер репликацию.

Vim. Генератор vimrc

Собственно ссылка на генератор: http://yoursachet.com/

понедельник, 4 марта 2013 г.

Удаление старых ядер и их модулей в Debian/Ubuntu

Обнаружил на днях что раздел /usr на моём рабочем ноуте занимает слишком дохрена, прошёлся по нему baobab'ом (гномовская утилита, в менюшках значится как Disk Usage Analyzer) и выяснил так много места занимают практически бесполезные модули к старым ядрам (ядер, к слову, у меня накопилось тоже не мало). В итоге пришёл к выводу что надо бы это старое барахло удалить:
$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

После этой операции у меня освободилось 3 гига

вторник, 22 января 2013 г.

Инструменты анализа сетей (AS, routing)

RIPE Routing Information Service: https://www.ripe.net/data-tools/stats/ris
AS Analysis: http://as.robtex.com/
whois -h whois.ripe.net -- '-rB ASN'

В дальнейшем список будет пополняться

вторник, 15 января 2013 г.