Архив метки: Linux

Как установить и настроить HAproxy в Ubuntu 20.04 LTS

HAproxy — это легкий пакет с открытым исходным кодом, который обеспечивает высокую доступность и балансировку нагрузки для программ на основе TCP и HTTP. Он распределяет нагрузку между веб-серверами и серверами приложений. HAproxy доступен почти для всех дистрибутивов Linux. Это широко используемый балансировщик нагрузки, популярный своей эффективностью, надежностью и малым объемом памяти и процессора. В этом посте мы объясним, как установить и настроить HAproxy в системе Ubuntu.  Ну, а если вам нужен уже готовый прокси-сервер, вы можете зайти на этот сайт и купить его прямо сейчас.

Мы установили три машины. Мы установим HAproxy на одном сервере и веб-серверы Apache на двух серверах. Затем наш сервер HAproxy будет действовать как балансировщик нагрузки и распределять нагрузку между веб-серверами Apache.

Примечание. Процедура и команды, упомянутые в этом посте, были протестированы на Ubuntu 20.04 LTS (Focal Fossa). Та же процедура действительна для дистрибутивов Debian и Mint.

Сведения о сети

Мы будем использовать три сервера Ubuntu; все в одной сети. Подробная информация о наших серверах:

Hostname: HAproxy, IP address: 192.168.72.157 (Frontend server)

Hostname: web-server1, IP address: 192.168.72.158 (Backend servers)

Hostname: web-server2, IP address: 192.168.72.159 (Backend servers)

Примечание. У вас должны быть права sudo на всех серверах.

Мы настроим одну машину как балансировщик нагрузки, а две другие как веб-серверы. Сервер HAproxy будет нашим внешним сервером, который будет получать запросы от пользователей и пересылать их на два веб-сервера. Веб-серверы будут нашими внутренними серверами, которые будут получать эти перенаправленные запросы.

Вот как выглядит наша установка:

Настройка веб-серверов — Backend-серверы

В этом разделе мы настроим два веб-сервера ( веб-сервер1 и веб-сервер2 ) в качестве наших внутренних серверов.

На веб-сервере1 (192.168.72.158)

Выполните следующие шаги на своем веб-сервере. Обязательно замените имена хостов и IP-адреса соответствующими IP-адресами и именами хостов ваших веб-серверов.

1. Настройте файл hosts

На веб-сервере1 отредактируйте файл /etc/hosts :

$ sudo nano /etc/hosts

Затем добавьте запись имени хоста для сервера HAproxy следующим образом:

hostname-of-HAproxy IP-address-of-HAproxy

В нашем сценарии это будет:

HAproxy 192.168.72.157

2. Настройте веб-сервер Apache.

Теперь установите веб-сервер Apache, используя следующую команду в Терминале.

$ sudo apt install apache2

Затем включите и запустите службу Apache, используя следующие команды в Терминале:

$ sudo systemctl enable apache2 

$ sudo systemctl start apache2

Создайте индексный файл для web-server1, используя следующую команду в Терминале:

$ echo "<H1>Hello! This is webserver1: 192.168.72.158 </H1>" | sudo tee /var/www/html/index.html

Если в вашей системе работает брандмауэр, вам необходимо разрешить трафик Apache через него:

$ sudo ufw allow 80/tcp

Затем перезагрузите конфигурации брандмауэра:

$ ufw reload

Теперь попробуйте получить доступ к сайту в своем веб-браузере, набрав http://, а затем либо IP-адрес, либо имя хоста вашего веб-сервера.

http:// hostname-or-IP-address

Кроме того, вы также можете использовать команду curl для тестирования веб-страницы.

$ curl <hostname-or-IP-address>

На веб-сервере-2 192.168.72.159

Выполните следующие шаги на своем втором веб-сервере. Обязательно замените имена хостов и IP-адреса соответствующими IP-адресами и именами хостов ваших веб-серверов.

1. Настройте файл hosts

На веб-сервере2 отредактируйте файл / etc / hosts :

$ sudo nano /etc/hosts

Затем добавьте запись имени хоста для сервера HAproxy следующим образом:

HAproxy 192.168.72.157

2. Установите веб-сервер Apache.

Теперь установите веб-сервер Apache, используя следующую команду в Терминале.

$ sudo apt install apache2

Затем включите и запустите службу Apache, используя следующие команды в Терминале:

$ sudo systemctl включить apache2 

$ sudo systemctl start apache2

Создайте индексный файл для web-server2, используя следующую команду в Терминале:

$ echo "<H1>Hello! This is webserver2: 192.168.72.159 </H1>" | sudo tee /var/www/html/index.html

Разрешите Apache в брандмауэре:

$ sudo ufw allow 80/tcp

а затем перезагрузите конфигурации брандмауэра:

$ ufw reload

Теперь попробуйте получить доступ к сайту в своем веб-браузере, набрав http: //, а затем либо IP-адрес, либо имя хоста.

http:// hostname-or-IP-address

Кроме того, вы можете использовать команду curl для тестирования веб-страницы.

$ curl <hostname-or-IP-address>

Теперь наши веб-серверы Apache готовы.

Настройка балансировщика нагрузки HAproxy-Frontend server

В этом разделе мы настроим балансировщик нагрузки HAproxy для наших веб-серверов. Этот HAproxy-сервер будет действовать как внешний сервер и принимать входящие запросы от клиентов.

На сервере HAproxy ( 192.168.72.157 ) выполните следующие шаги для настройки балансировщика нагрузки.

1. Настройте файл hosts

Отредактируйте файл / etc / hosts, используя следующую команду в Терминале:

$ sudo nano / etc / hosts

Добавьте следующие записи имени хоста для обоих веб-серверов Apache вместе с собственным именем хоста :

192.168.72.157 HAproxy

192.168.72.158 web-server1

192.168.72.159 web-server2

Теперь сохраните и закройте файл /etc/hosts.

Установка балансировщика нагрузки HAproxy

Теперь на этом этапе мы будем устанавливать HAproxy на один из наших серверов Ubuntu (192.168.72.157). Для этого обновите apt, используя следующую команду в Терминале:

$ sudo apt-get update

Затем обновите пакеты, используя следующую команду:

$ sudo apt-get upgrade

Теперь установите HAproxy, используя следующую команду в Терминале:

$ sudo sudo apt install haproxy

После завершения установки сервера HAproxy вы можете подтвердить это, используя следующую команду в Терминале:

$ haproxy -v

Он покажет вам установленную версию HAproxy в вашей системе, которая подтверждает, что HAproxy был успешно установлен.

Настройка HAproxy в качестве балансировщика нагрузки

В следующем разделе мы настроим HAproxy в качестве балансировщика нагрузки. Для этого отредактируйте файл /etc/haproxy/haproxy.cfg :

$ sudo nano /etc/haproxy/haproxy.cfg

Добавьте следующие строки в файл haproxy.cfg, заменив IP-адреса вашими собственными IP-адресами.

Интерфейс веб-интерфейс в приведенной выше строках конфигурации говорит HAproxy для прослушивания входящих запросов на порт 80 из 192.168.72.157 , а затем направляет их серверные сервера , сконфигурированных в соответствии с серверной веб-интерфейсом. Во время настройки замените IP-адреса соответствующими IP-адресами ваших веб-серверов.

Настройка мониторинга HAproxy

С помощью мониторинга HAproxy вы можете просматривать множество информации, включая статус сервера, передаваемые данные, время безотказной работы, скорость сеанса и т.д. Чтобы настроить мониторинг HAproxy, добавьте следующие строки в файл конфигурации, расположенный по адресу /etc/haproxy/haproxy.cfg :

listen stats

bind 192.168.72.157:8080

mode http

option forwardfor

option httpclose

stats enable

stats show-legends

stats refresh 5s

stats uri /stats

stats realm Haproxy Statistics

stats auth kbuzdar:kbuzdar            #Login User and Password for the monitoring

stats admin if TRUE

default_backend web-backend

Приведенная выше конфигурация включает страницу « статистики » HAproxy с помощью директивы stats и защищает ее с помощью базовой аутентификации http с использованием имени пользователя и пароля, определенных директивой stats auth .

По завершении настройки сохраните и закройте файл haproxy.cfg.

Теперь проверьте файл конфигурации, используя следующую команду в Терминале:

$ haproxy -c -f /etc/haproxy/haproxy.cfg

Следующий вывод показывает, что конфигурации верны.

Теперь, чтобы применить настройки, перезапустите службу HAproxy:

$ sudo systemctl restart haproxy.service

Он остановит, а затем запустит службу HAproxy.

Чтобы проверить статус службы HAproxy, используйте следующую команду:

$ sudo systemctl status haproxy.service

Активно (работает) положение в следующих выходных показывают , что сервер HAproxy включен и работает нормально.

Вот еще несколько команд для управления сервером HAproxy:

Чтобы запустить сервер HAproxy, команда должна быть такой:

$ sudo systemctl start haproxy.service

Чтобы остановить сервер HAproxy, используйте следующую команду:

$ sudo systemctl stop haproxy.service

Если вы хотите временно отключить сервер HAproxy, используйте следующую команду:

$ sudo systemctl отключить haproxy.service

Чтобы повторно включить сервер HAproxy, введите следующую команду:

$ sudo systemctl включить haproxy.service

Тест HAproxy

Перед тестированием настройки HAproxy убедитесь, что у вас есть подключение к веб-серверам. С вашего HAproxy-сервера проверьте связь с обоими веб-серверами по их IP-адресам или именам хостов.

$ ping имя-хоста-или-IP-адрес

Следующие выходные данные показывают, что сервер HAproxy может подключаться к обоим веб-серверам.

Протестируйте прокси HA с помощью веб-браузера

Теперь на сервере HAproxy откройте любой веб-браузер и введите http: //, а затем IP-адрес сервера HAproxy, который в нашем случае 192.168.72.157.

http://192.168.72.157

В качестве альтернативы сервер HAproxy отправит запрос на оба веб-сервера в циклическом методе. Вы можете проверить это, перезагрузив веб-страницу несколько раз.

Вот ответ, который мы получили, когда впервые посетили http://192.168.72.157 :

Это ответ, который мы получили, когда перезагрузили веб-страницу:

Вы также можете использовать имя хоста вместо IP-адреса сервера HAproxy.

Протестируйте прокси HA с помощью curl

Вы также можете использовать команду curl в Linux для проверки настройки HAproxy. Откройте Терминал и введите curl, а затем IP-адрес или имя хоста сервера HAproxy.

$ curl 192.168.72.157

или же

$ curl HAproxy

Выполните команду curl несколько раз, и вы увидите, что ответ чередуется между обоими веб-серверами.

Вместо того, чтобы запускать команды несколько раз, вы также можете запустить следующий однострочный сценарий для тестирования сервера HAproxy:

$ while true; do curl 192.168.72.157; sleep 1; done

Тестирование мониторинга HAproxy

Чтобы получить доступ к странице мониторинга HAproxy, введите http: //, а затем IP-адрес/имя хоста сервера HAproxy и порт 8080 / stats:

http://192.168.72.157:8080/stats

или же

http://HAproxy:8080/stats

Появится следующее окно аутентификации. Введите имя пользователя и пароль, которые вы настроили ранее в конфигурациях, а затем нажмите OK .

Это статистический отчет для нашего сервера HAproxy.

Здесь у вас есть установка и настройка балансировщика нагрузки HAproxy в системе Linux. Мы только что обсудили базовую настройку и конфигурацию HAproxy в качестве балансировщика нагрузки для веб-серверов Apache. Мы также рассмотрели некоторые команды для управления сервером HAproxy. В итоге мы протестировали балансировку нагрузки через браузер и команду curl. Для получения дополнительной информации посетите официальную документацию HAproxy.



2021-06-09T10:58:10
Вопросы читателей

Как удалить строки в Vim?

Vim — популярный текстовый редактор командной строки, который присутствует в большинстве дистрибутивов Linux и macOS. Знание того, как использовать редактор, может сэкономить вам много времени, когда вы прыгаете по терминалу.

В этом руководстве мы рассмотрим, как удалить строки в Vim с помощью следующих четырех руководств.

  • Удаление отдельной строки в Vim
  • Удаление нескольких строк в Vim
  • Удаление диапазона строк в Vim
  • Удаление строк с шаблоном в Vim

Читать

Как пользоватья командой scp

Команда SCP, аббревиатура от Secure Copy, — это команда, используемая для безопасного копирования файлов в удаленную систему и из нее по протоколу SSH. Использование SSH означает, что он пользуется тем же уровнем шифрования данных, что и SSH, и, таким образом, считается безопасным способом передачи файлов между двумя удаленными хостами. В этом руководстве основное внимание будет уделено команде SCP и выделено несколько примеров использования.

Базовый синтаксис

Базовый синтаксис команды SCP представлен ниже:

$ scp [option] /path/to/source/file

user@server-IP:/path/to/destination/directory

Где:

/path/to/source/file — это исходный файл, который вы собираетесь скопировать на удаленный хост.

user@server-IP: — это имя пользователя и IP-адрес удаленной системы. Обратите внимание на двоеточие после IP-адреса.

/path/to/destination/directory: — это целевой каталог в удаленной системе, куда будет скопирован файл.

Команда SCP также имеет следующие параметры команды

-C — сжимает файл или каталог в процессе копирования.

-P — Используйте этот параметр, чтобы указать порт SSH, если порт SSH по умолчанию не установлен на 22.

-r — этот параметр рекурсивно копирует каталог вместе с его содержимым.

-r — сохраняет время доступа и изменения копируемого файла.

Копирование файла на удаленный сервер Linux

Чтобы скопировать файл без параметров, просто используйте показанный синтаксис. В приведенном ниже примере я копирую zip-файл nextcloud-21.0.1.zip в домашний каталог удаленного хоста  /home/bob. IP-адрес хоста —  192.168.2.103, а bob — пользователь для входа.

$ scp nextcloud-21.0.1.zip bob@192.168.2.103:/home/bob

Чтобы скопировать каталог, активируйте флаг -r, как показано. Здесь мы копируем каталог bashtop в домашний каталог удаленного узла.

$ scp -r bashtop bob@192.168.2.103:/home/bob

Копирование файла из удаленной системы в локальную систему

Кроме того, можно скопировать файл с удаленного узла в локальную систему, как показано ниже:

$ scp [option] user@server-IP:/path/to/source/file/path/to/local/directory

В приведенном ниже примере мы копируем файл sales.pdf из удаленной системы в локальную:

$ scp bob@192.168.2.103:/home/bob/sales.pdf /home/winnie

Точно так же вы можете скопировать каталог с удаленного хоста в локальную систему, используя флаг -r, как показано.

$ scp -r bob@192.168.2.103:/home/bob/reports_2020 /home/winnie

Для получения дополнительных сведений об использовании команды SCP посетите страницы руководства:

$ man scp

Заключение

Команда Linux SCP — это удобный и безопасный способ передачи файлов между двумя удаленными узлами, не беспокоясь о том, что злоумышленники будут отслеживать ваши данные.



2021-06-04T09:37:11
Вопросы читателей

Как подключить удалённую директорию через SSH.

Сегодня в статье поговорим о том, как можно подключить удаленную директорию расположенную на сервере к нам на локальный ПК, также справедливо и в обратном направлении. Подключать будем через протокол SSH.






Введение




Во время работы на удаленной хост машине приходится работать с файлами и директориями, производить редактирование и копирование на локальную машину и обратно, всё это через протокол SSH. Каждый раз использовать команду scp не очень удобно, особенно если делаете много правок. В этом случае к нам на помощь придет очень полезная утилита под названием sshfs




Все, что написано дальше — касается Linux, а в частности Ubuntu, хотя будет справедлива и для других Debian подобных дистрибутивов.
Итак продолжим. Будем монтировать Удаленную директорию на локальный ПК при помощи sshfs.




Установка sshfs




Но для начала утилиту надо установить в систему где будем производить монтирование. У меня это Ubuntu Server 20.04




В терминале набираем:




sudo apt install sshfs




Настройка sshfs




После установки добавляем нашего пользователя в группу пользователей fuse (если у Вас пользователь root то добавлять его нет необходимости). Добавить пользователя необходимо так как программа устанавливается в системные папки, к которым доступ обычным пользователям запрещен. И так, добавляем юзера в группу fuse:




sudo adduser $USER fuse




Далее на ПК создаем директорию для монтирования нашей удаленной директории:




mkdir ~/remote_dir




Ручное монтирование удаленной директории




Пробуем присоединить удаленную директорию:




sudo sshfs my_user@server.ru:/home/files ~/remote_dir




  • my_user – имя пользователя на удаленном сервере.
  • server.ru – FQDN вашего сервера или IP адрес.
  • /home/files – директория на сервере.
  • ~/remote_dir – директория на ПК куда будем производить монтирование.




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




Авто монтирование удаленной директории




Чтобы каждый раз не вводить команду для монтирования нашей удаленной директории следует настроить автоматическое монтирование при загрузки нашей ОС. Для этого открываем терминал и вводим следующее:




sudo nano /etc/fstab




И в конце дописываем:




my_user@server.ru:/home/files ~/remote_dir fuse.sshfs defaults,_netdev,IdentityFile=/user/.ssh/id_rsa 0 0







Пробуем примонтировать директорию:




sudo mount -a




Если же вы сразу не получили ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first — проверяйте директорию, там должны появиться файлы :). Если же вылезла ошибка — значит модуль ядра fuse не загрузился автоматом, пробуем загрузить вручную:




sudo modprobe fuse



[endtxt]




RSS




2021-06-02T07:05:28
SSH

Полное руководство по настройке SSH в Ubuntu

В наши дни SSH стал методом по умолчанию для доступа к удаленному серверу Linux.

SSH расшифровывается как Secure Shell и представляет собой мощный, эффективный и популярный сетевой протокол, используемый для удаленной связи между двумя компьютерами. И давайте не будем забывать о защищенной части его имени; SSH шифрует весь трафик для предотвращения таких атак, как угон и подслушивание, предлагая различные методы аутентификации и множество вариантов конфигурации. Читать

Что такое демоны в Linux

Демоны много работают для того, чтобы вы могли сосредоточится на своем деле. Представьте, что вы пишите статью или книгу. Вы заинтересованны в том, чтобы писать. Удобно, что вам не нужно вручную запускать принтер и сетевые службы, а потом следить за ними весь день для того чтобы убедится, что всё работает нормально.

За это можно благодарить демонов, они делают эту работу за нас. В сегодняшней статье мы рассмотрим что такое демоны в Linux, а также зачем они нужны.



Читать