haproxy 理论

它可以反向代理http/tcp协议,七层和四层的负载均衡解决方案

七层的负载解决方案是因为他们支持高级特性,工作在用户空间,请求从用户空间转换到内核空间是非常浪费硬件资源的。

haproxy有一个monitor接口 可以查看连接状况。

haproxy是一个单一进进程响应众多请求的负载均衡,他可以开启多进程,但是官方不建议开启多进程。haproxy1.4 还可以根据url进行调度,这样可以提高缓存命中率。这也是使用haproxy的重要原因之一。

还可以根据acl进行持久连接

环境

角色                     主机                     IP

haproxy             centos6.5            192.168.1.105(桥接)

192.168.3.50(vmnet8)           web1          centos6.5            192.168.3.100(vmnet8)

web2                cnntos6.5            192.168.3.101(vmnet8)

web1和web2的网关指向192.168.3.50

.配置haproxy

[root@localhost ~]# yum -y install haproxy

配置文件

haproxy配置文件有两部分

(1)全局配置:

global  设置进程属性的设定

proxies  代理的配置

defaults

frontend(前端)

backend(后端)

listen(整合前端和后端的)

2)首先我们通过frontend+backend的方法实现haproxy的负载均衡

[root@localhost ~]# vim  /etc/haproxy/haproxy.cfg

#在文件最后定义后端资源组

backend web

balance     roundrobin

server web1 192.168.3.100:80 check

server web2 192.168.3.101:80 check

解释:web为定义的资源组的名称

      roundrobin轮询调度算法

      web1web2都为节点的名称,可以自定义,这里的名字用于记录日志使用。

      check为健康状态检查

 

#定义前端(相当于nginx中的server)

frontend  webserver *:80

default_backend web

 

解释:

webserver为前端的名称,可以定定义

default_backend将监听在80端口的请求转发给名称为web的资源组

启动haproxy

[root@localhost ~]# service haproxy start

正在启动 haproxy:                                         [确定]

在两个节点中添加index.html,访问http://192.168.3.50,看到轮询效果。

健康状态检查。

停止掉其中的任意一个web服务,会发现,故障的节点将不会被调度。

3)启动日志记录

[root@localhost ~]# vim /etc/rsyslog.conf

13 $ModLoad imudp

14 $UDPServerRun 514

17 $ModLoad imtcp

18 $InputTCPServerRun 514

启用13,14,17,18行

在62添加一行日志位置

62    local2.*                    /var/log/haproxy.log

这是全局日志,

 

我们可以在每个frontend中定义单独的日志文件

格式:

log 127.0.0.1 local3

然后在rsyslog中定义local3及其位置

然后在访问,就会出现日志

 

 

4.通过source(ip_hash)算法,将同一客户端的请求到同一台server上去。

基于上边的配置,修改一下算法

backend web

balance     source

server web1 192.168.3.100:80 check

server web1 192.168.3.101:80 check

再次访问页面时候,会发现只停留在一个server上面

5.还有一种就是基于url路径转发。

backend web

balance     uri

server web1 192.168.3.100:80 check

server web1 192.168.3.101:80 check

只要访问的是同一个路径,会被转发到同一个server

 

二、指定haproxy的工作模式

模式有两种

http模式

定义应用层数据深入分析,因此支持7层的过滤。处理,转换等机制

tcp模式

haproxy在客户端和应用服务器之间建立一个全双工的连接,不会对应用层协议      做任何检查。ssl mysql 等都应该使用此模式。

指定模式使用mode参数

三、启用状态监控

[root@localhost haproxy]# vim /etc/haproxy/haproxy.cfg

backend web

balance     uri

 stats       enable

server web1 192.168.3.100:80 check

server web1 192.168.3.101:80 check

访问以下地址

http://192.168.3.50/haproxy?stats

(2)启用认证才能访问状态监控界面

backend web

balance     uri

stats       enable

    stats       auth admin:admin

server web1 192.168.3.100:80 check

server web1 192.168.3.101:80 check

(3)启用管理功能

backend web

balance     uri

stats       enable

stats       auth admin:admin

   stats       admin if TRUE

server web1 192.168.3.100:80 check

server web1 192.168.3.101:80 check

server backup 127.0.0.1:8010 check backup

就是说你通过认证才能使用管理功能

 

四、设置备用服务器(错误页面服务器)

当所有server宕机,请求会转发至错误错误页面

准备一台单独的web服务器,或者是haproxy本身,但是端口不能使用80

[root@localhost haproxy]# vim /etc/httpd/conf/httpd.conf

Listen 8010

[root@localhost html]# vim /var/www/html/index.html

<h1>error</h1>

vim haproxy.cfg

backend web

balance     uri

stats       enable

stats       auth admin:admin

server web1 192.168.3.100:80 check

server web1 192.168.3.101:80 check

server backup 127.0.0.1:8010 check backup

 

然后我们宕掉两台web,在访问3.50 会发现页面会跳转至error页面

haproxy常用配置的更多相关文章

  1. HAPROXY 配置项/配置实例

    HAPROXY 配置项/实例 常用配置选项: OPTION 选项: option httpclose :HAProxy会针对客户端的第一条请求的返回添加cookie并返回给客户端,客户端发送后续请求时 ...

  2. HAproxy部署配置

    HAproxy部署配置 拓扑图 说明: haproxy服务器IP:172.16.253.200/16 (外网).192.168.29.140/24(内网) 博客服务器组IP:192.168.29.13 ...

  3. HAProxy 参数配置

    RabbitMQ集群部署完成,通过HAProxy反向代理来提供统一的对RabbitMQ的访问入口. 1.Haproxy提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理.(负载均衡策略有很 ...

  4. HAProxy详解(二):HAProxy基础配置与应用实例

    一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...

  5. 负载均衡服务之HAProxy基础配置(一)

    前文我们聊了下haproxy的基础安装,以及怎样去代理后端主机的配置:当然没有很详细的去说配置文件中各指令的意思:有关haproxy的安装和代理后端server可以参考本人博客https://www. ...

  6. 负载均衡服务之HAProxy基础配置(二)

    前文我们聊了下haproxy的global配置段中的常用参数的说明以及使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12763245.html:今天我们来 ...

  7. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  8. 【转】logback logback.xml常用配置详解(三) <filter>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  9. 【转】logback logback.xml常用配置详解(二)<appender>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

随机推荐

  1. 【Linux】【Services】【Project】Cobbler自动化装机

    1. 概念 1.1. Cobbler 1.2. PXE 1.3. 2. 版本信息 2.1. OS:Red Hat Enterprise Linux Server release 7.3 (Maipo) ...

  2. 【Linux】【Shell】【text】grep

    grep: Global search REgular expression and Print out the line. 作用:文本搜索工具,根据用户指定的"模式(过滤条件)" ...

  3. promise ,async 小记

    Promise Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及该异步操作的结果值. 摇色子游戏,随机1-6的一个整数,并且将其返回. function fn() { retur ...

  4. SpringSecurity Oauth2.0

    1.用户认证分析 上面流程图描述了用户要操作的各个微服务,用户查看个人信息需要访问客户微服务,下单需要访问订单微服务,秒杀抢购商品需要访问秒杀微服务.每个服务都需要认证用户的身份,身份认证成功后,需要 ...

  5. 【HarmonyOS】【DevEco Studio】NOTE02 :Create a  “Hello World ”Application

    Author:萌狼蓝天 StudyTime:2021/12/06 Version:3.0 Beta1 包结构 src | --> resource 资源文件目录 | --> layout/ ...

  6. 【Office】【Excel】将多个工作表合为一个工作表

    在工作表中按下alt+F11打开vba编辑窗口,在菜单栏中选择[插入]=>[模板],将下面的代码粘贴过去,然后运行即可 点击查看代码 Sub 合并当前工作簿下的所有工作表() On Error ...

  7. Mysql资料 查询条件

    目录 一.计算 二.比较 三.逻辑运算符 四.位运算符 五.优先顺序 一.计算 二.比较 三.逻辑运算符 四.位运算符 五.优先顺序 实际上,很少有人能将这些优先级熟练记忆,很多情况下我们都是用&qu ...

  8. 用 WinUI 3 开发了一个摸鱼应用

    1. 开发了一个摸鱼 App 我做了一个简单的 App:摸鱼. 如上图所示,这个 App 就只有一个按钮,点击后假装开始 Windows Update,然后用户就可以光明正大地摸鱼了. 不要小看摸鱼, ...

  9. 搞IT的应届生如何写好简历?

    本人在互联网大厂和外企做过技术面试官,也有过校招和招聘应届毕业生的经验,所以自认为在这个问题上有一定的发言权.   应届毕业生(其实其他求职者也一样)首先要知道,面试官凭什么决定这份简历有面试机会?而 ...

  10. Mybatis中对象关系映射

    在实际开发中,实体类之间有一对一.一对多.多对多的关系,所以需要正确配置它们对应关系,Mybatis通过配置文件能够从数据库中获取列数据后自动封装成对象. 如:一个订单Orders类对应一个用户Use ...