Yvision.kz
kk
Разное
Разное
399 771 постов41 подписчиков
Всяко-разно
1
04:44, 26 апреля 2016

Простой Web кластер для сайта

Понадобилось посмотреть как работает веб кластер. Я буду ставить nginx как балансер и apache веб сервера. Схема работы примерно будет такая:

Blog post image

На первый раз обойдусь без БД MySQL и централизованного хранилище.

Далее все будет усложняться)

 

Краткое содержание:

1. Вводные данные

2. Прописываем имена хостов

3. Настройка балансировщика СЕРВЕР 1/192.168.0.25

4. Настройка сервер №2/192.168.0.26 и сервер №3/192.168.0.27

5. Проверка

 

1. Вводные данные

Дано три сервера:

1. Балансировщик NGNIX | ИМЯ ХОСТА - sloadbal01.asia.local | 192.168.0.25

2. Веб сервер Apache1 | ИМЯ ХОСТА - swebapp01.asia.local | 192.168.0.26

3. Веб сервер Apache2 | ИМЯ ХОСТА - swebapp02.asia.local | 192.168.0.27

Пока что сделаем простую балансировку с тестовым сайтом (Hello World).

4. Гипотетическое имя сайта - www.asia.local

 

2. Прописываем имена хостов

Откроем файл /etc/hosts на балансировщике:

# vi /etc/hosts

И впишем туда хосты:

192.168.0.25 sloadbal01.asia.local      nball1

192.168.0.26 swebapp01.asia.local       apache1

192.168.0.27 swebapp02.asia.local       apache2

3. Настройка балансировщика СЕРВЕР 1/192.168.0.25

Установка NGINX - Вариант 1:

# yum -y install epel-release

# yum -y install nginx

Установка NGINX - Вариант 2:

Создаем файл nginx.repo

# vi /etc/yum.repos.d/nginx.repo

И добавляем туда текст:

[nginx]

name=nginx repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=0

enabled=1

Сохраняем его.

# yum -y install nginx

 

Сохраняем оригинальный конфигурационный файл nginx:

# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.orig

Редактируем новый конфиг файл NGINX, добавляем в конец файла настройки:

# vi /etc/nginx/conf.d/default.conf

upstream website1  {
ip_hash;
server swebapp01.asia.local weight=1;
server swebapp02.asia.local weight=1;
}

И добавляем после головную настройку:

server {
listen 80; # Listen on the external interface
server_name  www.asia.local;
location / {
proxy_pass  http://website1;
}
}
 

Настройка сервер №2/192.168.0.26 и сервер №3/192.168.0.27

Здесь действия повторяются на двух серверах 1 и 2, за исключением HTML строчки "apache1.loadbalance.me" - наш "Hello World":

# yum -y install epel-release

# yum -y install httpd

# cd /var/www/html/

На втором веб сервере вводим команду:

# echo "<h1>apache1.loadbalance.me</h1>" > index.html     #For apache1 server

На веб сервере третьем сервере вводим команду:

# echo "<h1>apache2.loadbalance.me</h1>" > index.html     #For apache2 server

Стартуем ngnix:

# systemctl enable httpd

# systemctl start httpd

 

ПРОВЕРКА

Желательно для тестовых целей, прописать на ПК откуда будете проверятся работа балансера, хостнейм балансера в файле hosts (C:\windows\System32\drivers\etc\hosts)

В итоге я прописал:

192.168.0.25 asia.local

Далее заходим через браузер на сайт - asia.local:

Blog post image

Здесь видим, что нас перекинули на второй веб сервер веб кластера.

Если отключить данный веб сервер или его сетевой адаптер. Нас перекинет на первый веб сервер кластера:

Blog post image

И пытаемся обновить страницу (сайт тупит секунд 20) и далее открывается страница с первого веб сервера кластера:

Blog post image

Если включить сетевой адаптер второго сервера, клиента опять перекинет  на этот сервер. При чем это происходит за секунды.

Ссылки:

Load balancing web servers with nginx on CentOS 6

Веб-кластер своими руками

Building a Highly-Available Load Balancer with Nginx and Keepalived on CentOS

How to Configure Load Balancing with Nginx

«Идеальный» www кластер. Часть 1. Frontend: NGINX + Keepalived (vrrp) на CentOS

 
1
3177
2