Сегодня второй брат беседовал с другим читателем из Шанхая и говорил о работе, жизни и текущих рыночных условиях... Как-тоиз Только что говорили обалансировка нагрузки
Понятно。
Второй брат считает, что это довольно интересно.。Здесь я поделюсь с вами программным обеспечением, которым пользовался мой второй брат.:HAProxy
。
HAProxy
(High Availability Proxy)этоВысокопроизводительное программное обеспечение балансировщика нагрузки и прокси-сервера с открытым исходным кодом, написанное на языке C.,Его можно использовать в большинстве основных операционных систем Linux.
HAProxy, благодаря своей превосходной производительности и богатому функционалу, играет важную роль в создании крупномасштабных сетевых сервисов с высокой доступностью. Он особенно подходит для веб-сайтов с очень большими нагрузками.
В этой статье будет подробно описан процесс установки и установки HAProxy, чтобы помочь читателям быстро освоить использование этого мощного инструмента.
Перед использованием Установить HAProxy убедитесь, что ваша системная среда соответствует следующим требованиям:
Ниже в качестве примера используется система CentOS7, чтобы показать процесс установки HAProxy (1.7.2):
(1) Установите необходимые пакеты зависимостей.
sudo yum -y install make gcc pcre-devel bzip2-devel openssl-devel
(2) Загрузите и скомпилируйте Установить. HAProxy
Вы можете загрузить последнюю версию пакета исходного кода с официального сайта HAProxy (https://www.haproxy.org/) или установить ее напрямую с помощью менеджера пакетов (если он доступен). Вот как его установить из исходного пакета:
wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.2.tar.gz
tar -xzf haproxy-1.7.2.tar.gz
Скомпилируйте и установите
make TARGET=linux2628 USE_OPENSSL=1 USE_PCRE=1 USE_SYSTEMD=1
sudo make install PREFIX=/home/ha/haproxy
TARGET
Указывается на основе текущей версии ядра операционной системы.:
- linux22 for Linux 2.2
- linux24 for Linux 2.4 and above (default)
- linux24e for Linux 2.4 with support for a working epoll (> 0.21)
- linux26 for Linux 2.6 and above
- linux2628 for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
В этом случае,Версия ядра нашей операционной системы — 3.10.0.,такTARGET
обозначен какlinux2628。
USE_OPENSSL
、USE_PCRE
、USE_SYSTEMD
Выберите другие варианты в зависимости от ваших реальных потребностей и системной среды.。
PREFIX
По указанному пути установки。все видят,Я создал пользователей и группы пользователей специально для HAProxy.,В этом случаепользовательипользователь Все группыha
。
Кроме того, если вы хотите, чтобы HAProxy прослушивал порты ниже 1024, вам необходимо запустить его от имени пользователя root.
(3) Создайте мягкое соединение (необязательно)
Для удобства использования вы можете добавить исполняемый файл HAProxy в PATH системы:
sudo ln -s /home/ha/haproxy/sbin/* /usr/sbin/
HAProxyиз Конфигурационный файлобычно расположен/etc/haproxy/
в каталоге,Имя файлаhaproxy.cfg
。
Но здесь мы сами создаем файл конфигурации HAProxy.
mkdir -p /home/ha/haproxy/conf
vi /home/ha/haproxy/conf/haproxy.cfg
Файл конфигурации состоит из нескольких частей, включая глобальную, настройки по умолчанию, интерфейсную часть, внутреннюю часть и прослушиваемую часть. Ниже приведен простейший файл конфигурации.
global #глобальные свойства
daemon #В фоновом режиме демон запускает
maxconn 256 #Максимум 256 одновременных подключений
pidfile /home/ha/haproxy/conf/haproxy.pid #Указываем файл для сохранения номера процесса HAProxy
defaults #Параметры по умолчанию
mode http #httpmode
timeout connect 5000ms #Таймаут подключения к серверу 5с
timeout client 50000ms #Тайм-аут ответа клиента 50 с
timeout server 50000ms #Тайм-аут ответа сервера 50 с
frontend http-in #http-вход фронтенд-сервиса
bind *:8080 #Прослушиваем порт 8080
default_backend servers #Запрос перенаправляется на серверную службу с именем "servers"
backend servers #Верхние сервисные серверы
server server1 127.0.0.1:8000 maxconn 32 #backend На серверах есть только одна серверная служба с именем server1, которая запускается с локального порта 8000. HAProxy может инициировать до 32 подключений к этой службе одновременно.
Более подробная настройка будет описана в последующих главах.
Примечание. HAProxy требует, чтобы системный параметр ulimit -n был больше [maxconn*2+18]. При установке большего значения maxconn обязательно проверьте и измените параметр ulimit -n.
Добавьте сценарии запуска и остановки службы HAProxy в каталог /etc/init.d:
vi /etc/init.d/haproxy
#! /bin/sh
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/home/ha/haproxy/sbin
PROGDIR=/home/ha/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/conf/$PROGNAME.cfg
PIDFILE=$PROGDIR/conf/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
echo -e "Starting $DESC: $PROGNAME\n"
$DAEMON -f $CONFIG
echo "."
}
stop()
{
echo -e "Stopping $DESC: $PROGNAME\n"
haproxy_pid="$(cat $PIDFILE)"
kill $haproxy_pid
echo "."
}
restart()
{
echo -e "Restarting $DESC: $PROGNAME\n"
$DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
echo "."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
service haproxy start
service haproxy stop
service haproxy restart
HAProxy не будет выводить файл напрямую.,так Нам нужно использоватьLinuxизrsyslogПриди и уступи дорогуHAProxyвыходбревно>
Изменить haproxy.cfgсуществоватьglobalдомениdefaultsДобавить в домен:
global
...
log 127.0.0.1 local0 info
log 127.0.0.1 local1 warning
...
defaults
...
log global
...
Это означает, что журналы уровня информации (и выше) передаются в интерфейс local0 rsyslog, журналы уровня предупреждения (и выше) передаются в интерфейс local1 rsyslog, а все внешние интерфейсы по умолчанию используют глобальную конфигурацию журнала.
Примечание. В журналах информационного уровня будет печататься каждый запрос, обработанный HAProxy, который будет занимать много дискового пространства. В производственной среде рекомендуется настроить уровень журнала, чтобы это было заметно.
Добавьте конфигурацию журнала haproxy в rsyslog
vi /etc/rsyslog.d/haproxy.conf
$ModLoad imudp
$UDPServerRun 514
$FileCreateMode 0644 #бревно права доступа к файлам
$FileOwner ha #бревно Владелец файла
local0.* /var/log/haproxy.log #local0 интерфейс, соответствующий выходному файлу
local1.* /var/log/haproxy_warn.log выходной файл бревно, соответствующий интерфейсу #local1
Измените параметры запуска rsyslog.
vi /etc/sysconfig/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-c 2 -r -m 0"
service rsyslog restart
service haproxy restart
На этом этапе вы сможете увидеть файл журнала haproxy в каталоге /var/log.
Вывод журналов через rsyslog не будет сегментирован, поэтому вам придется полагаться на logrotate, предоставляемый Linux, для выполнения работы по сегментации.
Используйте пользователя root для создания файла конфигурации сегментации журнала haproxy:
mkdir /root/logrotate
vi /root/logrotate/haproxy
/var/log/haproxy.log /var/log/haproxy_warn.log { #Два имени файла разделены
daily #Разделить по дням
rotate 7 #Сохранить 7 копий
create 0644 ha ha #Создание новых прав доступа к файлам, пользователей, групп пользователей
compress #compressoldбревно
delaycompress #Отложить сжатие на один день
missingok #Игнорировать ошибки отсутствия файла
dateext #старыйбревно плюс суффикс бревно
sharedscripts #Скрипт перезапуска после разделения выполняется только один раз
postrotate #После разделения сценарий запуска перезагружает rsyslog и позволяет rsyslog выводить бревно в новый бревно файл.
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null
endscript
}
И настройте это в crontab:
0 0 * * * /usr/sbin/logrotate /root/logrotate/haproxy
🆗, базовая настройка HAProxy завершена.
Теперь вы можете получить доступ к порту HAProxy** (например, http://your_server_ip:8080) через браузер или команду Curl, чтобы проверить, правильно ли работает балансировка нагрузки.
HAProxy предоставляет две возможности балансировки нагрузки: L4 (TCP) и L7 (HTTP) с богатыми функциями. В следующей статье мы объясним это подробно.
HAProxy работает на текущем оборудовании,Может полностью поддерживать десятки тысяч одновременных соединений.,А его режим разработки позволяет легко и безопасно интегрироваться в текущую архитектуру пользователя.,Защищайте одновременнопользовательизwebСервер не подключен к сети。
Самое главное, что у HAProxy есть возможности коммерческой балансировки. нагрузкиустройствоизпроизводительностьистабильность。Это делаетВ настоящее время это не только лучший выбор среди бесплатного программного обеспечения для балансировки нагрузки, но и почти единственный выбор.。