.
14 января 2016

Быстрый файловый бэкап RSync с исключением по маске

Для локального бэкап копирования раньше использовал просто cp, сегодня переделал на rsync и понял как я был неправ ранее :)
Переделать пришлось из-за отсутствия возможности в копировании прикрутить скип-лист, куда запихать кэши, темпы и прочее «барахло»,
и помимо задуманного бонусом получил супер фишку!
rsync то, что не изменилось не копирует! соответственно процесс бэкапа ускорился в десятки раз и существенно снизилась нагрузка на дисковую подсистему, соответственно на хостинг в целом!

всё в одну строку :)
rsync --exclude-from rsync.exclude.cfg --log-file rsync.1.log -auptrgo --delete-before /source_dir /backup_dir

rsync.exclude.cfg — файлик со списком исключений
*/cache/*
*/temp/*
и т.д.

рубрики: NIX, Администрирование, Полезности | Комментарии (0)

30 марта 2015

Битрикс Превышен лимит активности — или как блокировать по User Agent

Уж не знаю чем полюбил один из моих проектов робот MegaIndex но сообщения о блокировке «На сайте ...ru посетитель превысил установленный лимит активности.» уже сильно притомили.
Если учесть, что Мегаиндек это даже не поисковик, и данные собираются роботом только для работы линк-биржи я решил полностью блокировать этого робота.
А представляется он следующим образом:
«UserAgent — Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +https://www.megaindex.ru/?tab=linkAnalyze)»
Соответственно, добавляем в nginx правило
if ($http_user_agent ~ "megaindex") {
return 503;
}

и вуаля, проверочный get запрос с UserAgent Мегаиндекса отдаёт 503ю
ч.т.д.

рубрики: Bitrix, NIX, Администрирование | Комментарии (0)

8 марта 2015

Итоги перехода с Apache на PHP-FPM

Итак, тормоза «нагнули» сервак — поисковые роботы и прочая нечисть создаёт очень нехилую нагрузку, с которой в последнее время серваку справляться всё труднее и труднее, а последние дни сообщения о недоступности сайтов просто поставили вопрос ребром.
Специфика некоторых моих проектов это несколько тысяч справочных файлов, и всё это реализовано на связке nginx + apache.
После изучения нескольких хороших статеек (в конце поста приведу ссылки) и неудачной попытки задействовать кэширование NGINX (разбираться с этим не стал, т.к. нашел более правильное решение проблемы) я понял, что самые тормоза — из-за allow override индейца! без которого реврайты htaccess не работают. Собственно, при любом обращении к сайту индеец перечитывает всю файловую структуру — а это с моими тысячами файлов — полная засада. Умножаем количество запросов на несколько десятков в минуту — получаем ступор всего сервака.
Единственное правильное решение — переход на fastcgi, в лице php-fpm, который не обрабатывает htaccess (при этом все правила переносятся «руками» на уровень фронтенда т.е. nginx сервера).
Правда и тут не без подводных камней — немного пришлось переписать движек сайтов т.к. реврайт nginx-a несколько другой по сравнению с реврайтом на htaccess в плане передачи заголовков php.
Тут большое спасибо ребятам с форума php.ru за помощь в моей ветке.
При обработке текущего положения нужно использовать ТОЛЬКО параметр REQUEST_URI — остальные, по крайней мере у меня, не передаются! вернее передаётся фактический обработчик index.php

После перехода на Fast-CGI страничка начала отдаваться где то в 20 раз быстрее, и нагрузка на сервер спала пропорционально. Сообщения о недоступности сайтов сошли на нет.

Цель достигнута!

Хорошие статейки:
Почему NginX с Fast-CGI быстрее, чем Apache с mod_php?
Попытка номер раз создать почти идеальный htaccess
Один конфиг Nginx для работы с кучей разных сайтов
Установка nginx, php-fpm и mysql на CentOS
ngin+php-fpm делаем веб-сервер под высокую нагрузку

Отдельно выделю очень хорошую статью на счёт кэширования nginx
у меня вроде завелось, но почему-то через часок другой, решение падало — может файла слишком у меня много — незнаю, но статья отличная — факт.

Прозрачное кэширование в nginx для всех и каждого

P.S. Ещё 2 проблемы было — не передавался GET в несуществующий php и не уходила почта
первое решилось добалением $is_args$args; в try_files
try_files $uri /index.php$is_args$args;
второе — указание sendmail_path в php-fpm.conf (сразу там до кучи путь для сессий поправил)

<Постовой>
Интернет аптека — индийские препараты для потенции — дженерики известных брендов таких как Виагра, Сиалис, Леветра ... а так же множество других препаратов для потенции, в том числе на травах.

рубрики: NIX, Администрирование, Полезности | Комментарии (0)

27 февраля 2015

Увеличение размера системного раздела в CentOS

Итак, имеется виртуальная машина Bitrix под VMWare на которой хотелось бы докинуть 8 Гигабайт под системный раздел.

Первое — добавим нужные гигабайты на диск непосредственно в гипервизоре и перезагрузим машину, далее нужно перераспределить место непосредственно в CentOS.

Начальная ситуация
df -B G

0

fdisk -c -u /dev/sda команда p

1

Будем делать вручную, используя fdisk удалим существующий раздел и создадим на его месте новый, требуемого размера. Для этой операции не надо размонтировать раздел, не надо загружаться с rescue образа, данные файловой системы также не будут утеряны. Мы просто перепишем одну строку в таблице разделов, после перезагрузки CentOS примет ее к сведению. (оригинал статьи для типа раздела раздела 8E — Linux LVM)

Запускаем fdisk -c -u /dev/sda, вводим команду p — в моём случае нужно изменить раздел sda3 (третий по порядку)
Удаляем его командой d
Создаём новый командой n (при создании система сама предложит правильные начальный и конечный сектора)
Записываем таблицу разделов командой w выходим q и перезагружаем ОС.

3

В моём случае тип системы ext4 — поэтому после перезагрузки просто расширяем файловую систему на всё доступное свободное пространство командой resize2fs /dev/sda3

3

Вуаля

рубрики: NIX, VM, Администрирование | Комментарии (0)

5 февраля 2015

Не работает BASH скрипт выполняемый по CRON

Итак — настроил файловую синхронизацию по RSYNC — запихал в скрипт — всё синхронизится, всё устраивает.
Сам скрипт поставил в крон и успокоился... а зря !
Оказывается скрипт по времени запускался, но сама синхронизация нет!!!
В итоге разборок получилось, что переменные окружения при запуске через CRON для пользователя не подгружаются!
Соответственно, система не находила rsync и скрипт не работал!!!
Прописал абсолютные полные пути — всё завелось, с пол-пинка.
Я с подобной проблемой уже сталкивался при отправке писем php скриптом по крону — и снова те же грабли :(
Внимание и контроль!
Внимание и контроль!
:)

рубрики: NIX, Администрирование, Полезности, Программирование | Комментарии (0)

29 января 2015

MYSQL cинхронизация баз данных

Итак, первый шаг для создания «горячей копии» виртуальной машины, физически расположенной на другом сервере — файловая синхронизация сделана (5 раз в сутки думаю достаточно) — см. предыдущий пост.
Второй шаг для достижения цели — онлайн репликация MYSQL баз данных.
(преследуемая цель: если первый сервер умирает — перебиваем IP в запасной виртуалке, выключаем slave в MYSQL и вуаля — с минимальными затратами во времени и без потерь поднимаем рабочий сервер).

Сразу оговорюсь, что физические сервера у меня находятся в одной физической сети — соответственно я назначил каждой виртуалке свой IP адрес сети класса С/24 192.168.100.ххх
Практически всю информацию для репликации я взял из статьи

НА МАСТЕРЕ добавляем в конфиг my.cnf секция mysqld и рестартим mysql

server-id = 1
log-bin = /var/lib/mysql/mysql-bin
replicate-do-db = testdb

Далее, несколько запросов в БД (сбрасываем кэш, блокируем таблицы)
flush logs;
reset master;
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
show master status;
Бэкапим данные для переноса на слейв + переписываем название файла и циферку (то, что show master status выдал)
Разблокируем таблицы
SET GLOBAL read_only = OFF;
UNLOCK TABLES;

НА СЛЕЙВЕ правим конфиг и рестартим mysqld
server-id = 2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
replicate-do-db = testdb

Выполняем MYSQL запросы (название файла и позицию берём из show master status на мастере)
CHANGE MASTER TO MASTER_HOST = "192.168.1.101 ", MASTER_USER = "replication ", MASTER_PASSWORD = "password ", MASTER_LOG_FILE = "mysql-bin.000003 ", MASTER_LOG_POS = 98;
start slave;

Проверяем как пошло
show slave status;

Лично у меня какие то дубликаты всплыли при первой синхронизации, что недавало дальше синхронизировать
для решения проблемы добавил slave-skip-errors = 1062 в конфиг

Если нужно заново стартануть — делаем всё тоже самое, но на слейве сначала нужно выполнить
stop slave;
flush logs;
CHANGE MASTER TO ...
start slave;

Проверим «руками» — правим значение в какой нить таблице на мастере, смотрим изменилось ли на слейве.

P.S.
Немного о 'подводных' камнях:
Настраивал на виртуалках с 2мя разными средами (FreeBSD, CentOS) — на каждой столкнулся с проблемой видимости порта 3306 извне, поэтому некоторые моменты:
* iptables
* для диагностики на мастере netstat -ln | grep mysql
* для диагностики со слейва на мастер telnet master 3306
* комментируем bind-address на мастере
* комментируем skip-networking на мастере
* ну и следим за синтаксисом, логинами и паролями :) (ошибся в пароле в CHANGE MASTER TO ... — долго парился пока заметил)

P.P.S
О контроле размера бинарных файлов тут http://forum.hostdvor.com/viewtopic.php?p=132
я поставил SET GLOBAL expire_logs_days =2

рубрики: NIX, Администрирование, Программирование | Комментарии (0)

27 января 2015

rsync — удалённая синхронизация файлов

Итак, развивая поставленную перед собой задачу по созданию горячей резервной копии виртуальной машины я начал с файловой синхронизации.
Сначала решил задачу в лоб — ищем изменённые через find -mtime — пакуем, закидываем на фтп, в нужном месте разворачиваем.
Но, потом обратил внимание на специализированный для этих задач софт — утилита rsync.
На серверах с сайтами, для которых необходимы горячие резервные копии устанавливаем rsync в качестве демона через xinetd, не забыв поставить его в автозагрузку.
Настраиваем конфигурационные файлы, запускаем, проверяем слушает ли демон 873й порт 'netstat -lnpt |grep 873'
Вносим его в iptables (я делаю это интерактивно webmin-ом) — проверяем удалённо либо телнетом 'telnet x.x.x.x 873', либо сразу запросив rsync-ом список ресурсов 'rsync x.x.x.x::'
Для настройки всего этого дела я использовал две отличные статьи
http://likeunix.ru/centos-rsync-backup/
http://www.stableit.ru/2010/04/rsync.html

Повторяться с настройками не буду, лишь хочу обратить внимание на некоторые настройки:
в настройки демона, файлы не подлежащие сжатию я добавил jpg картинки, т.к. они и так сжаты по формату
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.jpg *.JPG *.jpeg

в скрипте для исключения «мусора» использовал опции --exclude «*/temp/*» --exclude «*cache/*» --exclude «sess_*» --exclude «*.log» --exclude «*.gz» --exclude «*.zip»
для синхронизации удалённых файлов --delete --delete-after

рубрики: NIX, Администрирование, Полезности | Комментарии (0)

Яндекс.Метрика