Keepalived和HAProxy是两个常用的工具,用于实现高可用性和负载均衡。并且通常在构建高可用负载均衡架构时常常结合使用。它们各自负责不同的方面:
1. Keepalived:
用于实现高可用性。Keepalived通过虚拟IP(Virtual IP,VIP)提供服务的冗余,确保在某个节点或服务不可用时,其他节点能够接管服务。Keepalived使用VRRP(Virtual Router Redundancy Protocol)来监测节点的可用性,选举主备节点,并确保VIP总是由当前主节点提供。
2. HAProxy:
用于实现负载均衡。HAProxy是一款高性能的负载均衡器,能够将流量分发到多个后端服务器,提高系统的可伸缩性和性能。HAProxy支持多种负载均衡算法,包括轮询(round robin)、权重(weight)等。
结合使用Keepalived和HAProxy的典型架构是,在Keepalived创建的虚拟IP上部署HAProxy。Keepalived确保虚拟IP的高可用性,而HAProxy则负责将请求分发到后端服务器。
这种结合使用的架构具有以下优点:
– 高可用性:Keepalived确保了整个服务在某个节点故障时能够无缝切换到其他节点。
– 负载均衡:HAProxy负责将流量分发到多个后端服务器,提高系统性能和可伸缩性。
在配置时,需要确保HAProxy监听在Keepalived创建的虚拟IP上,以便在主备切换时HAProxy能够正常工作。
下面是一个简单的示例,演示如何结合使用Keepalived和HAProxy来实现高可用的负载均衡。
1. 安装和配置HAProxy:
安装HAProxy:
sudo apt-get update
sudo apt-get install haproxy
编辑HAProxy配置文件(/etc/haproxy/haproxy.cfg):
sudo vi /etc/haproxy/haproxy.cfg
示例配置文件:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon #以后台形式运行ha-proxy
defaults
log global
mode http #工作模式 http ,tcp 是 4 层,http是 7 层
option httplog #日志类别 http 日志格式
option dontlognull
timeout connect 5000 #ha服务器与后端服务器连接超时时间,单位毫秒ms
timeout client 50000 #客户端超时
timeout server 50000 #后端服务器超时
frontend web
bind *:80 #监听哪个ip和什么端口
default_backend app_servers #默认使用的服务器组
backend app_servers #名字要与上面的名字必须一样
balance roundrobin #负载均衡的方式
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check
2. 安装和配置Keepalived:
安装Keepalived:
sudo apt-get install keepalived
编辑Keepalived配置文件(/etc/keepalived/keepalived.conf):
sudo vi /etc/keepalived/keepalived.conf
示例配置文件:
vrrp_instance VI_1 {
state MASTER #定义主还是备,备用的话写BACKUP
interface eth0 #VIP绑定接口
virtual_router_id 51 #整个集群的调度器一致(在同一个集群)
priority 100 #优先级别, BACKUP改为50(每50一间隔)
advert_int 1 #检测间隔1s
authentication {
auth_type PASS #主备节点认证
auth_pass 1111 #认证类型和密码主备一样,要不然无法互相认证
}
virtual_ipaddress {
192.168.1.100 #VIP(自己网段的)
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.1.102 80 {
weight 1
TCP_CHECK {
connect_timeout 3
}
}
}
3. 启动服务:
启动Keepalived和HAProxy:
sudo service haproxy start
sudo service keepalived start
在此示例中,Keepalived将通过虚拟IP(192.168.1.100)提供高可用性,同时HAProxy用于负载均衡两个后端服务器(192.168.1.101和192.168.1.102)。