Разработка программ

Двойные компьютеры Apache обеспечивают высокую доступность балансировки нагрузки

Установка apache под centos7 и автоматический запуск keepalived Учебное пособие по установке Учебное пособие по установке выше устанавливается на двух машинах отдельно [...]

Статьи

Установка Apache на CentOS 7 и автоматический запуск.

Учебное пособие по установке keepalived

Установка вышеуказанного учебного пособия устанавливает Apache и Keepalived на обеих машинах соответственно.

Конфигурация первой машины на основе Keepalived

Файл конфигурации содержит следующие элементы:

Edit / etc / keepalived / keepalived.conf

# vi / etc / keepalived / keepalived.conf, добавьте следующее

!Файл конфигурации для keepalived

global_defs {
notification_email {
admin@example.com
}
notification_email_from www.example.com
smtp_server www.example.com
smtp_connect_timeout 30
router_id linux01
}

vrrp_instance VI_1 { # Определение экземпляра
State Backup # Задайте резервную копию, а затем контролируйте, какой из них является основным по приоритету.
Интерфейс eth0
virtual_router_id 51
приоритетность 100
noppreempt # Установка этого параметра на высоком приоритете, удобная после восстановления основного
advert_int 1 # может быть автоматически
аутентификация {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.199 # Включить eth0: 0 здесь с тегом label
}
}

virtual_server www.example.com 80 { Внизу - определение LVS.
delay_loop 6
rr lb_algo
lb_kind DR
nat_mask www.example.com
Протокол TCP

real_server www.example.com 80 { Один из них - это локальный веб-сервис.
Вес 1
TCP_CHECK {
connect_timeout 3
}
}
real_server www.example.com 80 { # Другой веб-сервис
Вес 1
TCP_CHECK {
connect_timeout 3
}
}
}
Файл Keepalived для второй машины выглядит следующим образом

Edit / etc / keepalived / keepalived.conf

# vi / etc / keepalived / keepalived.conf, добавьте следующее

!Файл конфигурации для keepalived

global_defs {
notification_email {
admin@example.com
}
notification_email_from www.example.com
smtp_server www.example.com
smtp_connect_timeout 30
router_id linux02
}

vrrp_instance VI_1 { # Определение экземпляра
State Backup # Задайте резервную копию, а затем контролируйте, какой из них является основным по приоритету.
Интерфейс eth0
virtual_router_id 51
приоритетность 50
advert_int 1 # может быть автоматически
аутентификация {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.199 # Включить eth0: 0 здесь с тегом label
}
}

virtual_server www.example.com 80 { Внизу - определение LVS.
delay_loop 6
rr lb_algo
lb_kind DR
nat_mask www.example.com
Протокол TCP

real_server www.example.com 80 { Один из них - это локальный веб-сервис.
Вес 1
TCP_CHECK {
connect_timeout 3
}
}
real_server www.example.com 80 { # Другой веб-сервис
Вес 1
TCP_CHECK {
connect_timeout 3
}
}
}
После того, как файл конфигурации keepalived будет изменен, начните изменять страницу apache по умолчанию vi / opt / apache / apache-2.4.29 / htdocs / index.html, если содержимое двух файлов по умолчанию будет отличаться.

Адрес обратной связи загрузки локального устройства

Как известно, при использованииLvsРежим dr, необходимо запустить адрес обратной связи на realserver, поэтому, чтобы создать балансировку нагрузки на двух машинах, конечно же, необходимо запустить соответствующий адрес обратной связи на локальном компьютере, чтобы реализовать нужную функцию, сценарий следующий: (Снижеследующие два сценария являются оригинальными комарами, адрес сайта комаров http: / / www.wenzizone.cn)
# vi / usr / local /bin / startlo

#!/ bin / SH

VIP = 10.0.0.199

Дело «$1» в
стоп)
# закрыть интерфейс lo: 0

echo $" Закрыть интерфейс lo: 0 "
/ sbin / route del -host $VIP dev lo: 0
/ sbin / ifconfig lo: 0 down
echo "0 " > / proc / sys / net / ipv4 / conf / all /arp_announce
echo "0 " > / proc / sys / net / ipv4 / conf / all /arp_ignore
echo "0 " > / proc / sys / net / ipv4 / conf / lo /arp_announce
echo "0 " > / proc / sys / net / ipv4 / conf / lo /arp_ignore
;;
старт)
# start lo: 0 interface

echo $" Запуск интерфейса lo: 0 "
/ sbin / ifconfig lo: 0 $VIP / 32 broadcast $VIP up
/ sbin / route add-host $VIP dev lo: 0
echo "2 " > / proc / sys / net / ipv4 / conf / all /arp_announce
echo "1 " > / proc / sys / net / ipv4 / conf / all /arp_ignore
echo "2 " > / proc / sys / net / ipv4 / conf / lo /arp_announce
echo "1 " > / proc / sys / net / ipv4 / conf / lo /arp_ignore
;;
*)
echo $" Usage: $0 (start)| стоп) "
Выход 1
;;
esac

Но поскольку в Keepalived нет directord, который контролирует запуск и остановку адресов loop, как в heartbeat, нам нужно искусственно судить, на какой машине следует запустить адрес loop, поэтому Mosquito написал следующий сценарий:

# vi / usr / local / bin / check_interface

#!/ bin / Bash
#
Автор: комары
#
# Описание сценария:
# Этот сценарий определяет, является ли текущий сервер master
# Если текущий сервер не является master, то запускает адрес обратной связи
# В противном случае прекратить обратный адрес
#
# VIP_interface, пожалуйста, настроите его в соответствии с вашим условием, это интерфейс VIP
# lo_interface, пожалуйста, настроите его в соответствии со своими обстоятельствами, это интерфейс обратной связи.

VIP_interface = " eth0: 0 ′′
lo_interface = " lo: 0 ′′

i = 10.

$i! = 0]
do
/ sbin / ifconfig| grep $VIP_interface & > / dev / null
retval = $?
If [! then $retval -eq 0];
/ sbin / ifconfig| grep $lo_interface & > / dev / null
retval = $?
If [! then $retval -eq 0];
/ usr / local / bin / startlo
fi
другое
/ sbin / ifconfig| grep $lo_interface & > / dev / null
retval = $?
if [$retval -eq 0];then
/ usr / local / bin / startlo
fi
fi
i = 10.
Спят 10
Done

После того, как обе машины создали два новых сценария, все готово для тестирования.

Сначала настроите права исполнения для всех необходимых сценариев.Запустить соответствующие сервисы

А. Apache не запускается.
В, # / usr / local / bin / check_interface
C, # service keepalived start
Если нет никаких сообщений об ошибках, то сервис запустился, журнал keepalived хранится в / var / log / messages, если есть ошибки, пожалуйста, проверьте себя

Тест 1: Испытание балансировки нагрузки в текущем состоянии

Метод: Откройте браузер IE, введите http: / / 192.168.211.110, затем непрерывно используйте ctrl + F5 для принудительного обновления, вы можете увидеть, что содержимое веб-страницы переключается между linux01 и linux02

Тест 2: Остановить linux01 keepalive, проверить балансировку нагрузки

Метод:

A, / etc / init.d / keeppalived stop
Затем подождите несколько секунд, чтобы увидеть, что адрес lo: 0 на linux01 запустился, а lo: 0 на linux02 остановился.

B. Откройте браузер IE, введите http: / / 192.168.211.110, а затем продолжайте использовать ctrl + F5 для принудительного обновления, вы можете увидеть, что содержимое веб-страницы переключается в linux01 и linux02

Тест 3: Откройте Keepalived на Linux01 и посмотрите, переходит ли Linux01 обратно в Master

Метод: Запустите программу keepalived, используйте ifconfig для наблюдения за запуском интерфейса eth0: 0 на linux01, а также запуск интерфейса lo: 0 на linux02, а также запуск интерфейса eth0; 0 на linux02

Учебное пособие по созданию высокодоступной балансировки нагрузки на двух компьютерах Apache закончено. Есть вопросы, которые можно обсудить вместе ниже.