(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
(4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
(5)HAProxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡;
(6)自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;
(7)HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。
总结:
HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
在功能上,能以proxy反向代理方式实现WEB均衡负载,这样的产品有很多。包括lvs,Nginx,ApacheProxy,lighttpd等。
国内生产环境上使用Haproxy的公司很多,例如淘宝的CDN系统
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
在进行安装配置HAproxy之前首先确定集群的基本架构,需要在节点n1和n2上做热备,所以需要同时安装上haproxy。基本结构如下:
iphostname节点类型主/备192.168.12.190 m1 Disk
192.168.12.192 n1 RAM master
192.168.12.194 n3 RAM backup
在master和backup主机上安装(n1,n3)haproxy yum install haproxy
修改配置文件
vi /etc/haproxy/haproxy.cfg #配置rabbitmq集群节点信息,n1、n3相同配置 #配置一个监听实例rabbitmq_cluster listen rabbitmq_cluster #监控端口 bind 0.0.0.0:5670 #配置TCP模式 mode tcp #简单的轮询 balance roundrobin #rabbitmq集群节点配置 server m1 192.168.12.190:5672 check inter 5000 rise 2 fall 2 server n1 192.168.12.192:5672 check inter 5000 rise 2 fall 2 server n3 192.168.12.194:5672 check inter 5000 rise 2 fall 2 #配置web端监控,查看统计信息 ###haproxy statistics monitor listen statics 0.0.0.0:8888 mode http log 127.0.0.1 local0 debug transparent #数据刷新频率 stats refresh 60s #后台地址:8888/haproxy-stats stats uri / haproxy-stats stats realm Haproxy \ statistic #账号密码 stats auth admin:admin Keepalived安装配置在master和backup主机上安装(n1,n3)
# yum install keepalived修改配置文件
vi /etc/keepalived.conf备用节点:
#定义一个脚本chk_haproxy vrrp_script chk_haproxy { script "/etc/keepalived/scripts/haproxy_check.sh" interval 2 } #定义一个VRRP实例 vrrp_instance VI_1 { #备用节点(主节点为MASTER) state BACKUP #添加虚拟地址的网卡 ,选择稳定的网卡 interface eth0 #虚拟路由标识,同一个VRRP实例要使用同一个标识 virtual_router_id 51 #主、备节点是由优先级控制的state参数会失效 priority 100 # 用于设定主备节点间同步检查时间间隔 #advert_int 2 # unicast_src_ip 192.168.12.194 unicast_peer { 192.168.12.192 } #授权方式 authentication { auth_type PASS auth_pass rabbitmq } #设置虚拟地址 virtual_ipaddress { 192.168.12.111 } #尽量将track_script放到virtual_ipaddress后面 track_script { chk_haproxy } #设置高可用集群中不抢占功能,在主机down后,从机接管,当主机重新恢复后,设置此功能,备机将继续提供服务,从而避免因切换导致的隐患 nopreempt # 当keepalived切换状态到MASTER时,执行脚本 notify_master "/etc/keepalived/scripts/haproxy_master.sh" # 当keepalived切换状态到BACKUP时,执行脚本 #notify_backup "/etc/keepalived/backup.sh" # 当keepalived切换状态到FAULT时,执行脚本 #notify_fault "/etc/keepalived/fault.sh" #当keepalived切换状态到STOP时,执行脚本 #notify_fault "/etc/keepalived/stop.sh" }