在Linux中使用HAProxy,Nginx和Keepalived进行负载平衡
正确设置负载均衡器可以使Web服务器平稳地处理高流量,而不会崩溃。
什么是负载平衡?
负载平衡是将工作负载分配到多个服务器的过程。
这就像在的日班和夜班工人之间分配工作量。
负载平衡解决了单点故障,从而提高了服务器的可靠性。
在此示例中,如果网络服务器出现故障,则无法实时访问用户的网络请求。
同样,如果许多用户同时请求相同的网页,则由单个Web服务器处理用户的Web请求可能是一个缓慢的过程。
因此,负载平衡器用于增强服务器的性能,提供备份并防止故障。
在本教程中,我们将使用Nginx,HAProxy和Keepalived为Web服务器设置负载均衡器。
下面显示了一个带有负载均衡器的服务器的示例。
那么,什么是Nginx,Haproxy和Keepalived?
Nginx
Nginx,发音为Engine-x是开源Web服务器。
它不仅可以充当Web服务器,还可以充当反向代理服务器,邮件代理服务器,负载平衡器,轻量级文件服务器和HTTP缓存。
Nginx已在许多受欢迎的中使用,例如BitBucket,WordPress,Pinterest,Quora和GoDaddy。
HAProxy
HAProxy代表高可用性代理。
它是一个开源负载平衡器,可为基于TCP和HTTP的应用程序提供负载平衡,高可用性和代理解决方案。
它最适合在多台服务器之间分配工作负载,以提高服务器的性能和可靠性。
Haproxy的功能是将Web请求从最终用户转发到可用的Web服务器之一。
它可以使用各种负载平衡算法,例如Round Robin,Least Connections等。
Keepalived
如果HAProxy负载均衡器出现故障怎么办?
Keepalived是一个开源程序,支持负载平衡和高可用性。
它基本上是路由软件,并提供两种类型的负载平衡:
- 第4层(传输层)
- 第7层(应用程序层)
Keepalived可以执行以下功能:
- 运行状况检查(服务器是否已启动)
- 实施VRRP(虚拟冗余路由协议)以处理负载平衡故障转移
Keepalived使用VIP(虚拟IP地址)作为浮动IP,该浮动IP在主负载均衡器和备用负载均衡器之间浮动,并用于在它们之间进行切换。
如果主负载均衡器出现故障,则将使用备用负载均衡器转发Web请求。
让我们转向模拟如何为Web服务器维护高可用性和负载平衡。
在Linux中使用Nginx,HAProxy和Keepalived设置负载均衡器
这是一个测试实验室实验,意味着这只是一个测试设置,可以入门。
如果要在真实服务器上实现它,则可能需要做一些调整。
将此教程用作学习材料,而不是盲目地按照自己的设置进行学习。
我在本教程中使用了CentOS Linux发行版。
我们可以使用其他Linux发行版,但我不能保证所有命令(尤其是安装命令)是否都可以在其他发行版中使用。
负载均衡器设置的要求
4个安装了CentOS的系统(对于本教程而言,最少的安装就足够了)
- 使用nginx设置2个CentOS
- 将使用HAProxy和Keepalived设置2个CentOS
在本教程中,我们以以下IP地址为例。
这些可以根据系统进行更改。
不要以为这些是静态IP。
网络服务器:
- 10.13.211.169
- 10.13.211.158
负载均衡器:
- 10.13.211.194
- 10.13.211.120
虚拟IP:
- 10.13.211.10
我们可以在Linux命令行中轻松获取IP地址。
步骤1:使用Nginx设置Web服务器
在这一部分中,我们将使用两个CentOS系统作为网络服务器。
我们需要先在它们上安装Nginx。
为此,添加一个包含nginx的存储库,然后从那里安装它:
yum install epel-release yum install nginx
安装nginx之后,启动Nginx服务:
systemctl start nginx
即使每次启动后也要启用nginx服务:
systemctl enable nginx
检查nginx服务的状态:
systemctl status nginx
允许Nginx中的Web流量默认情况下被CentOS防火墙阻止。
firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd –reload
在第二台CentOS Web服务器上也重复上述步骤。
现在注意下一步。
nginx的Web文件位于/usr/share/nginx/html
中。
更改index.html文件的内容只是为了标识Web服务器。
对于第一个Web服务器:
echo “this is first webserver” > /usr/share/nginx/html/index.html
对于第二台Web服务器:
echo “this is second webserver” > /usr/share/nginx/html/index.html
注意:如果我们在虚拟机上,最好在一个系统上安装和配置Nginx,然后克隆该系统。
之后,我们可以在第二个系统上重新配置。
节省时间和错误。
现在,通过在浏览器中转到以下URL来确认Web服务器状态:http://SERVER_DOMAIN_NAME或者Local_IP_Address。
这里的例子:
http://10.13.211.169
或者在终端中,卷曲Local_IP_Address。
这里的例子:
curl 10.13.211.169
步骤3:使用Keepalived设置高可用性
必须在两个HAProxy负载均衡器CentOS系统上都安装Keepalived(我们已经在上面进行了配置)。
一个充当主服务器(主负载平衡器),另一个充当后备负载平衡器。
在两个系统上,运行以下命令:
yum install -y keepalived
Keepalived的配置文件位于/etc/keepalived/keepalived.conf
中。
备份原始的keepalived.conf文件,并在新的keepalived .conf文件中使用以下配置。
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac touch /etc/keepalived/keepalived.conf vim /etc/keepalived/keepalived.conf
将以下行粘贴到配置文件中(不要忘记更改电子邮件地址):
global_defs { notification_email { theitroad.com Hyman@theitroad } notification_email_from Hyman@theitroad 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. } }
注意:虚拟IP可以是网络内部的任何实时IP。
大约在Loadbalancer的IP地址范围之内。
此处,负载均衡器的IP为:10.13.211.194和10.13.211.120,VIP为10.13.211.10
根据系统假设编辑配置文件。
注意主服务器和备份服务器的配置。
保存文件并启动并启用Keepalived进程:
systemctl start keepalived systemctl enable keepalived
要查看Keepalived的状态,请执行以下操作:
systemctl status keepalived
注意:如果我们在虚拟机上,则最好在一个系统上安装和配置Haproxy和Keepalived,然后克隆该系统。
之后,我们可以在第二个系统上重新配置。
节省时间和错误。
现在,要检查高可用性负载均衡器的状态,请转到终端并单击:
$while true; do ; curl 10.13.211.10 ; sleep 1; done;
按“ ctrl + c”停止终端运行。