当前位置: 首页 > news >正文

HAproxy+keepalived安装配置教程

一、四层和七负载均衡的区

 

 

所谓层就ISO模型载均是 通过IPTCP/UDP层的的基IP端口见的基于负 载均衡器LVSF5等。

以常TCP负载个来户端SYN时,通 过设择一,同目标IP址修端 服IP给该个负程来看一个TCP端和立的而负了一路由 器的载均端服正确负载均衡时可源地程下

 

wKiom1ehnlPyTHtVAADAuOS47ms038.jpg-wh_50

 

同理,七层负载均衡器也称为七层交换机,位于 OSI 的最高层,即应用层,此时负载均衡器支持多种应用协议,常见的有 HTTP、FTP、SMTP 等。七层负载均衡器可以根据报文内 容,再配合负载均衡算法来选择后端服务器,因此也称为“内容交换器”。比如,对于 Web 服务器的负载均衡,七层负载均衡器不但可以根据“IP+端口”的方式进行负载分流,还可以根据网站的 URL、访问域名、浏览器类别、语言等决定负载均衡的策略。例如,有两台 Web 服务器分别对应中英文两个网站,两个域名分别是 A、B,要实现访问 A 域名时进入中 文网站,访问 B 域名时进入英文网站,这在四层负载均衡器中几乎是无法实现的,而七层负 载均衡可以根据客户端访问域名的不同选择对应的网页进行负载均衡处理。常见的七层负载均衡器有 HAproxy、Nginx 等。

 

这里常见TCP应用器要获取内容因此只能代替后端到客户端该 报文均衡算法部服务器观 整个,七层器在个代如下

 

wKioL1ehnlSAiWilAACxrcBzj6o775.jpg-wh_50 

 

对比负载可以看出模式

负载端的TCP连接层负载均下, 仅建立一TCP此可衡对负载层负均 衡的四层

 

 

二、ALVS的异同

 

种负一个结:

1)两者都是软件负载均衡产品,但是LVS是基于Linux操作系统实现的一种软负载均衡,而HAProxy是基于第三应用实现的软负载均衡。


2)LVS是基于四层的IP负载均衡技术,而HAProxy是基于四层和七层技术、可提供TCP和HTTP应用的负载均衡综合解决方案。


3)LVS工作在ISO模型的第四层,因此其状态监测功能单一,而HAProxy在状态监测 方面功能强大,可支持端口、URL、脚本等多种状态检测方式。


4)HAProxy虽然功能强大,但是整体处理性能低于四层模式的LVS负载均衡,而LVS拥有接近硬件设备的网络吞吐和连接负载能力。

 

综上所述,HAProxy和LVS各有优缺点,没有好坏之分,要选择哪个作为负载均衡器,要以实际的应用环境来决定。


 

 

三、快速安A集群软件

 

 

HAProxyhttp://www.haproxy.org/HAProxy操作系统Centos6.6 X64载的HAProxyhaproxy-1.6.7.tar.gz如 下:

 

#tar -zxvf haproxy-1.6.7.tar.gz


#cd haproxy-1.6.7


#make TARGET=linux26 PREFIX=/usr/local/haproxy

注:此处TARGET=linux26是填写系统内核版本 ,内核版本怎么看. uname -r 。如我的版本是2.6.32-504.el6.x86_64, 直接填写26即可。


#make instalPREFIX=/usr/local/haproxy

  haproxy/usr/local/haproxy


 

#mkdir  /usr/local/haproxy/conf

 haproxy文件haproxy目录


 

# cp examples/option-http_proxy.cfg  /usr/local/haproxy/conf/haproxy.cf

 

#haproxy,默认安件,这里例配件目录

这样HAProxy完成了。

 

 

四、A基础配置文件详

 

 

HAProxy据功能和5分组是必的, 可以部分置。

1)   global部分 用来属于和操


2)   defaults部分 默认此部认会下面frontend

backendlisten因此公用只需defaults部分添加 一次果在frontendbackendlisten部分中也defaults一样,那么defaults应的盖。

3)   ronte部分

 

此部请求frontendHAProxy1.3版本之后引 入的一个组件,同时引的还有backend组件过引入这些组件,在很程度上简化了 HAProxy杂性frontendACL规则使backend

4)   backend部分 此部服务用来理前

端用实服类似LVSreal server点。

 

5)   ste部分

 

此部frontendbackend合体HAProxy1.3HAProxy的 所有分中性,HAProxy本仍然保listen 组件目前HAProxy方式任选可。

下面HAProxy置文件

 

Global

log127.0.0.1 local0 info

maxconn4096

usernobody

groupnobody

daemon

nbproc 1

pidfile/usr/local/haproxy/logs/haproxy.pid

 

defaults

 

mode http

retries 3

timeoutconnect 10s

timeoutclient 20s

timeoutserver 30s

timeoutcheck 5s

 

frontend www

 

bind *:80

mode    http

 

 

option httplog

option forwardfor

option httpclose

log    global

 

#acl host_wwwhdr_dom(host)   -i  www.zb.com

#acl host_imghdr_dom(host)   -i  img.zb.com

 

#use_backendhtmpool   if  host_www

#use_backendimgpool   if  host_img

default_backend     htmpool

 

backend htmpool

 

mode http

optionredispatch

optionabortonclose

balance    static-rr

cookieSERVERID

optionhttpchk GET /index.jsp

server237server 192.168.81.237:8080 cookie server1weight 6 check inter 2000 rise2 fall 3

serveriivey234 192.168.81.234:8080 cookie server2weight 3 check inter 2000 rise 2 fall 3

 

 

 

 

backend imgpool

mode   http

optionredispatch

optionabortonclose

balance    static-rr

cookieSERVERID

optionhttpchk GET /index.jsp

serverhost236 192.168.81.236:8080 cookie server1 weight 6 check inter 2000rise 2fall 3

 

 

listen admin_stats

bind0.0.0.0:9188

mode http

log127.0.0.1 local0 err

statsrefresh 30s

stats uri/haproxy-status

statsrealm welcome login\ Haproxy

stats authadmin:admin~!@

statshide-version

     statsadmin if TRUE



五、启动与测hprox的负载均衡功能


 

1haproxy

 

启动务:

# /usr/local/haproxy/sbin/haproxy -f      /usr/local/haproxy/conf/haproxy.cfg

 

重启务:

# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg \

-st `cat/usr/local/haproxy/logs/haproxy.pid`

 

停止务:

# killalhaproxy

 

 

 

六、ro负载均衡器算法使用技

 

 

1HAProxy载均衡算法

1roundrobin单的算法

2static-rr根据权重

3leastconn少连处理

4sourceIP

5uri请求URI

6url_param据请URl进行调度

7hdr(name)HTTP来锁HTTP求;

8rdp-cookie(name)表示根据cookie(name)来锁每一TCP请求。

 

2

 

1roundrobin

2求源IPsource

3法:lestconn

 

七、通AACL规则实现智能负载均衡

 

 

由于HAProxy七层,因要实HAProxy一定使用强ACLACL基于HAProxy衡系HAProxy 通过ACL要的是:

1)通过设置ACL客户ACL么就将

放行规则求.

 

 

2)符合ACL请求将被backend基于

ACL


 

HAProxyACL常使frontend中,使用下:

 

acl     自定义的acl名称  acl方法  [匹配的路或文件]

 

其中:

acl:是一个关键字,表示定义ACL规则的开始。后面需要跟上自定义的ACL名称。

 

acl方法:这个字段用来定义实现ACL的方法,HAProxy定义了很多ACL方法,经常使用的方法有hdr_reg(host)hdr_dom(host)hdr_beg(host)url_suburl_dir path_begpath_end等。

 

-i:表示忽略大小写,后面需要跟上匹配的路径或文件或正则表达式。

 

ACL规则一起使用的HAProxy参数还有use_backenduse_backend后面需要跟上一个backend实例名,表示在满足ACL规则后去请求哪个backend实例,与 use_backend对应的还有default_backend参数,它表示在没有满足ACL条件的时候默认使用哪个后端backend





下面常见ACL规则子:

 

acl www_policy        hdr_reg(host)           -i       ^(www.z.cn|z.cn)

 

acbbs_policy           hdr_dom(host)         -i       bbs.z.cn

 

acurl_policy             url_sub    -i     buy_sid=

  

       use_backend    server_www    if  www_policy 

       use_backend    server_app    if  url_policy    

       use_backend    server_bbs    if  bbs_policy    

       default_backend  server_cache    

   




 

 


 

八、使用HAProxy的Web监控平台

 

 

      HAProxy虽然实现了服务的故障转移,但是在主机或者服务出现故障的时候,并不能发出通知告知运维人员,这对于及时性要求很高的业务系统来说,是非常不便的,不过,HAProxy 似乎也考虑到了这一点,在新的版本中HAProxy推出了一个基于Web的监控平台,通过这 个平台可以查看此集群系统所有后端服务器的运行状态,在后端服务或服务器出现故障时,


       监控页面会通过不同的颜色来展示故障信息,这在很大程度上解决了后端服务器故障报警的 问题,运维人员可通过监控这个页面来第一时间发现节点故障,进而修复故障。

登录地址是:http://IP:9188/haproxy-status

用户名和密码:就是在配置文件里设置的 admin、admin~!@

 

 

wKioL1ehoKDT_QBjAAO9NILGG4M882.jpg-wh_50

 

 

九、pro高可用负载均衡系统

 

 

1HAproxy统的

 

wKioL1ehnlXhrjlIAAEe3wLigSY374.jpg-wh_50 

在备机重新安haproxy,然后配haproxy,这个不再介绍,下面直接给出配置好的 keepalived.conf容。haproxy-serverkeepalived.conf如下

 

global_defs

 {notification_email

{

acassen@firewall.loc

failover@firewall.loc

sysadmin@firewall.loc

}

 

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id HAProxy_DEVEL

}

 

vrrp_script check_haproxy {

script "killall -0 haproxy"       

#设置探测 haproxy 服务运行状态的方式,这里的killall -0 haproxy”仅仅是检测 haproxy 服务状态

 

interval 2

}

 

 

vrrp_instance HAProxy_HA {

 

state BACKUP 

# haproxy-server  backup-haproxy 上均配置为 BACKUP interface eth0

virtual_router_id 80

priority 100

advert_int 2

nopreempt     #不抢占模式,只在优先级高的机器上设置即可,优先级低的机器不设置 authentication {

auth_type PASS

auth_pass 1111

}

 

 

track_script

 

 {check_haproxy

}

 

virtual_ipaddress {

 

192.168.66.10/24 dev eth0   #HAProxy 的对外服务 IP,即 VIP

}

}


 

最后,keepalived.conf文件复制backup-haproxy服务器上对应的位置,然后将 keepalived.confpriority值修90,由于配置的是不抢占模式,因此,还需backup-haproxy器上去掉nopreempt项。


完成别在haproxy-serverbackup-haproxy主机启动haproxy服 务和keepalived。注意,haproxy因为keepalived服务启动 的时会自检测 haproxy是否如果haproxy务没,那主、备keepalivedfault状态。后,VIP址应在 haproxy-server通过令“ipa以查VIP加载



本文转自pizibaidu 51CTO博客,原文链接:http://blog.51cto.com/pizibaidu/1833986,如需转载请自行联系原作者

相关文章:

  • SMO学习笔记(三)——效验数据库备份文件
  • sqlite - java 初学
  • 魅力 .NET:从 Mono、.NET Core 说起
  • Ubuntu使用Remastersys封装制作系统ISO镜像
  • HTML5新增的元素详解
  • fedora学习笔记 7:su与su-切换用户
  • c语言第六次作业
  • Delphi编写事件模型客户端(2)
  • nginx日志切割代码
  • [Android]竖直滑动选择器WheelView的实现
  • 刻录机读空白盘时提示无法打开
  • 枚举项的数量限制在64个以内
  • 关于C和C++语言声明和定义的说明
  • Tomcat 8安装与配置
  • [CTO札记]如何测试用户接受度?
  • 【React系列】如何构建React应用程序
  • Android开源项目规范总结
  • C++类的相互关联
  • gf框架之分页模块(五) - 自定义分页
  • JavaScript创建对象的四种方式
  • JavaScript设计模式系列一:工厂模式
  • Java小白进阶笔记(3)-初级面向对象
  • nginx 配置多 域名 + 多 https
  • orm2 中文文档 3.1 模型属性
  • PHP的Ev教程三(Periodic watcher)
  • Spring Cloud中负载均衡器概览
  • 彻底搞懂浏览器Event-loop
  • 代理模式
  • 电商搜索引擎的架构设计和性能优化
  • 高程读书笔记 第六章 面向对象程序设计
  • 机器学习中为什么要做归一化normalization
  • 解析带emoji和链接的聊天系统消息
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 开源SQL-on-Hadoop系统一览
  • 思否第一天
  • 用jquery写贪吃蛇
  • 关于Android全面屏虚拟导航栏的适配总结
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​Linux·i2c驱动架构​
  • #define 用法
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1)(1.13) SiK无线电高级配置(五)
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (6)设计一个TimeMap
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (六)软件测试分工
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (算法)N皇后问题
  • (转)可以带来幸福的一本书
  • .bashrc在哪里,alias妙用
  • .NET Core WebAPI中封装Swagger配置
  • .NET delegate 委托 、 Event 事件,接口回调