如上图所示,在 192.168.1.0/24 这个网段的客户端想要访问在 172.20.0.0/20 网段内的服务器,所有的通信又不想暴露在互联网上,因此可以在这两个网段内分别都放一台 Haproxy 服务器,并将两台 Haproxy 直连,10.94.0.7310.94.0.72 互通,然后做两次代理即可。

Haproxy1 应该监听在 192.168.1.105 上以供 192.168.1.0/24 网段内的主机访问,然后指定源地址 10.94.0.73 将请求指向后端服务器 Haproxy2 的 10.94.0.72

Haproxy1 的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
global
daemon
user nobody
group nobody
nbproc 1
maxconn 300000 defaults
maxconn 300000
timeout client 30s
timeout server 30s
timeout connect 8s
mode tcp
source 10.94.0.73 listen http
bind 192.168.1.105:80
server http 10.94.0.72:80 listen mysql
bind 192.168.1.105:3306
server mysql 10.94.0.72:3306

Haproxy2 应该监听在 10.94.0.72 以供 Haproxy1 的 10.94.0.73 来请求,然后指定源地址 172.20.0.254 将 Web 请求指向后端服务器 172.20.15.15:80,将 MySQL 请求指向后端服务器 172.20.11.154:3306

Haproxy2 的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
global
daemon
user nobody
group nobody
nbproc 1
maxconn 300000 defaults
maxconn 300000
timeout client 30s
timeout server 30s
timeout connect 8s
mode tcp
source 172.20.0.254 listen http
bind 10.94.0.72:80
server http 172.20.15.15:80 listen mysql
bind 10.94.0.72:3306
server mysql 172.20.11.154:3306

Web 负载均衡

如图所示,客户端访问 192.168.127.130 时,要把请求分发到 192.168.127.131:80192.168.127.132:80 这两台服务器上。这是一个最简单的负载均衡结构图,实现起来比较简单。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
global
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4096
user nobody
group nobody
daemon stats socket /var/lib/haproxy/stats defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
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 frontend web_proxy
bind 192.168.127.130:80
default_backend webservers backend webservers
balance roundrobin
mode http
server web1 192.168.127.131:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
server web2 192.168.127.132:80 maxconn 1024 weight 5 check inter 2000 rise 2 fall 3

配置说明

  • Global settings :这是第一部分的配置,全局配置;对Haproxy进程自身属性的设定
  • proxys:对代理的设定,通常有4部分组成
    • defaults:提供默认配置
    • frontend:前端配置
    • backend:后端配置
    • listen:从某种意义上讲可以认为是将 frontend 和 backend 整合到一块的

ACL 匹配

如图所示,要求
1、如果客户端的 IP 是 192.168.127.110,访问 192.168.127.130 时,要把请求分发到 Web Server3 上,即 192.168.127.133

2、客户端访问 192.168.127.130 时,要把请求分发到 192.168.127.131192.168.127.132192.168.127. 大专栏  Haproxy的应用133 这三台服务器上。同时还要求客户端每一次访问,都跳转到不同的服务器上。

3、如果客户端访问的不是 192.168.127.130 而是 192.168.127.129 时,要把请求全部分发到 Web Server1 上,即 192.168.127.131

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
uid 1005
gid 1005
daemon defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000 frontend WebLB
bind *:80
acl from_110 src 192.168.127.110
acl to_129 hdr_beg(host) 192.168.127.129
acl to_130 hdr_beg(host) 192.168.127.130
use_backend from_to if from_110 to_130
use_backend 3round if to_130
default_backend backend_default backend from_to
balance source
server web3 192.168.127.133:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3 backend 3round
balance roundrobin
server web1 192.168.127.131:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
server web2 192.168.127.132:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3
server web3 192.168.127.133:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3 backend backend_default
server web1 192.168.127.131:80 maxconn 1024 weight 3 check inter 2000 rise 2 fall 3

状态监控

在其他的配置完成后,做一个全局配置区段,用来监控 Haproxy 服务器的状态。

1
2
3
4
5
6
7
8
9
10
listen Haproxy_Status                   # 关联前端和后端定义一个完整的代理          
mode http # 设置代理协议
bind 0.0.0.0:1080 # 绑定相应的端口
stats enable # 开启 Haproxy 统计状态
stats refresh 10s # 统计页面自动刷新时间间隔
stats uri /status # 访问的url
stats realm Haproxy Statistics # 统计页面认证时提示内容信息
stats auth admin:admin # 设置登录用户和密码
stats admin if TRUE # 如果认证通过,则就可以打开 status
stats hide-version # 隐藏代理服务器版本

配置好之后,重启服务访问 http://192.168.127.130:1080/status 即可看到状态信息。

记录日志

自己记录日志

1
local2.*                       /var/log/haproxy.log

交给日志服务器记录日志

配置 /etc/haproxy/haproxy.cfg

1
log         127.0.0.1 local2

开启 rsyslog 记录 haproxy 日志功能,编辑 /etc/rsyslog.conf 找到如下配置项并去掉配开头的的注释

1
2
3
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

添加如下内容

1
2
# Save haproxy log 
local2.* /var/log/haproxy.log

配置 /etc/sysconfig/rsyslog

1
2
3
4
5
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-r -m 0"

相关解释说明:

  • -r:  打开接受外来日志消息的功能,其监控514 UDP端口;
  • -x: 关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
  • -m: 修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次”–MARK–”信息;
  • -h: 默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去.

重启服务查看日志

1
systemctl restart rsyslog haproxy

Haproxy的应用的更多相关文章

  1. [笔记]HAproxy reload config file with uninterrupt session

    HAProxy is a high performance load balancer. It is very light-weight, and free, making it a great op ...

  2. [原]HAproxy 代理技术原理探究

    HAproxy 技术分享 简介 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件 Features 1.免费 2.能够做到4层以上代理 3.高性能 ...

  3. 利用HAProxy代理SQL Server的AlwaysOn辅助副本

    利用HAProxy代理SQL Server的AlwaysOn辅助副本 公司最近数据库升级到SQL Server2014 ,并部署了alwayson高可用集群 机房内有三套程序需要读取数据库 第一套:主 ...

  4. Mysql的Haproxy反向代理和负载均衡

    HaProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.应用到Haproxy主要是因为他免费,并且基于TCP和HTTP的应用代理. ...

  5. HAProxy介绍

    简单说明 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需 ...

  6. 对比Haproxy和Nginx负载均衡效果

    为了对比Hproxy和Nginx负载均衡的效果,分别在测试机上(以下实验都是在单机上测试的,即负载机器和后端机器都在一台机器上)做了这两个负载均衡环境,并各自抓包分析.下面说下这两种负载均衡环境下抓包 ...

  7. haproxy windows环境使用

    haproxy下载:http://pan.baidu.com/s/1miEvQUc 测试环境说明: ip地址 作用 开放端口 备注 nbproc 1 daemon defaults mode tcp ...

  8. haproxy利用ACL规则封禁自定义IP地址拒绝访问

    现在有一个需求就是在发版的时候希望除公司IP外的外网访问服务的时候都是拒绝访问的 现在利用haproxy 的acl规则作出限制 errorfile       403 /etc/haproxy/err ...

  9. HAProxy的日志配置以及ACL规则实现负载均衡

    HAProxy配置日志策略 默认情况下,HAProxy是没有配置日志的在centos6.3下默认管理日志的是rsyslog,可以实现UDP日志的接收,将日志写入文件,写入数据库先检测rsyslog是否 ...

  10. HAproxy的安装与配置讲解

    1,安装 官网下载 http://www.haproxy.org/#down cd /usr/local/src/ wget http://www.haproxy.org/download/1.4/s ...

随机推荐

  1. 为什么wget只下载某些网站的index.html? wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com wget 下载整个网站,或者特定目录

    wget -c -r -np -k -L -p http://blog.hesheyou.me -c, –continue 接着下载没下载完的文件 -r, –recursive 递归下载 -np, – ...

  2. Jupyter_Notebook

    TA-lib指标库地址 http://github.com/xingbuxing/TA-Lib-in-chinese 1.Jupter是基于网页端写代码,属于一种交互式的编程,除了在上面写代码之外还可 ...

  3. signal之——异步回收机制

    前言:回收子进程之前用了wait()和非阻塞模型,今天学了信号以后可以使回收机制更上一层楼,通过信号函数,父进程只需要做自己的事情,接收到信号后就触发信号函数. 信号处理函数可能会出现的bug: 1. ...

  4. Java逆向工程(数据库表生成java类)

    说起来倒是挺简单的,就是听着名字感觉挺高大上.逆向工程方式有很多,比如mybatis就提供了一个这样的工具mybatis-genderator,这个我反正是没用过只是听说过,以前在公司都是用公司写好的 ...

  5. Linux_新建用户

    目录 1.新增用户 2.增加密码 新增用户:cn 进入root 输入新建命令 cn就是我们的新的用户名,也可以换成其他的 sudo useradd cn 接下来发现没有反应,是正常的,如图 查看是否新 ...

  6. 做成像的你不得不了解的真相2-灵敏度和QE

    科研级相机的灵敏度由三个主要参数决定: 探测器的QE, 像元尺寸和相机噪声. 后两项我们以后再做专题讨论.这期先讲讲小编认为顶顶重要,看起来最容易理解,但是其实还有些奥妙的QE. QE-量子效率 QE ...

  7. Gas Station(Medium)

    1.在做pat的to fill or not to fill的时候想起同样是加油站的题目,于是翻出来复习一下 2.关键在于理解潜在的条件.假设油量为tank,如果到了当前站i,tank<0,即不 ...

  8. ospf实验

    以上是实验要求和实验拓扑 R1到R5的ip自己配置了 1. #int loopback 0 #IP add 1.1.1.1 24 2.基本命令R5例: #ospf 1 router-id 5.5.5. ...

  9. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-读取json封装成类(13)

    把读取json数据的函数封装成类 # -*- coding: utf-8 -*- # @Time : 2020/2/12 16:44 # @File : do_json_13.py # @Author ...

  10. miracle|

    N-COUNT 奇迹;出人意料的事If you say that a good event is a miracle, you mean that it is very surprising and ...