在 Linux 中使用 HAProxy、Nginx 和 Keepalived 设置负载平衡

在托管服务器或网站的传统方法中,服务器是通过单个 HTTP 服务器托管的。 当客户端在服务器上命中时,它们被允许在服务器上。 但是,当多个用户甚至更多时会发生什么; 成千上万的客户,一次访问网站进行一些查询? 如果服务器崩溃会发生什么? 单台服务器将如何平衡负载? 要回答所有这些问题,我们可以使用术语“负载平衡”。 如果您正在寻找管理服务器流量的可靠工具,您绝对可以在 Linux 上设置 HAProxy、Nginx 和 Keepalived 以实现负载平衡。

HAProxy、Nginx 和 Keepalived 的基础知识

Nginx 以其负载平衡和代理服务而闻名。 在负载均衡器服务器中,客户端通过负载均衡器连接到服务器,而不是直接与服务器连接。 在 Linux 中使用 Nginx、HAProxy 和 Keepalived 可以很好地实现负载平衡。 当服务器崩溃时,负载均衡器会将客户端连接到另一台在线的服务器。

HAProxy 是一个免费的开源负载平衡工具,适用于 HTTP 和 TCP Web 服务器。 它是用 C 编程语言编写的,并在 GNU 公共许可证下获得许可。 它在 Linux 中具有高度的完整性和易于设置的负载平衡功能。 术语 HAProxy 代表高可用性代理工具。 您可以部署 HAProxy 工具来提高服务器性能、可用​​性和负载平衡。

Keepalived 工具充当两台服务器之间的中间人,当其中任何一台服务器宕机时,它可以将客户端从一台服务器重定向到另一台服务器。 Keepalived 在虚拟路由器冗余协议中工作,以实现负载平衡和减少服务器故障问题。 使用 HAProxy 有利于负载平衡并使服务器始终处于运行状态。

因此,不能保证 HAProxy 将始终保持活动状态。 这是用于备份 HAProxy 的 Keepalived。 它可以将客户端的请求分发到远程服务器并处理第 4 层、第 7 层(传输和应用层)负载平衡。 此外,HAProxy 可以处理访问控制列表、后端和前端术语。

在 Linux 中使用 HAProxy、Nginx 和 Keepalived 进行负载平衡

由于我们已经讨论了很多关于 HAproxy、Nginx 和 Linux 的 Keepalived 工具的内容,所以让我们进入教程。 在这篇文章中,我们将看到如何在 Linux 中使用 HAProxy、Nginx 和 Keepalived 设置负载平衡。 我们将需要基本的服务器级知识和使用 Linux 的基本能力来完成这篇文章。

第 1 步:在 Linux 上安装 Nginx 以实现负载平衡

由于我们将看到使我们的服务器更强大、负载平衡和更多客户端处理的方法,因此安装 Nginx HTTP Web 服务器将是开始该过程的第一步。 安装 Nginx Web 服务器简单直接,您可以使用以下命令在您的 Linux 机器上安装 Nginx Web 服务器。

  • 在 Ubuntu/Debian Linux 上安装 Nginx 网络服务器
sudo apt update
sudo apt install nginx

  • 执行以下命令安装 Nginx Fedora/红帽 Linux
yum -y install nginx

安装 Nginx 服务器后,我们将在您的机器上配置、激活和启动服务器。 请阅读这篇文章,了解如何在 Linux 上开始使用 Nginx 服务器。

第 2 步:在 Linux 中安装 HAproxy 负载均衡器

在您的 Linux 机器上安装和配置 Nginx 服务器后,它可能会作为您的机器或网络上的服务器正常工作。 但是,当我们在这里尝试创建负载平衡服务器时,我们现在将在我们的系统上安装和配置 HAproxy 工具。

1. 在 Ubuntu 上安装和配置 HAproxy 以实现负载平衡

在您的系统上安装 HAProxy 之前,您可能需要检查 HAProxy 服务是否已经在您的系统中。

sudo apt show haproxy

现在,通过 PPA 包将 HAProxy 存储库添加到您的系统。 一旦 PPA 拉起存储库,请更新您的系统存储库。

sudo add-apt-repository ppa:vbernat/haproxy-1.7
sudo apt update

最后,请在您的 Ubuntu/Debian Linux 系统上运行以下命令以获取系统上的 HAProxy。 安装 HAProxy 后,请检查 HAProxy 版本以确保它已正确安装在您的机器上。

sudo apt install -y haproxy
haproxy -v

代理版本

在您的 Linux 机器上完成 HAProxy 的安装后,我们现在将编辑配置脚本以使用我们的服务器设置 HAProxy。 在这里,我们将编辑一些 HAProxy 配置脚本,在您编辑这些脚本并为这些文件备份时请小心,以在出现问题时恢复默认设置。

首先,在具有 root 访问权限的终端 shell 上运行以下命令来编辑 HAProxy 配置脚本。 在这里,我使用的是 Nano 脚本编辑器工具,您可以使用任何您喜欢的工具。

sudo nano /etc/haproxy/haproxy.cfg

haproxy 配置文件

现在,将以下脚本行复制并粘贴到文件中,然后保存并 close 文件。 以下脚本行定义了 HAProxy 的前端和后端状态。 请在服务器名称、IP 和其他凭据字段中输入您的服务器详细信息。

frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back

backend http_back
balance roundrobin
server :80 check
server :80 check

现在,在终端 shell 上运行以下命令来编辑和配置 HAproxy 脚本。

sudo nano /etc/haproxy/haproxy.cfg

请使用以下配置脚本来设置 HAproxy 设置。

frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back

backend http_back
balance roundrobin
server :80 check
server :80 check

backend blog_back
server :80 check

配置完成后,您现在可以通过以 root 访问权限运行以下系统控制命令来重新启动 Linux 机器上的 HAProxy 工具。

sudo systemctl status haproxy
sudo systemctl restart haproxy

您现在可以使用您的服务器地址运行下面提到的命令来检查服务器的状态。

https:///haproxy?stats

2.安装和配置HAproxy Fedora

安装 HAProxy 负载平衡工具 Fedora Linux 有点像在 Debian/Ubuntu 系统上安装它。 首先,更新系统存储库,然后运行 ​​DNF 命令在您的 Linux 机器上安装 HAProxy 工具。

yum -y update
yum -y install haproxy

在 Linux 上安装 HAproxy

安装结束后,在进行任何更改之前运行以下命令来备份配置脚本。

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg_bac

您现在可以通过运行下面给出的以下触摸命令来创建新的 HAProxy 配置脚本。 然后使用以下 Nano 命令编辑脚本。

touch haproxy.cfg
nano haproxy.cfg

您可以复制并粘贴以下配置脚本,然后保存并退出该文件。

global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

#frontend
#---------------------------------
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back

#round robin balancing backend http
#-----------------------------------
backend http_back
balance roundrobin
#balance leastconn
mode http
server webserver1 10.13.211.169:80 check # ip_address_of_1st_centos_webserver
server webserver2 10.13.211.158:80 check # ip_address_of_2nd_centos_webserver

将脚本添加到配置文件后,我们现在将启用、启动并检查我们的 HAProxy 工具的状态 Fedora Linux。

systemctl enable haproxy
systemctl start haproxy
systemctl status haproxy

您还可以通过 Web 浏览器拉取 HAProxy 状态来检查 HAProxy 在您的系统上是否运行良好。

https://10.13.211.194/haproxy?stats

以下 cURL 命令还将返回深入的服务器状态以及 HAProxy 状态。

curl 10.13.211.194
curl 10.13.211.194

第三步:在 Linux 上安装 Keepalived

由于我们已经讨论过 Keepalived,所以这里我们直接过一遍 Keepalived 在 Linux 系统上的安装过程。 在这里,我们将看到安装和配置 Keepalived 工具的方法 Fedora 和 Debian Linux。

1. 在 Ubuntu/Debian 上安装和配置 Keepalived

要在 Ubuntu 和其他 Debian Linux 系统上安装 Keepalived 负载平衡工具,请执行以下命令以获取系统上的构建必需工具。 然后浏览主目录并运行下面提供的 wget 命令以将压缩的 Keepalived 文件下载到文件系统上。

sudo apt-get install build-essential libssl-dev
cd ~
wget https://www.keepalived.org/software/keepalived-1.2.19.tar.gz

在 Linux keepalived 工具中设置负载均衡

下载完成后,请使用以下 tar 命令解压文件,然后通过 CD 命令浏览解压后的目录。

tar xzvf keepalived*
cd keepalived*

您现在可以运行以下命令在您的 Ubuntu 系统上安装 Keepalived 工具。

./configure
make
sudo make install

安装结束后,是时候编辑配置以使用我们的服务器设置 Keepalived。 请运行下面给出的以下命令来编辑配置脚本。

sudo nano /etc/init/keepalived.conf

当脚本打开时,复制并粘贴下面提供的以下脚本。

description "load-balancing and high-availability service"

start on runlevel [2345]
stop on runlevel [!2345]

现在,运行 mkdir 命令为 Keepalived 工具创建一个新的配置脚本,然后用配置脚本填充它。

sudo mkdir -p /etc/keepalived
sudo nano /etc/keepalived/keepalived.conf

使用以下脚本行填充 Keepalived 配置文件。

vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}

vrrp_instance VI_1 {
interface eth1
state MASTER
priority 200

virtual_router_id 33
unicast_src_ip primary_private_IP
unicast_peer {
secondary_private_IP
}


}

现在,从 etc 目录并将以下行添加到您的脚本中。

sudo nano /etc/keepalived/keepalived.conf

我们需要放入配置文件的脚本行。

vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}

vrrp_instance VI_1 {
interface eth1
state BACKUP
priority 100

virtual_router_id 33
unicast_src_ip secondary_private_IP
unicast_peer {
primary_private_IP
}

authentication {
auth_type PASS
auth_pass password
}

track_script {
chk_haproxy
}

notify_master /etc/keepalived/master.sh
}

在为 Keepalived 配置脚本之后,我们现在将创建一个辅助负载均衡器配置脚本并使用必要的脚本行填充该脚本。

sudo nano /etc/keepalived/keepalived.conf

运行 nano 命令来编辑脚本,并使用下面给出的行填充脚本。 文件更新后,保存并 close 剧本。

vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}

vrrp_instance VI_1 {
interface eth1
state BACKUP
priority 100

virtual_router_id 33
unicast_src_ip secondary_private_IP
unicast_peer {
primary_private_IP
}

authentication {
auth_type PASS
auth_pass password
}

track_script {
chk_haproxy
}

notify_master /etc/keepalived/master.sh
}

2. 安装和配置 Keepalived Fedora

安装 Keepalived 工具 Fedora Red Hat Linux 系统与将其安装到 Debian 发行版非常相似。 首先,您需要更新系统存储库,然后运行以下 yum 命令来安装 Keepalived 工具。

yum update
yum install -y keepalived

在 Linux keepalived 中设置负载均衡

安装结束后,我们现在将编辑 Keepalived 配置脚本,以使用 Keepalived 调整服务器设置。 在进行任何更改之前,我们将对 Keepalived 配置脚本进行备份。

在你的shell上一一运行以下命令,制作备份文件,创建配置文件,编辑配置脚本。 配置该工具后,我们将使用它在 Linux 中设置我们的负载平衡服务器。

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac
touch /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

当配置脚本打开时,请使用下面提供的脚本行填充文件。 您可能需要根据服务器的 IP、端口、名称和其他详细信息对脚本文件进行更改。

global_defs {
notification_email {
www.ubuntupit.com
[email protected]
}
notification_email_from [email protected]
smtp_server 10.13.211.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state MASTER
interface eth0 #put your interface name here. [to see interface name: $ ip a ]
virtual_router_id 51
priority 101 # 101 for master. 100 for backup. [priority of master> priority of backup]
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #password
}
virtual_ipaddress {
10.13.211.10 # use the virtual ip address.
}
}

配置 Keepalived 脚本后,请在终端 shell 上以 root 访问权限执行以下系统控制命令,以在 Linux 机器上启动、启用和检查 Keepalived 的状态。

systemctl start keepalived
systemctl enable keepalived
systemctl status keepalived

如果一切顺利,以下命令将返回您所有 IP 位置的服务器状态,这将确保您的 Linux 服务器具有完整的负载平衡设置和高可用性。

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

最后的话

如果你是系统 admin,您知道让您的服务器始终处于活动状态并可供世界各地的客户访问是多么重要。 大多数情况下,如果您的服务器很忙,建议启用负载平衡机制。

它可以使服务器快速且一次可访问大量点击。 在整篇文章中,我介绍了 HAProxy、Keepalived 和 Nginx 的基础知识。 我已经说明了如何在 Linux 中设置 HAProxy、Nginx 和 Keepalived 以实现负载平衡的概念和方法。

如果您觉得这篇文章有用且内容丰富,请与您的朋友和 Linux 社区分享。 您也可以在评论部分写下您对这篇文章的看法。