HAProxy(High Availability Proxy)是一个高性能的开源负载均衡器和代理服务器,用于分发网络流量。它是一个免费的、快速的、可靠的解决方案,常用于提供高可用性、负载均衡和代理服务。HAProxy最初是为Linux系统设计的,但现在已经在多个平台上可用,包括各种Unix系统和Windows。
主要特点和功能:
**负载均衡:**HAProxy可以将传入的网络请求分发到多个后端服务器,确保各个服务器的负载大致相等,从而提高系统的整体性能和稳定性。
**高可用性:**HAProxy可以检测后端服务器的健康状态,当某个服务器出现故障时,它会自动将流量重新路由到其他健康的服务器上,确保系统的高可用性。
**SSL终端:**HAProxy可以作为SSL终端,处理SSL/TLS加密和解密,从而减轻后端服务器的负担,提高系统的安全性和性能。
**代理:**HAProxy可以作为代理服务器,支持TCP和HTTP代理,用于转发客户端和后端服务器之间的网络请求,实现网络加速和访问控制等功能。
**健康检查:**HAProxy可以周期性地检查后端服务器的健康状态,可以通过多种方式进行检查,包括TCP连接、HTTP请求和自定义脚本等。
**灵活的配置:**HAProxy的配置非常灵活,可以根据具体需求进行定制,支持多种负载均衡算法、会话保持、请求重定向、ACL(Access Control List)等功能。
**性能优化:**HAProxy具有出色的性能和低的资源消耗,可以处理大规模的并发连接,同时具有较低的延迟,适用于高性能的应用场景。
HAProxy通常用于构建高可用性的Web服务架构,例如将流量分发到多个Web服务器、应用服务器或数据库服务器上。它也可以用于构建WebSocket代理、API网关、SSL终端等各种网络应用场景。
补充:软件:haproxy---主要是做负载均衡的7层,也可以做4层负载均衡
apache也可以做7层负载均衡,但是很麻烦。实际工作中没有人用。
负载均衡是通过OSI协议对应的
7层负载均衡:用的7层http协议,
4层负载均衡:用的是tcp协议加端口号做的负载均衡
Keepalived 是一个用于 Linux 系统的开源软件,它提供了一种简单而强大的方法来实现高可用性(High Availability, HA)和负载均衡(Load Balancing)。以VRRP协议为实现基础的。
Keepalived 主要用于确保在网络环境中的多台服务器之间的高可用性。它的工作原理是通过在多台服务器之间共享一个虚拟 IP 地址(VIP),并且在主服务器宕机时能够快速将 VIP 切换到备用服务器,从而确保服务的持续可用性。
主要特点和功能:
Keepalived 通常用于 Web 服务器、应用服务器、数据库服务器等关键服务的高可用性和负载均衡方案中,它可以显著提高系统的可靠性和稳定性。
hostname | ip |
---|---|
master | 192.168.13.128 |
backup | 192.168.13.129 |
node1 | 192.168.13.133 |
node2 | 192.168.13.137 |
只给node配置安装nginx ,所有机器关闭防火墙和selinux
node1
systemctl stop firewalld && setenforce 0
yum install yum-utils -y
yum install nginx -y
systemctl start nginx #启动
echo "this is first real-server" > /usr/share/nginx/html/index.html #方便区分,看出效果
vim /etc/nginx/nginx.conf
keepalive_timeout 0; #设置长链接
nginx -s reload #刷新nginx
node2
systemctl stop firewalld && setenforce 0
yum install yum-utils -y
yum install nginx -y
systemctl start nginx #启动
echo "this is first real-server" > /usr/share/nginx/html/index.html #方便区分,看出效果
vim /etc/nginx/nginx.conf
keepalive_timeout 0; #设置长链接
nginx -s reload #刷新nginx
master
yum -y install haproxy
cp -rf /etc/haproxy/haproxy.cfg{,.bak} #备份
sed -i -r '/^[ ]*#/d;/^$/d' /etc/haproxy/haproxy.cfg #修改配置文件去掉注释,或者你可以直接复制我的代码
cat > /etc/haproxy/haproxy.cfg <
backup
yum -y install haproxy
cp -rf /etc/haproxy/haproxy.cfg{,.bak} #备份
sed -i -r '/^[ ]*#/d;/^$/d' /etc/haproxy/haproxy.cfg #修改配置文件去掉注释,或者你可以直接复制我的代码
vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2 info
pidfile /var/run/haproxy.pid
maxconn 4000 #优先级低
user haproxy
group haproxy
daemon #以后台形式运行ha-proxy
nbproc 1 #工作进程数量 cpu内核是几就写几
defaults
mode http #工作模式 http ,tcp 是 4 层,http是 7 层
log global
retries 3 #健康检查。3次连接失败就认为服务器不可用,主要通过后面的check检查
option redispatch #服务不可用后重定向到其他健康服务器。
maxconn 4000 #优先级中
contimeout 5000 #ha服务器与后端服务器连接超时时间,单位毫秒ms
clitimeout 50000 #客户端超时
srvtimeout 50000 #后端服务器超时
listen stats
bind *:81
stats enable
stats uri /haproxy #使用浏览器访问 http://192.168.246.169/haproxy,可以看到服务器状态
stats auth yjssjm:123 #用户认证,客户端使用elinks浏览器的时候不生效
frontend web
mode http
bind *:80 #监听哪个ip和什么端口
option httplog #日志类别 http 日志格式
acl html url_reg -i \.html$ #1.访问控制列表名称html。规则要求访问以html结尾的url(可选)
use_backend httpservers if html #2.如果满足acl html规则,则推送给后端服务器httpservers
default_backend httpservers #默认使用的服务器组
backend httpservers #名字要与上面的名字必须一样
balance roundrobin #负载均衡的方式
server http1 192.168.13.133:80 maxconn 2000 weight 1 check inter 1s rise 2 fall 2
server http2 192.168.13.137:80 maxconn 2000 weight 1 check inter 1s rise 2 fall 2
master
yum install -y keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak #备份
vim /etc/keepalived/keepalived.conf
#! Configuration File for keepalived
global_defs {
router_id directory1 #只是名字而已,辅节点改为directory2(两个名字一定不能一样)
}
vrrp_instance VI_1 {
state MASTER #定义主还是备,备用的话写backup
interface ens33 #VIP绑定接口
virtual_router_id 80 #整个集群的调度器一致(在同一个集群)
priority 100 #(优先权)back改为50(50一间隔)
advert_int 1 #发包
authentication {
auth_type PASS #主备节点认证
auth_pass 1111
}
virtual_ipaddress {
192.168.13.144/24 #VIP(自己网段的)
}
}
--------------------------------------------------------------------
backup
yum install -y keepalived
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id directory2
}
vrrp_instance VI_1 {
state BACKUP #设置为backup
interface ens33
nopreempt #设置到back上面,不抢占资源
virtual_router_id 80
priority 50 #辅助改为50
advert_int 1 #检测间隔1s
authentication {
auth_type PASS
auth_pass 1111 #认证类型和密码主备一样,要不然无法互相认证
}
virtual_ipaddress {
192.168.13.144/24 #抢占的VIP也一样
}
}
启用服务
systemctl start keepalived haproxy
systemctl enable keepalived haproxy
uth_type PASS
auth_pass 1111 #认证类型和密码主备一样,要不然无法互相认证
}
virtual_ipaddress {
192.168.13.144/24 #抢占的VIP也一样
}
}
启用服务
systemctl start keepalived haproxy
systemctl enable keepalived haproxy
验证:访问你自己设置的VIP 192.168.13.144