С постепенным развитием архитектуры системы количество и структура серверов будут становиться все более сложными, например, построение кластера веб-серверов повышает производительность системы и в то же время увеличивает сложность обслуживания системы. Мониторинг осуществляется для того, чтобы убедиться, что сервер, предоставляющий услуги пользователям, работает нормально, а система в целом
可用性
является решающим.
Введение в Keepalived
Что такое Keepalived?
Keepalived на основеVRRPРешение высокой доступности службы LVS, реализованное протоколом, может использоваться для устранения единой точки отказа. Служба LVS будет иметь 2 сервера с Keepalived, один из которых является основным сервером (MASTER), а другой — сервером резервного копирования (BACKUP), но внешне он отображается как один.虚拟IP
Первичный сервер отправит конкретное сообщение на сервер резервного копирования. Когда сервер резервного копирования не получает это сообщение, сервер резервного копирования приведет к виртуальному IP, когда основной сервер меньше, чем сообщение, и служба будет продолжать обеспечивать высокий доступность.
Роль Keepalived
Как указано выше,Keepalivedобеспечивает хороший高可用性保障服务
, он может проверить состояние сервера, если есть проблема с сервером, Keepalived удалит его из системы, и использует резервный сервер для замены работы сервера в то же время, когда сервер может нормально работать , Keepalived вернет его обратно В ферме серверов этот процесс выполняется автоматически Keepalived без ручного вмешательства Нам нужно только исправить сервер с проблемой.
Принцип поддержания активности
На основе понимания протокола VRRP
Keepalived этоVRRP
Протокол является основой реализации, полное название VRRPVirtual Router Redundancy Protocol
,Сейчас虚拟路由冗余协议
.
Протокол избыточности виртуальной маршрутизации можно рассматривать как протокол для реализации высокой доступности маршрутизаторов, то есть N маршрутизаторов, выполняющих одну и ту же функцию, образуют группу маршрутизаторов.Эта группа состоит из главного и нескольких резервных.Главный имеет поставщика услуг для внешний мир.VIP(Virtual IP Address)
(Маршрут по умолчанию для других машин в локальной сети, где находится маршрутизатор, — это VIP), мастер будет отправлять многоадресную рассылку, и когда резервная копия не может получить пакет vrrp, мастер считается неработающим, и тогда ему нужно на основе приоритета VRRP.选举
Резервное копирование - это мастер. Таким образом, высокая доступность маршрутизатора может быть гарантирована.
keepalived в основном состоит из трех модулей, а именно core, check и vrrp. Основной модуль поддерживает активностьосновной, отвечающий за запуск и обслуживание основного процесса, а также загрузку и анализ файлов глобальной конфигурации. check отвечает за проверку работоспособности, включая различные распространенные методы проверки. Модуль vrrp предназначен для реализации протокола VRRP.
Понимание на основе протокола TCP/IP
Взяв в качестве примера обнаружение веб-сервера, Keepalived определяет состояние сервера на 3 уровнях.
Layer3, Layer4 и Layer7 работают в стеке протоколов IP/TCP Уровень IP, уровень TCP и уровень приложений, принципы следующие:
Слой 3:
Когда Keepalived работает в режиме Layer3, Keepalived будет периодически отправлять пакет данных ICMP на сервер в группе серверов (то есть, программа Ping, которую мы обычно используем), Если обнаружит, что IP-адрес службы не активирован, Keepalived сообщить об этом server.fail и удалить его из фермы серверов, типичным примером такой ситуации является незаконное отключение сервера. Метод Layer3 основан на сервереIP地址
Является ли это допустимым критерием того, работает ли сервер должным образом или нет.
Layer4:
Layer4 легко, если вы понимаете способ Layer3. Layer4 в основном основан наTCP 端口的状态
чтобы решить, работает ли сервер должным образом или нет. Например, служебный порт веб-сервера обычно равен 80. Если Keepalived обнаружит, что порт 80 не запущен, Keepalived удалит этот сервер из группы серверов.
Стрэй7:
Уровень 7 работает на определенном прикладном уровне, который немного сложнее, чем уровень 3 и уровень 4, и требует большей полосы пропускания в сети. Keepalived проверит, нормально ли работает серверная программа в соответствии с настройками пользователя, и если она не соответствует настройкам пользователя, Keepalived удалит сервер из группы серверов.
Политика поддержки активности
предвыборная стратегия
Во-первых, каждый узел имеет начальный приоритет, определяемыйpriority
Элемент конфигурации указывает, что приоритет узла MASTER должен быть выше, чем у BAKCUP. keepalived во время работы по vrrp_scriptweight
Установите, увеличьте или уменьшите приоритет узла. Правила следующие:
-
weight
Когда значение положительное, значение «вес» будет добавлено к «приоритету» при успешном обнаружении скрипта и не будет добавлено при сбое обнаружения.- Основной отказ: переключение, когда основной приоритет
- Мастер преуспевает: когда сумма основного приоритета + вес> сумма резервной приоритеты + вес, мастер по-прежнему является мастером, то есть никакого переключения не происходит.
-
weight
Когда это отрицательное число, «вес» не влияет на «приоритет» при успешном обнаружении скрипта, а при неудачном обнаружении вес главного узла будет разницей между значением «приоритет» и «весом». ценность- Первичный сбой: переключение происходит, когда первичный приоритет-abs(вес)
- Первичный успех: первичный приоритет> вторичный приоритет не переключается
- Когда два узла имеют одинаковый приоритет, отправить как узел
VRRP通告
IP используется в качестве объекта сравнения, а больший IP является ГЛАВНЫМ.
Установка приоритета и веса
- Начальный приоритет приоритета ведущий-ведомый и настройка веса изменения очень важны, если несоответствие неправильное, переключение ведущий-ведомый не может быть выполнено. Например, если начальное значение MASTER установлено слишком высоким, даже если сценарий не удается выполнить, он больше, чем приоритет + вес BACKUP, и дрейф VIP не может быть выполнен.
- Таким образом, установка значений приоритета и веса должна следовать: абс (приоритет ГЛАВНЫЙ - приоритет BAKCUP)
Keepalived практический продвинутый
Установка и развертывание Keepalived
- Загрузите установочный пакет
Адрес загрузки официального сайта Keepalived:woohoo.keepalive.org/download.contracts…
-
распаковать
tar -zxvf keepalived-2.0.18.tar.gz
-
После распаковки перейдите в распакованный каталог и увидите, что там будет
configure
, то можно заняться настройкой (установка конфигурации точно такая же, как и у nginx) -
использовать
configure
Команда для настройки каталога установки и расположения основного файла конфигурации./configure --prefix=/usr/local/keepalived --sysconf=/etc
- префикс: место, где установлена поддержка активности
- sysconf: расположение файла конфигурации ядра поддержки активности, фиксированное местоположение, если вы измените его на другое местоположение, поддержка активности не запустится, и в /var/log/messages будет сообщено об ошибке.
Предупреждающие сообщения могут появляться во время настройки следующим образом:
Обходной путь: установите зависимости libnl/libnl-3
yum -y install libnl libnl-devel
,сноваconfigure
Момент. -
установить поддержку активности
make && make install
-
Входить
/etc/keepalived
, этот каталог является файлом конфигурации ядра поддержки активности.
Конфигурация поддержки активности
Зарегистрируйте Keepalived как системную службу
Введите распакованный установочный пакетetc
папка
Скопируйте файл конфигурации системы в системуetc
документ
cp init.d/keepalived /etc/init.d/
cp sysconfig/keepalived /etc/sysconfig/
Обновите системные службы и загрузите недавно добавленную службу Keepalived.
systemctl daemon-reload
Конфигурация главного сервера
- по команде
vim keepalived.conf
Откройте файл конфигурации, подробная конфигурация выглядит следующим образом
global_defs {
# 路由id:当前安装keepalived的节点主机标识符,保证全局唯一
router_id keep_104
}
vrrp_instance VI_1 {
# 表示状态是MASTER主机还是备用机BACKUP
state MASTER
# 该实例绑定的网卡名称
interface ens33
# 保证主备节点一致即可
virtual_router_id 51
# 权重,master权重一般高于backup,如果有多个,那就是选举,谁的权重高,谁就当选
priority 100
# 主备之间同步检查时间间隔,单位秒
advert_int 2
# 认证权限密码,防止非法节点进入
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟出来的ip,可以有多个(vip)
virtual_ipaddress {
192.168.1.108
}
}
Вложение: Посмотреть название сетевой карты
-
Начать проверку активности
Запустите в каталоге sbin (так же, как nginx), как показано ниже:
-
Посмотреть прогресс
ps -ef|grep keepalived
-
Просмотр виртуального IP-адреса (VIP)
Под сетевой картой ens33 есть еще одна
192.168.1.108
Это виртуальный IP
Keepalived обеспечивает высокую доступность с двойным резервированием
После настройки узла главного сервера Keepalived можно настроить узел резервного сервера.Конфигурация резервного сервера выглядит следующим образом:
global_defs {
router_id keep_105
}
vrrp_instance VI_1 {
# 备用机设置为BACKUP
state BACKUP
interface ens33
virtual_router_id 51
# 权重低于MASTER
priority 80
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# 注意:主备两台的vip都是一样的,绑定到同一个vip
192.168.1.108
}
}
Начать проверку активности
# 启动keepalived
systemctl start keepalived
# 停止keepalived
systemctl stop keepalived
# 重启keepalived
systemctl restart keepalived
Просмотр процессов проверки активности альтернативного сервера
Теперь узел главного сервера192.168.1.104
и запасной серверный узел192.168.1.105
и накопительный виртуальный IP192.168.1.105
настроен
Здесь я устанавливаю виртуальный IP-адрес Keepalived локально192.168.1.108
сопоставляется сwww.keep.com
Так что иди прямоwww.keep.com
для доступа к узлу главного сервера
Когда служба Keepalived узла главного сервера недоступна (здесь я напрямую останавливаю службу Keepalived главного сервера напрямуюsystemctl stop keepalived.service
, для удобства тестирования), виртуальный IP-адрес автоматически привязывается к альтернативному адресу узла сервера.
Keepalived настраивает Nginx на автоматический перезапуск
-
Добавлен скрипт обнаружения перезапуска Nginx.
vim /etc/keepalived/check_nginx_alive_or_not.sh
#!/bin/bash A=`ps -C nginx --no-header |wc -l` # 判断nginx是否宕机,如果宕机了,尝试重启 if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx # 等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机 sleep 3 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
Увеличить права доступа
chmod +x /etc/keepalived/check_nginx_alive_or_not.sh
-
Настройте скрипт состояния регулярного мониторинга nginx в keepalived.conf
vrrp_script check_nginx_alive { script "/etc/keepalived/check_nginx_alive_or_not.sh" interval 2 # 每隔两秒运行上一行脚本 weight 10 # 如果脚本运行成功,则升级权重+10 # weight -10 # 如果脚本运行失败,则升级权重-10 }
-
существует
vrrp_instance
Добавлены скрипты мониторинга вtrack_script { check_nginx_alive # 追踪 nginx 脚本 }
-
Перезапустите Keepalived, чтобы файл конфигурации вступил в силу.
systemctl restart keepalived
Keepalived обеспечивает высокую доступность с двойным активным горячим резервированием
Во-первых, вам необходимо настроить конфигурацию разрешения DNS и балансировку нагрузки облачной службы.Для получения подробной информации о настройке см.:
- Али Клауд:help.aliyun.com/document_…
- Облако Тенсент:cloud.Tencent.com/document/cheat…
Подробная конфигурация Keepalived с двойным активным горячим резервированием:
Правило: сгруппировано по виртуальному ip, сгруппированному в один и тот же маршрут
Конфигурация главного узла
global_defs {
router_id keep_104
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.108
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.138
}
}
Альтернативная конфигурация узла
global_defs {
router_id keep_105
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.108
}
}
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.138
}
}
Справочная документация
- Woohoo. Hu Weihuang.com/Linux-notes…Я Сяохай, который любит учиться и делиться. Спасибо, что заглянули и прочитали. Я надеюсь, что у нас будет больше обменов друг с другом. Наконец, я пришлю вам девиз моей жизни: Если нет цели в качестве поддержки, и только иллюзорное воображение, чтобы улучшить себя, тогда мы будем любить актерское мастерство, вы будете чувствовать, что вы не в себе.
Итак, какова ваша цель?