полезное по линуксу и iphone собрано все интересное мне лично (методом copy-paste из инета и не пыхтите насчет копирайта я ссылки на источник ставлю)

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

Репликация MySQL на уже работающем сервере


В интернете есть достаточно много хаутушек про настройку репликации. Как подключить slave для уже работающего сервера с данными инструкции тоже есть. Но я не смог найти такую инструкцию, которая бы соответствовала современным особенностям и полностью меня устроила. Пришлось разобраться самому.
При использовании описанного ниже подхода стоит рассчитывать на даунтайм основного сервера на время его перезапуска. В примере использовался сервер под управлением Ubuntu и MySQL 5.0 из основного репозитория с настройками по умолчанию. Я исходил из того, что реплицировать нужно все базы данных, за исключением системных.
На главном сервере.
Надо поправить файл /etc/mysql/my.cnf:
[mysqld]
# Необходимо открыть доступ к серверу по сети,
# что бы slave имел возможность подключиться
# и не забыть закрыть этот доступ, например файрволом, для тех, кому он не нужен
bind-address            = 0.0.0.0
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
# Исключим ненужные БД
#binlog_do_db           = include_database_name
binlog_ignore_db        = information_schema
binlog_ignore_db        = mysql
binlog_ignore_db        = test
# Это рекомендуется для более стабильной работы репликации баз на InnoDB
innodb_flush_log_at_trx_commit=1
sync_binlog=1
Перезапускаем mysql:
/etc/init.d/mysql restart
Выдаем slave права на репликацию:
mysql -u root
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'10.0.0.2' IDENTIFIED BY 'slave_password';
FLUSH PRIVILEGES;
Посмотреть статус можно командой:
SHOW MASTER STATUS;
+------------------+----------+--------------+-------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB              |
+------------------+----------+--------------+-------------------------------+
| mysql-bin.000015 |       98 |              | information_schema,mysql,test |
+------------------+----------+--------------+-------------------------------+
1 row in set (0.00 sec)
Далее делаем дамп существующих баз данных. Ключи –single-transaction –master-data –flush-logs должны глобально заблокировать на время дампа базу данных на запись и вписать в дамп номер и позицию лога, с которых надо начать репликацию на slave. Это обеспечит точность совпадения данных на главном и slave серверах, даже если с главным сервером в этот момент идет работа и записываются данные.
mysqldump -u root --single-transaction --master-data --flush-logs --databases db1 db2 db3 > ALL_DB.sql
Если посмотреть внутрь ALL_DB.sql, то там должна присутствовать строка:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=98;
Далее копируем дамп на slave:
scp ALL_DB.sql 10.0.0.2:
Продолжаем на втором сервере.
Убеждаемся что там нет остатков настроек репликации, в принципе, если на сервере нет нужных данных, не помешает переустановить mysql с очисткой папок БД.
Так как начиная с версии MySQL 5.2 параметры доступа для репликации убираются из my.cnf сразу перейдем на использование такой схемы.
Правим файл /etc/mysql/my.cnf:
[mysqld]
# ID slave должен отличаться от главного сервера
server-id               = 2
replicate-ignore-db     = information_schema
replicate-ignore-db     = mysql
replicate-ignore-db     = test
relay-log               = /var/log/mysql/mysqld-relay-bin.log
Перезапускаем сервер:
/etc/init.d/mysql restart
Поправим файл ALL_DB.sql:
Дописываем к строке
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=98;
параметры доступа:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=98, MASTER_HOST='10.0.0.1', MASTER_USER='replication',
MASTER_PASSWORD='slave_password', MASTER_CONNECT_RETRY=60;
Загружаем данные:
mysql -u root < ALL_DB.sql
Проверяем состояние репликации, она НЕ должна быть запущена (Slave_IO_Running, Slave_SQL_Running: no, no):
mysql -u root
show slave status;
Запускаем репликацию (теперь должно быть Slave_IO_Running, Slave_SQL_Running: yes, yes):
START SLAVE;
show slave status;
Для проверки можно попробовать перезапустить mysql и проверить состояние репликации еще раз:
/etc/init.d/mysql restart
mysql -u root
show slave status;
Остается по желанию проверить репликацию, создав, например, тестовую таблицу или добавив данные в существующую и убедиться, что изменения отразились на slave.
Кстати, базы, которые будут созданы после запуска репликации тоже должны среплицироваться. То есть, в идеале, данное решение не требует подстройки, если у вас меняются, добавляются или удаляются базы данных.

вторник, 9 марта 2010 г.

CDP(Cisco Discovery Protocol) на Linux



CDP(Cisco Discovery Protocol) на Linux

Всем известно про замечательный протокол CDP (Cisco Discovery Protocol) для Cisco. Оказывается что и для Linux тоже есть возможность использовать его прелести. Есть проект LLDP, который нам в этом и поможет.

Для тех, кто не в кусре: на cisco можно посмотреть соседей с включенным CDP коммандой sh cdp nei. Комманда выведет оборудование которое подключено, на каком порту и т.д., более подробно sh cdp ent Device_ID, уже по конкретному девайсу.

Так вот, мы сейчас попробуем включить это и в Linux, в данном, конкретном случае, настраивать будем на CentOS 5.4, на Debian-подобных дистрах почти тож самое, за исключением процесса сборки и расположения файлов.


Для начала скачаем src.rpm, установим его:
# rpm -Uhv lldpd-0.4.0-1.fc10.src.rpm
появится файл спецификаций /usr/src/redhat/SPECS/lldpd.spec, кому нужно, может его править по своему усмотрению, если надо.
Далее нам собственно надо собрать сам пакет:
# rpmbuild -bb /usr/src/redhat/SPECS/lldpd.spec
устанавливаем вновь собранный пакет:
# rpm -Uhv /usr/src/redhat/RPMS/i386/lldpd-0.4.0-1.i386.rpm
настраиваем опции запуска демона, открываем файл:

# vim /etc/sysconfig/lldpd

и правим

OPTIONS=”-v -c”

-v – включаем поддержку vlan если они у Вас есть на машине с Linux

-c – включаем протокол CDP

более подробную информацию можно посмотреть по man lldpd

запускаем демон:

# /etc/init.d/lldpd start

после запуска, в файле /var/log/messages мы увидим приблизительно такие строки:

lldpd[30206]: lldpd_decode: switching to CDPv2 on port eth1
lldpd[30206]: lldpd_decode: switching to CDPv2 on port eth0


всё в порядке, демон стартанул.

Чтоб все работало, на оборудовании с другой стороны, на порту, должен быть включен CDP, то есть не должно стоять no cdp enable на интерфейсе.

Собственно, осталось только проверить как все работает и получить информацию.

# lldpctl

получаем:
--------------------------------------------------------
LLDP neighbors
--------------------------------------------------------
Interface: eth0
ChassisID: sw-b-48 (local)
SysName: sw-b-48
SysDescr:
cisco WS-C2960-48TT-L running on
Cisco IOS Software, C2960 Software (C2960-LANBASE-M)
Copyright © 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen
MgmtIP: 172.16.25.48
Caps: Bridge(E)
PortID: FastEthernet0/4 (ifName)
PortDescr: FastEthernet0/4
--------------------------------------------------------

видим, что на другой стороне у нас свитч C2960, версию IOS, порт свитча, к которуму подключена машина с Linux.

Для остроты ощущений, посмотрим вывод на cisco, у нас там появилось:

my.linux.machine
Fas 0/4 92 R Linux eth0


то есть, опять таки, видим, что у нас на порту fa0/4 подключена машина с Linux, сетевое имя машины, и её сетевушка eth0.

Добавлю: можно установить демон из сорсов самому, но в моем случае это не true-way, все должно быть упорядочено. В Debian-подобных дистрах, файл настройки демона расположен в /etc/default/

стоит отметить еще утилиту cdpr, но с её помощью можно только получать информацию по CDP, а не обмениваться ей, для RH-дистров она есть в репозитарии rpmforge.

Вот и все. Удачи в настройках.

Взято здесь

Vuurmuur — боевые коты на страже вашей сети


Vuurmuur — боевые коты на страже вашей сети

image

Vuurmuur — за таким «кошачьим» именем скрывается довольно мощная GUI надстройка для iptables. Основным отличием от других iptables-надстроек является наличие консольного интерфейса написанного на Ncurses. Поэтому администрирование всё также легко возможно посредством SSH или консоли. Vuurmuur умеет работать с шейпингом, поддерживает функции мониторинга трафика, ведёт отдельные логи, прекрасно работает как на 2.4 так и на 2.6 ядрах и даже «говорит» на русском.



Возможности


Администрирование

  • как всегда — знания iptables не требуются. Совсем :)
  • понятный обычному человеку синтаксис правил
  • шейпинг
  • Ncurses GUI, нет необходимости в X Window.
  • легкое перенаправление портов
  • легкая настройка NAT
  • безопасная политика по-умолчанию
  • полное управление через ssh или консоли (в том числе через PuTTY для Windows)
  • скрипты для интеграции с другими инструментами
  • возможность сборки bash-скрипта для установки правил iptables на системе без vuurmuur
  • средства противодействия IP-спуфингу
  • возможность обрыва нежелательных соединений
  • работа со Snort с помощью QUEUE или NFQUEUE
  • поддерживаемые языки: английский, немецкий, норвежский, французский, голландский, португальский и русский
  • понятная и удобная справка на русском

Мониторинг

  • удобный просмотр логов в реальном времени
  • удобный просмотр соединений в реальном времени
  • фильтрация при просмотре логов
  • базовый подсчёт трафика
  • поиск по старым логам

Учёт

  • аудит: все изменения записываются
  • запись всех новых соединений и подозрительных пакетов
  • подсчёт трафика

Установка


Gentoo

emerge -av layman
layman -f && layman -a sunrise
ACCEPT_KEYWORDS="~ARCH" emerge -av net-firewall/vuurmuur


Debian/Ubuntu

#Debian
echo "deb ftp://ftp.vuurmuur.org/debian/ etch main" >> /etc/apt/sources.list
#Ubuntu
echo "deb ftp://ftp.vuurmuur.org/ubuntu/ feisty main" >> /etc/apt/sources.list

apt-get update
apt-get install libvuurmuur vuurmuur vuurmuur-conf


Для любителей ручной установки: deb-пакеты лежат на официальном FTP

Картинки


Просмотр логов

image

Просмотр соединений

image

Просмотр трафика

image

Правила

image

Шейпинг

image

Мультики


Добавление интерфейса
Добавление зоны
Добавление правил
Добавление хоста
Добавление перенаправления
Добавление службы

 Взято здесь