`
yangzb
  • 浏览: 3500042 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ha-proxy 学习

阅读更多

什么是ha-proxy  

     
      HA-Proxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,特别适用于那些负载 特大的web站点。运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上

 

 

 

     HA-Proxy相比 LVS 的使用要简单很多,功能方面也很丰富。 HA-Proxy 可以在 4 7 两层作负载均衡, 4 层大多用于邮件服务器、内部协议通信服务器等作负载均衡, 7 层用于 Http 分析负载转发。

 

 

     HA-Proxy 官方网站可以下载配置说明文档 (configuration.txt) 和架构文件 (architecture.txt) 作为参考。具体的使用细节不做太多介绍,这里主要通过具体的配置来大致说一下 HA-Proxy 的结构。

 

 

   



     HA-Proxy 配置中分成四部分内容,当然这些组件不是必选的,可以根据需要选择部分作为配置。 Defaults 组件是配置默认参数的,这些参数可以被利用配置到 frontend backend listen 组件中(当这些组件某些参数没有被配置而在 Defaults 中配置了)。 Frontend 组件是接收请求的前端虚拟节点,就类似于 LVS 中配置了 VIP Load Balancer Frontend 可以直接指定后端指向那一个 backend( 可动态选择 ) Backend 是后端服务集群的配置,类似于 LVS 中的那些 Real Server ,一个 Backend 对应一个或者多个实体服务器。 Listen Frontend Backend 的组合体,可以直接定义一个类似于 JBoss Server Farm 。还有一些默认的配置可以通过在配置文件中配置或者在命令行中作为参数输入。

 


安装haproxy   

tar zxvf haproxy-1.4.8.tar.gz   
cd haproxy-1.4.8  
uname -a //查看linux内核版本  
make TARGET=linux26 PREFIX=/usr/local/haproxy  #TARGET是内核版本,2.6就写作26
make install PREFIX=/usr/local/haproxy

 

 

执行/usr/local/haproxy目 录下执行haproxy,如 如果有使用说明出现表示已经安装正常。
使用时使用haproxy -f 配置文件地址

 

 

HA-Proxy 日志配置说明:
      HA-Proxy 可以收集本机及其他后端服务器日志,但是需要在 Load Balancer 上作一些配置。 首先修改 /etc/sysconfig/syslog 文件,将 SYSLOGD_OPTIONS="-m 0” 修改为 SYSLOGD_OPTIONS="-m 0 -r -x" ,支持收集远程服务器日志。 然后修改 /etc/syslog.conf ,增加如下语句:
#add by haproxy

local0.* /home/admin/tools/haproxy-1.3.17/haproxy.log // haproxy.log
地址代表了需要存储日志的地址

执行
service syslog restart ,重新启动系统日志器

最后就是在
HA-Proxy 的配置中增加日志输出(具体可以参考后面的配置文件说明)


HA-Proxy 配置文件说明:
下面的配置文件简单来说就是配置了根据请求参数的不同,将请求分别定向到后端的app1集群和app2集群。
具体配置文件 (haproxy.cfg) 如下:

global         //全局设置
        log 127.0.0.1   local0   info    //日志输出配置,所有日志都记录在本机,通过local0输出,我们前面已经配置了local0
        maxconn   51200                //最大连接数
        user www                             //执行ha-proxy的用户
        group www                          //执行ha-proxy的组
        pidfile    /var/run/haproxy.pid       //pid 文件存放的位置
        nbproc       2                                //启动2个ha-proxy实例
        daemon                                      //以后台形式运行ha-proxy
        #debug
        #quiet

defaults     //默认设置

        mode    http                       //默认采用http模式,可配置成tcp作4层消息转发
        option   httplog                 //采用httplog
        retries   3                          //3次连接失败就认为服务器不可用,主要通过后面的check检查
        maxconn   2000                         //最大连接数
        contimeout 5000                      //连接超时时间
        clitimeout     5000                      //客户端连接超时时间
        srvtimeout    5000                     //服务器端连接超时时间
        stats    uri     /admin?stats         //服务器状态查看页面
        stats    auth   bikong0411:bikong0411               //服务器状态查看页面身份验证,可以不设置
        option httpchk     HEAD /welcome.html   HTTP/1.1   //服务器状态设置,这里是向每一个后端服务器请求/welcome.html来检测健康状况

frontend   http-in           //前端节点定义
     bind    :8181            //虚拟服务器监听8181端口,也可以写作ip:port这种形式
     mode   http
     log       global
     opention    httplog
     opention    httpclose        //每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现
     opention     forwardfor        //如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
    
capture    request    header Host len 20 //此配置和以下类似都是抓取http请求的参数记录到日志的
   
capture    request    header User-Agent len 10
   
capture    request    header Referer len 20
   
capture    request    header Content-Length len 10
     //控制策略设置

    acl app1 url_sub -i app=app1   //在请求url 中含app=app1,则此策略为true,否则为false       

    acl app2 url_sub -i app=app2   //在请求url中含app=app2,则此策略为true,否则为false

    acl   invalid_req   url_sub -i app=   //在请求url中若包含app=,则此策略为true,否则为false

    acl   stat_req      url_dir -i admin   //在请求url中admin作为部分路径时,则此策略为true,否则为false

   block if !invalid_req !stat_req      //block表示阻止,返回403状态码,表示当前url请求既不满足invalid_req策略也不满足stat_req策略

   use_backend   app1_server if app1      //如果满足app1策略,使用app1_server做为后端集群

    use_backend   app2_server if app2    //如果满足app2策略,使用app2_server做为后端集群

   default_backend   app1_server                      //app1_server作为默认集群

backend app1_server            //后端接点定义

      mode   http

      balance    roundrobin       //负载均衡策略配置

      cookie      SERVERID            //允许插入serverid到cookieid中,serverid后面要定义

      server app1_test1 192.168.1.101:80 cookie 1 check fall 5 weight 1   //真实服务器配置定义cookie1 表示serverid为1,check表示需要状态检查,fall 5 表示失败5次就认为服务器不可用,weight表示权重

      server app1_test2 192.168.1.102:80 cookie 1 check fall 5 weight 1

backend app2_server               //后端接点定义

      mode http

      server app2_test   192.168.1.103:80   check fall 5

完成配置后,执行 haproxy –f haproxy.cfg ,后台进程就可以启动了,然后在浏览器中输入刚才定义的状态检查地址http://ip:8181/admin?stats 可以看到结果.    

分享到:
评论

相关推荐

    hadoop HA配置文件.zip

    此外,`dfs.client.failover.proxy.provider.*`定义了客户端使用的失败切换代理提供商,使得客户端可以在名称节点间自动切换。 **yarn-site.xml**:YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,...

    k8s集群部署文档.docx

    本篇文档将介绍如何使用二进制方式部署Kubernetes v1.13.4高可用(HA)集群。这种部署方式适用于那些希望通过手动配置来深入理解k8s工作原理的用户。 首先,二进制部署不同于使用kubeadm工具的自动化部署,它需要...

    Kubernetes Master High Availability 高级实践

    在深入讨论Kubernetes Master High Availability(高可用性)的高级实践...而文档中提到的唐继元先生和caicloud.io的信息表明这可能是来自于CloudCare公司的一次培训或演讲,专业性和实用性较高,值得深入学习和实践。

    K8s实战案例总结-从入门到精通

    - **Kube-proxy**:负责维护节点上的网络规则,实现服务(Service)的网络路由。 #### 高可用集群环境规划 在本节中,我们将详细介绍如何规划并部署单master或多master的高可用K8s运行环境。 ##### 单master高可用...

    k8s1.20.4-高可用集群部署-新增项目-kubernetes安装包和详细文档笔记整理

    5. 部署工作节点:在每个工作节点上安装kubelet和kube-proxy。 6. 配置网络策略和存储解决方案。 7. 验证集群状态和功能。 五、详细文档笔记的价值 提供的文档笔记可能是安装过程的记录,包括了配置细节、遇到的...

    k8s-v.1.14.2搭建和操作(安装-web-监控-完成)-kubernetes的kubeadmin高可用包和详细文档笔记

    Kubernetes作为业界领先的容器编排系统,其高可用性(HA)对于生产环境至关重要。这里我们将详细探讨如何利用k8s-v.1.14.2版本来搭建一个完整的集群,并重点介绍kubeadmin的高可用安装包和相关文档笔记。 首先,...

    kubekey2.2.1搭建高可用k8s1.22.10集群-详细笔记资料包

    在高可用性(HA)集群设置中,至少有三个主节点,以确保即使在一个或两个节点故障时,集群仍能正常运行。KubeKey支持这种配置,可以轻松地创建多主节点的集群。 接下来,我们进入KubeKey 2.2.1的安装步骤: 1. **...

    Genesys操作手册.pdf

    高可用性(High Availability,简称HA)Proxy的部署是为了在主服务器出现故障时提供故障转移,确保服务的连续性不被中断。T-Server作为Genesys产品系列的一部分,能够在呼叫中心环境中集成多个通信渠道,并与Genesys...

    Apache2.2 tomcat6集群练习

    Apache2.2与Tomcat6集群配置教程 在IT行业中,服务器集群是一种常见的技术,用于提高系统的可用性和可扩展性。本教程将详细介绍如何在Apache2.2与Tomcat6环境下...不断学习和优化,才能构建更强大、可靠的集群系统。

    Linux运维-03-服务器的高可用-03配置.zip

    服务器的高可用性(High Availability, HA)是确保业务连续性和稳定性不可或缺的要素。本资料"Linux运维-03-服务器的高可用-03配置.zip"着重介绍了如何在Linux环境中实现服务器的高可用性配置。 首先,我们要理解...

    藏经阁-Redis最佳实践与实战指南-47.pdf

    当主节点故障,HA系统会在30秒内完成主备切换。单副本则无实时同步的备用节点,适用于纯缓存场景。读写分离版针对读多写少的业务,通过Proxy节点实现读写分离,优化读取性能。 2. 双副本模式 在双副本模式中,主从...

    HA_SE_entwurfsmuster:另一个任务

    描述中的"HA_SE_design模式"和"另一个任务"可能是指一个特定的学习或项目任务,专注于理解或应用设计模式。 在Java领域,设计模式不仅提高了代码的可读性、可维护性和可扩展性,还促进了团队间的沟通。以下是一些...

    Mobile IP通讯协议架构

    PMIP IPV6.txt可能讨论了_proxy Mobile IPv6_,这是IPv6中为移动网络设计的一种更优化的方案,旨在减少延迟和提高性能。 7. **学习资源**: - `rfc3344-IP mobility support for ipv4.htm` 提供了IPv4移动IP的...

    tomcat集群

    - 示例:对于Apache,可以使用mod_proxy和mod_jk模块。 3. **启用会话复制** - 在`conf/server.xml`文件中配置`<Cluster>`元素: ```xml <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> ...

    k8s-ansible:利用ansible自动化安装k8s高可用利用率

    高可用性(HA)是指系统在面临故障时仍能保持正常运行的能力,对于K8s集群来说,通常包括多个控制平面节点和工作节点,以确保服务连续性。 Ansible则是一个基于YAML的配置管理工具,通过编写Playbook,我们可以定义...

    VSTP2017认证考试正确答案截图

    4. **高可用性与容错**:学习如何利用vSphere High Availability (HA)、Distributed Resource Scheduler (DRS)和Fault Tolerance (FT)来提高虚拟化环境的可靠性。 5. **备份与恢复**:理解vSphere备份策略,包括...

    XTM Basic Training CN操作文档手册.docx

    * 学习使用Proxy策略 * 用户身份认证 四、高级培训概要 XTM高级培训课程概要包括了: * 多WAN口的设计 * 使用QoS和网络流量管理 * VLAN的使用 * HA的配置 * 使用Management Server进行集中管理 五、认证考试 ...

    keepalive nginx及面试题压力测试视频.zip

    首先,`keepalived`是一个开源项目,主要用于实现Linux服务器的高可用性(HA)。它基于VRRP(Virtual Router Redundancy Protocol)协议,可以在主服务器出现故障时自动将流量切换到备份服务器,确保服务的不间断...

    Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo

    对于基于内存的session复制,Tomcat可以通过`org.apache.catalina.ha.session.DeltaManager`作为session manager,但这种方式需要所有Tomcat实例之间进行实时同步,网络负担较大。另一种方法是利用Nginx的sticky模块...

Global site tag (gtag.js) - Google Analytics