haproxy+keepalived实现负载均衡及高可用

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高性能性、负载均衡,以及基于TCP和HTTP的应用程序代理。相较与 Nginx,HAProxy 更专注与反向代理,因此它可以支持更多的选项,更精细的控制,更多的健康状态检测机制和负载均衡算法。

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter在内众多知名网站,及亚马逊网络服务系统都使用了HAProxy。

Haproxy的特性:

1、可靠性与稳定性都非常出色,可与硬件级设备媲美。

2、支持连接拒绝,可以用于防止DDoS攻击

3、支持长连接、短连接和日志功能,可根据需要灵活配置

4、路由HTTP请求到后端服务器,基于cookie作会话绑定;同时支持通过获取指定的url来检测后端服务器的状态

5、HAProxy还拥有功能强大的ACL支持,可灵活配置路由功能,实现动静分离,在架构设计与实现上带来很大方便

6、可支持四层和七层负载均衡,几乎能为所有服务常见的提供负载均衡功能

7、拥有功能强大的后端服务器的状态监控web页面,可以实时了解设备的运行状态,还可实现设备上下线等简单操作。

8、支持多种负载均衡调度算法,并且也支持session保持。

有关keepalived请参看博客:http://13150617.blog.51cto.com/13140617/1979652

实验:实现基于Haproxy+Keepalived负载均衡高可用架构

1、准备四台机器:两台用于haproxy主从架构,两台作为后端server

haproxy-master:两块网卡,桥接模式和仅主机模式都有

VIP:172.17.111.10

haproxy-backup:两块网卡,桥接模式和仅主机模式都有

VIP:172.17.111.10

后端server1:仅主机网卡:RIP:192.168.199.146

后端server2:仅主机网卡:RIP:192.168.199.143

2、在haproxy-master上操作

①安装keepalived,配置keepalived。

具体参数含义请参看博客:http://13150617.blog.51cto.com/13140617/1979652

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 2

router_id LVS_DEVEL2

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 33

#    nopreempt

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 111111

}

virtual_ipaddress {

172.17.111.10

}

}

systemctl start keepalived  启动服务

②配置日志服务

vim /etc/rsyslog.conf

$ModLoad imudp     开启UDP的日志服务,也可以开启TCP

$UDPServerRun 514

local2.* /var/log/haproxy.log  定义日志标准

systemctl restart rsyslog  重启日志服务

③配置haproxy

vim /etc/haproxy/haproxy.cfg

global                      全局配置

log        127.0.0.1 local2   日志类型

chroot      /var/lib/haproxy  修改haproxy的工作目录

pidfile     /var/run/haproxy.pid 进程id

maxconn      4000        最大连接数

user        haproxy        运行用户

group       haproxy        所属组

daemon                   让haproxy以守护进程的方式工作

stats socket /var/lib/haproxy/stats可开启一个unix socket管理接口

defaults

mode              http  实现http的7层规则

log               global 日志定义,沿用global的日志定义

option             httplog 启用日志记录HTTP请求

option             dontlognull 日志中将不会记录空连接

option http-server-close      强制短连接

option forwardfor     except 127.0.0.0/8 添加xforward日志标记

option            redispatch      出错时重新分配

retries            3            重试次数

timeout http-request   10s           请求超时时间

timeout queue        1m           队列超时

timeout connect      10s           连接超时

timeout client       1m            客户端超时

timeout server       1m            服务器端超时

timeout http-keep-alive 10s           持久连接

timeout check       10s            检查超时

maxconn           3000           最大连接

listen stats   定义一个统计报告服务

mode http #基于http协议

bind 0.0.0.0:1080 #监听1080端口

stats enable #开启统计报告服务

stats hide-version #隐藏统计报告版本信息

stats uri /haproxyadmin #统计报告访问url

stats realm Haproxy\ Statistics #页面登陆信息

stats auth admin:admin #验证账号信息

stats admin if TRUE #验证模式

frontend  http-in   定义一系列监听的套接字

bind *:80

default_backend      app

backend app    定义一系列“后端”服务器

balance  roundrobin

option  httpchk /index.php   检查页面

server  app1 192.168.199.146:80 check inter 3000 rise 3 fall 3

server  app2 192.168.199.143:80 check inter 3000 rise 3 fall 3

systemctl start haproxy   启动haproxy服务

④开启转发

echo 1 > /proc/sys/net/ipv4/ip_forward

3、在haproxy-backup上操作

①安装keepalived,配置keepalived

vim /etc/keepalived/keepalived.conf

配置基本同上,只需要修改state的状态为BACKUP

systemctl start keepalived 启动服务

②配置日志服务

完全同上

③配置haproxy

完全同上

④开启转发

echo 1 > /proc/sys/net/ipv4/ip_forward

4、测试keepalived高可用:当主服务器正常工作时,VIP在主服务器上,当关闭主服务器的keepalived服务,VIP会漂移到从服务器上,而且网站照常可以访问

关闭主服务器后IP漂移:

测试haproxy:

访问:http://172.17.111.10:1080/haproxyadmin 查看统计报告,都正常

实验二、通过ACL指定可访问的用户

在frontend中加入

acl myhost src 172.16.100.1  指定可访问的ip

acl myport dst_port 80     指定目标端口

block if ! myhost myport   拒绝其他主机访问

重启haproxy服务:systemctl restart haproxy

测试:在添加此acl之前,其他主机可以访问

添加此acl之后就不能访问了

实验三、根据用户访问内容实现动静分离

在frontend中加入

acl url_static  path_beg  -i /data /images /javascript /stylesheets /themes 匹配开头

acl url_static  path_end  -i .jpg .gif .png .css .js .jpeg 匹配后缀

use_backend static   if url_static  如果符合条件就匹配到static中所定义的服务器

backend static  定义“后端”服务器

balance     roundrobin   轮询

server  static1 192.168.199.146:80 check

server  static2 192.168.199.143:80 check

重启haproxy服务:systemctl restart haproxy

效果:所有的图片等静态页面就会被分配到这两个server里

实验四、实现真实日志记录

defaults里添加

option forwardfor except 127.0.0.0/8

那么查看nginx的日志就会看到访问该服务器的真实的客户端IP

实验五、实现会话保持

在backend中的server中插入cookie,比如

server  app1 192.168.199.146:80 cookie haha check inter 3000 rise 3 fall 3

server  app2 192.168.199.143:80 cookie hehe check inter 3000 rise 3 fall 3

那么访问过app1服务器的主机就会被标记为haha(在cookie中插入此标记),下次访问时直接被调度到同一台机器,但是在到达服务器之前cookie会被清理。如果该服务器宕机了,那么会被重新标记到别的服务器。

感谢浏览,如有疑问,欢迎留言。

时间: 2024-08-11 11:46:24

haproxy+keepalived实现负载均衡及高可用的相关文章

HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境

HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入?引入了frontend,backend:frontend根据任意 HTTP请求头内容做规则匹配,然后把请求定向到相关的backend. Keepalived介绍Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障.一个WEB服务至少会有2台服务

实战 LVS+Keepalived 实现负载均衡和高可用

1.软件介绍 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡. LVS负载均衡有4种负载均衡方式 a.DR 模式 b.NAT 模式 c.Tunnel 模式 d.Full NAT 模式 LVS负载均衡8种调度算法 (rr,wrr,lc,wlc,lblc,lblcr,dh,sh) 各个模式的原理在此不再赘述,本文使用DR模式,rr调度算法. Keepalived 是运行在lvs 之上,它的主要功能是

Keepalived负载均衡与高可用

1.keepalived服务介绍Keepalived的项目实现的主要目标是简化LVS项目的配置并增强其稳定性,即Keepalived是对LVS项目的扩展增强.Keepalived为Linux系统和基于Linux 的架构提供了负载均衡和高可用能力,其负载均衡功能主要源自集成在Linux内核中的LVS项目模块IPVS( IP Virtual Server ),基于IPVS提供的4 层TCP/IP协议负载均衡, Keepalived也具备负载均衡的功能,此外, Keepalived还实现了基于多层TC

用haproxy结合keepalived实现基于LNMP的负载均衡和高可用

今天我们讲haproxy结合keepalived实现LNMP的负载均衡和高可用,现在的公司大部分都基于haproxy实现负载均衡.下面以一个事例去给大家详细讲解如何去实现: 一.用haproxy结合keepalived实现基于lnmp的负载均衡和高可用服务,要求: (1)实现动静分离,图片和css,js都分离到专门的静态服务器上 (2)只允许172.17网段用户访问 (3)对于动态请求,要求实现基于cookie的会话保持 整体架构如下: 1.实验前需要关闭防火墙和selinux,以及同步时间.

Keepalived+LVS+Nginx负载均衡之高可用

Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Serve

nginx反向代理tomacat+keepalived实现动静分离、负载均衡、高可用

本文的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图片.html.JS.CSS等静态文件,tomcat处理jsp.servlet等动态请求 服务器名称                                 系统版本                           预装软件                     IP地址 Nginx服务器                             CentOS 7 最小安装              Nginx

Nginx之二:负载均衡及高可用

一.Nginx负载均衡及高可用简介 负载均衡是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务.负载均衡,将用户的所有HTTP请求均衡的分配到每一台机器上,充分发挥所有机器的性能,提高服务的质量和用户体验.负载均衡常用的Web服务器软件有Nginx.HAProxy.LVS.Apache. Nginx负载均衡是通过upstream模块来实现的,常见四种负载策略: 轮循(默认:将每个请求均匀分配到每台服务器 最少连接:将请求分配给连接数最少的服务器 IP

Keepalived_tengine实现discuz负载均衡和高可用

前言: 上篇博文<keepalived_nginx实现discuz负载均衡和高可用>讲到,由于nginx将health_check功能放入到了商业版本,导致社区版本的nginx进行负载均衡,无法对后端的RS主机进行健康状态检测,所以现在准备使用tengine来取代nginx.我们只需要将前一章节VS主机上的nginx替换为tengine即可. 配置: Host VS1 卸载nginx,安装tengine # yum remove -y nginx # yum groupinstall -y &

Nginx代理MogileFS并实现负载均衡和高可用

Nginx代理MogileFS并实现负载均衡和高可用 MogileFS nginx 负载均衡 大纲 实验环境 实验步骤 配置MogileFS 配置Nginx 总结 前言 上篇文章我们了解分布式系统和MogileFS的基本使用, 但是那样的架构是有问题的, 本篇文章我们来了解一下如何使用nginx-mogilefs-module-master模块来构建一个不一样的 MogileFS Cluster 实验拓扑 实验环境 主机 IP 功用 node6 172.16.1.7 Nginx,Tracker,