Балансування навантаження з допомогою Nginx

Переклад статті Use Nginx for Proxy Services and Software Load Balancing

Серед додаткових особливостей nginx є можливість використання його як проксі (front end proxy) для передачі запитів на інші веб-сервери, Nginx також може виступати в якості Front end інтерфейсу для кластеру з серверів і навіть для балансування навантаження (load balancer).

Розглянемо наступні витримки конфігурації, які описують кластер appcluster:

Уривок файлу : nginx.conf

http {
  # [...]

  upstream appcluster {
     server lollipop.ducklington.net:8801;
     server lollipop.ducklington.net:8802;
     server lollipop.ducklington.net:8803;
     server lollipop.ducklington.net:8804;
     server simons.ducklington.net:8801;
     server simons.ducklington.net:8802;
     server simons.ducklington.net:8803;
     server simons.ducklington.net:8804;
     }

  # [...]

  server {
    listen 21.43.56.87:80;
    server_name ducklington.org www.ducklington.org;

    location / {
       proxy_pass  http://appcluster;
       }
    }

    # [...]
  }

У цьому прикладі ми описали просте балансування по принципу round-robin за допомогою директиви upstream.

Всередині цього блоку ми описали вісім серверів, кожен з яких працює на різних хостах і портах.
Конфігурація блоку upstream повинна бути разташована на початку блоку http конфігураційного файлу nginx.conf.

Сервери, що працюють на портах з 8801 по 8804 на хостах lollipop.ducklington.net і simons.ducklington.net отримають одинакову кількість запитів направлених в блок appcluster.

В блоці server Nginx налаштований для прослуховування запитів на певну IP-адресу і порт (наприклад, 21.43.56.87 і 80), і відповідати на запити до доменів ducklington.org і www.ducklington.org.

Усі запити про виділення ресурсів у цьому домені (наприклад, /) будуть передані у http://appcluster, який описаний в директиві upstream.

Читати далі

Не пускает анонима на сервер Proftpd

Поставил Proftpd, сконфигурил…. а он взял и начал ругаться на недоступность папки для анонимного пользователя Ноя 08 18:55:03 localhost proftpd[29469] 127.0.0.1: ProFTPD 1.3.3c (maint) (built Пнд Ноя 8 2010 18:47:55 EET) standalone mode STARTUP Ноя 08 18:55:12 localhost proftpd[29481] 127.0.0.1 (10.0.1.100[10.0.1.100]): FTP session opened. Ноя 08 18:55:12 localhost proftpd[29481] 127.0.0.1 (10.0.1.100[10.0.1.100]): ftp: Directory ~/ is … Читати далі

Работа с Postgresql: настройка, масштабирование

Книга Работа с Postgresql: настройка, масштабирование является справочным пособием по настройке и масштабированию Postgresql. В книге иследуются вопросы по настройки производительности Postgresql, репликации и кластеризации. Изобилие реальных примеров позволит как начинающим, так и опытным разработчикам быстро разобратся с особенностями масштабирования Postgresql для своих приложений. http://postgresql.leopard.in.ua/ ссылка на книгу если с сайта не грузится postgresql

Правила Rewrite для поддержки ЧПУ на серверах под управлением Nginx для DLE

После перехода на с Apache на связку Nginx+spawn-cgi у меня некоректно запустились сайті на DLE. Причем проблемы была именно в ссылках ЧПУ. Обычные ссылки newsid=xxx прекласно работали. Решение проблемы В конфиге Nginx вместо : # if (!-e $request_filename) { # rewrite ^(.+)$ /index.php?q=$1 last; Вставляем такой код: rewrite ^/page/(.*)$ /index.php?cstart=$1 last; rewrite ^/([0-9]+)/([0-9]+)/([0-9]+)/page,([0-9]+),([0-9]+),(.*).html(/?)+$ /index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 last; … Читати далі

Проблема с нумерацией сетевых интерфейсов в Gentoo

В случае если менять сетевые интерфейсы на системе с генту ( как вариант замена сгоревшей), то следующая новая сетевая карта получит индекс на единицу больший. Но иногда это не оправдано, когда в системе 3 сетевые карты, а вы заменили 2 из них… в итоге получаем : eth1,eth3,eth4 … не очень удобно и не практично. Чтоб … Читати далі

Устанавливаем плагин Java в Gentoo

Для запуску Java коду на системі Gentoo ви повинні мати JRE (Java Runtime Environment) встановлений. Перш ніж йти далі, слід зазначити, що це буде працювати тільки з 32-розрядної версії Firefox. Це тому, що бінарний пакет JRE тільки у 32-бітному виконанні отже, несумісний з 64-розрядною версією Firefox. Якщо ви працюєте в 64-бітнії системі переконайтесь, що ви … Читати далі

Осваиваем Git

Никогда не пользовался системами контроля версий, так как мало что творю на языках программирования, а скрипты можно просто хранить в папочке.
Ну и вот решил попробовать хранить скрипты (и не только) в каком-то хранилище, но при этом упустить освоение SVN И CVS, а сразу приступить к Git’у , так как мы не исчем легких путей 🙂

Для начала создаем собственный репозиторий с проэктом, который будет находится не на локальной машине, а где-то в сети.
Пишу по мотивам статьи How to set up your own private Git server on Linux
Сервер и клиенты (в основном) работают под управлением Gentoo.
Итак приступим.
Для начала добавим свой публичный ключ на сервер

cd ~/.ssh
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub 'user'@'server':.ssh/authorized_keys

Теперь мы можем зайти по SSH на наш сервер и установить Git:

ssh 
ACCEPT_KEYWORDS="~amd64" USE="bash-completion cvs subversion" emerge -av git

Теперь добавим пользователя

useradd -d /home/git -m -s /bin/bash git

Теперь вам нужно добавить свой публичный ключ для пользователя Git

mkdir /home/git/.ssh
cp ~/.ssh/authorized_keys /home/git/.ssh/
chown -R git:git /home/git/.ssh
chmod 700 !$
chmod 600 /home/git/.ssh/*

Читати далі

Blacklist в Asterisk

Допустим нужно, чтоб определенный список людей попадал сразу в отдел продаж минуя IVR. Реализация такой схемы: [incoming] exten => s,1,LookupBlacklist(j) ;проверка на наличие номера в базе, j – переход на приоритет n+101 exten => s,2,Goto(ivr,s,1) exten => s,102,Dial(SIP/1234,60,tT) exten => s,103,Hangup Добавление номера в базу данных происходит таким образом: asterisk -rx “database put blacklist 0442223344 … Читати далі