Наша компания обслуживает множество крупных интернет порталов различной тематики. Специфика подобных проектов подразумевает возникновение различных трудностей при росте аудитории, а значит и росте нагрузки на серверы. Один из наших клиентов активно продвигает свой видео-портал, и, как результат, нагрузка неминуемо стала расти, причем большими темпами. В какой-то момент обойтись двумя серверами стало уже невозможно и было принято решение добавить еще два. Затем еще два… в итоге серверов стало 12. Однако, нагрузка продолжает расти и одним только горизонтальным масштабированием ограничиваться нельзя. Настало время задуматься о более глубокой оптимизации.
Читать полностью »
Рубрика «Блог компании centos-admin.ru» - 7
Наш опыт оптимизации nginx для раздачи видео-контента
2013-12-30 в 8:12, admin, рубрики: linux, nginx, Блог компании centos-admin.ru, оптимизация, метки: linux, nginx, оптимизацияНаш опыт тестирования LXC (Linux Containers) на примере Debian Wheezy
2013-11-19 в 5:34, admin, рубрики: Debian, kvm, lxc, openvz, Блог компании centos-admin.ru, виртуализация, мануал, системное администрирование, метки: Debian, kvm, lxc, openvz, виртуализация, мануал Мы в компании Centos-admin следим за появлением новых технологий, тестируем их и, конечно же, внедряем. Почти на всех серверах мы используем контейнерную виртуализацию OpenVZ. В целях расширения набора инструментов, применяемых в работе, мы решили изучить и протестировать нативную виртуализацию Linux LXC.
Под катом вы найдете небольшой обзор технологии и краткий мануал по использованию LXC в Debian Wheezy и наши выводы.
Читать полностью »
Автоматическое исключение из рассылки нерабочих email адресов
2013-11-01 в 12:03, admin, рубрики: email, ruby on rails, Блог компании centos-admin.ru, Веб-разработка, рассылка, метки: email, рассылка
Представьте, что у Вас есть веб-приложение и одной из его функций является массовая рассылка новостей Вашим пользователям.
По некоторым причинам часть email адресов пользователей нерабочие или неверно заполненные. Хорошо бы таких пользователей автоматически отписать от рассылки?
Читать полностью »
Плагин синхронизации задач для redmine
2013-10-07 в 7:39, admin, рубрики: redmine, Блог компании centos-admin.ru, системное администрирование, управление проектами, метки: redmine
Продолжаем допиливать redmine под свои нужды.
В разное время для нескольких крупных (и не только) клиентов по их желанию были установлены отдельные инстансы redmine.
В основном, они используются для личных нужд клиента: управление репозиториями кода, внутренние задачи.
Но так же в этих трекерах ставились задачи и для системных администратором, то есть для нас.
Проекты росли в своем объеме и количестве, и наступил критический момент, когда сложно стало следить сразу за несколькими трекерами. В то же время, клиенту удобно пользоваться своим трекером, а идти в наш чтобы поставить задачу по администрированию лениво, да и попросту трата лишнего времени.
Ввиду такой ситуации, решили написать силами нашего ruby разработчика kanfet плагин для redmine который бы собирал задачи из всех трекеров в наш.
Под катом описана установка и работа плагина.
Восстановление данных redis
2013-07-25 в 10:53, admin, рубрики: redis, Администрирование баз данных, Блог компании centos-admin.ru, бэкап, Восстановление данных, Серверное администрирование, метки: redis, бэкап, восстановление данных Авторство статьи принадлежит нашему сотруднику Степану Карамышеву skob
Инвайта у него пока нет, потому выкладываю за него.
Далее повествование от его имени.
Данный текст не претендует на гениальность, описанные в нем методики не являются ни панацеей, ни тем более серебряной пулей. Просто в результате исследования, проведенного во время описанной ниже аварии, не было найдено ни одного источника ни на русском, ни на английском (ни, кажется, на немецком) языках, который давал бы подобную информацию. Учтите: информация предоставляется «как есть», ее использование без вдумчивого изучения может быть губительно!
Дедка за red'ку
Народная сказка
Отправка уведомлений о пропущенных звонках из Asterisk
2013-05-20 в 6:17, admin, рубрики: asterisk, Блог компании centos-admin.ru, телефония, метки: asteriskВ данном посте я расскажу вам о возможностях отправки уведомлений о пропущенных звонках с помощью Asterisk. Я постараюсь привести простые примеры конфигурации и подробнее раскрыть данную тему, далее вы можете экспериментировать по своему усмотрению или потребностям. Asterisk предлагает довольно широкие возможности для решения различных задач, поэтому одну и ту же задачу можно решать по разному, главное результат — стабильная работа ваших сервисов.
Отправка отчета о пропущенном звонке на email
Что имеем:
Входящая многоканальная линия с номером +7 (495) 1234567, IVR, 4 оператора в очереди вызова.
Задачи:
1. Отправлять отчет о пропущенном звонке, с указанием номера звонящего, времени поступления звонка и времени ожидания на линии.
2. Если абонент ждал на линии более 10 секунд и по какой-либо причине положил трубку, не дождавшись ответа оператора — отправляем отчет о пропущенном звонке.
3. Заносить в БД (в текущем примере MySQL) данные о том, какой оператор в очереди ответил звонок и фиксируем время в которое разговор был завершен.
В качестве решения приведу пример конфигурации (один из возможных вариантов решения), с комментариями на самых интересных по-моему мнению моментах.
Вот так выглядит конфигурация IVR рабочего времени + очереди вызова:
[globals]
CIDFILE=/etc/asterisk/inc-calls/call-noanswer
SQLHOST=db.domain.ru
SQLUSER=asterisksql
SQLPASS=Gt6Rju8FkS
SQLDB=asteriskdb
IVRWORK=custom/IVR_company_wav
[incoming-74951234567]
exten => h,1,Set(WAITTIME=10)
exten => h,n,Set(CTALL=$[${CDR(duration)}])
exten => h,n,Set(CTANSWER=$[${CDR(billsec)}])
exten => h,n,Set(CTDTIME=$[${CTALL}-${CTANSWER}])
exten => h,n,NoOP(${CDR(disposition)})
exten => h,n,NoOP(${CTDTIME})
exten => h,n,GotoIf($["${CDR(disposition)}" = "NO ANSWER"]?timecheck:n1)
exten => h,n(n1),GotoIf($["${CDR(disposition)}" = "BUSY"]?timecheck:n2)
exten => h,n(n2),GotoIf($["${CDR(disposition)}" = "FAILED"]?timecheck:n3)
exten => h,n(n3),GotoIf($["${CDR(disposition)}" = "ANSWERED"]?n4:misscall)
exten => h,n(n4),MYSQL(Connect connid ${SQLHOST} ${SQLUSER} ${SQLPASS} ${SQLDB})
exten => h,n,MYSQL(Query resultid ${connid} UPDATE office_calls SET active=0 WHERE asterisk_id='${QID}')
exten => h,n,MYSQL(Clear ${resultid})
exten => h,n,MYSQL(Disconnect ${connid})
exten => h,n(hang),Hangup()
exten => h,n(timecheck),GotoIf($[${CTDTIME} > ${WAITTIME}]?misscall:hang)
exten => h,n(misscall),Goto(noanswer,s,1)
exten => s,1,NoOp(${CALLERID(num)})
exten => s,n,Set(CALLID=74951234567)
exten => s,n,Set(CALLER=${CALLERID(num)})
exten => s,n,Set(__QID=${CDR(uniqueid)})
exten => s,n(begin),GotoIfTime(10:00-22:00,mon-sat,*,*?workdays:outofoffice)
exten => s,n(workdays),NoOp(Incoming CALL from ${CALLERID(num)} to ${EXTEN})
exten => s,n,Answer()
exten => s,n,ResetCDR(w)
exten => s,n,Wait(1)
exten => s,n,Background(${IVRWORK})
exten => s,n,Queue(operators,t,,,300,,startflag1)
exten => s,n,NoOp(${DIALSTATUS})
exten => s,n,Goto(noanswer,s,1)
exten => s,n,Hangup()
redmine_wiki_encryptor — плагин шифрования данных Wiki Redmine
2013-02-13 в 19:40, admin, рубрики: encryption, redmine, wiki, Блог компании centos-admin.ru, информационная безопасность, системное администрирование, метки: encryption, redmine, wiki Если вы храните конфиденциальные данные в Wiki Redmine, наверняка задумывались, что случится, если кто-то сможет получить доступ к серверу и загрузить БД.
Предлагаю вашему вниманию, разработанный нашей компанией, плагин redmine_wiki_encryptor. С помощью этого плагина Redmine будет расшифровывать на лету данные из таблиц Wiki, таким образом, даже если кто-то и получит дамп БД, без ключа ничего прочитать не сможет.
Redmine — авторизация с помощью одноразовых паролей (OTP)
2013-02-11 в 8:41, admin, рубрики: linux, otp, redmine, Блог компании centos-admin.ru, системное администрирование, метки: otp, redmine
Если вы являетесь активным пользователем Redmine, содержимое которого наверняка конфиденциально, вы наверняка задумывались над усилением безопасности приложения.
В этой статье описана процедура настройки авторизации в Redmine через одноразовые пароли (OTP) с помощью мобильного приложения Google Authenticator.
Статья описывает установку и настройку Google Authenticator, а так же плагина redmine_pam_auth для Redmine 2.2 под ОС CentOS 6.
Отдельный сервер для БД MySQL — как сэкономить трафик и ускорить приложение
2013-01-31 в 15:32, admin, рубрики: highload, mysql, Блог компании centos-admin.ru, системное администрирование, метки: highload, mysqlЕсли у вас нагруженный проект, а сервер баз данных расположен на отдельной физической машине от приложения, рекомендую включить сжатие данных между приложением и базой данных.
На картинке изображен наглядный пример графика нагрузки сети. До 18:00 сжатие было отключено, в 18:00 — включено.