haproxy由浅入深

 1.  Haproxy介绍

    1.  开源的,高性能的基于TCP和HTTP应用代理的高可用的,负载均衡服务器软件,它支持双机热备,高可用,负载均衡,虚拟主机。

    2.  有图形界面可以观看状态信息。

    3.  配置简单,方便,拥有很好的服务器节点的健康检查功能。

    4.  适用于高负载,访问量很大的业务应用。

    5.  官网:https://www.haproxy.org/

2.  Haproxy4层应用架构

    1.  四层tcp应用程序代理比lvs和nginx简单

    2.  与商业的NS,FS,A10等负载均衡硬件的使用方法一样

3.  Haproxy7层应用架构

    1.  前面用一个LVS或者F5做四层代理,后面用haproxy做7层代理。

4.  Haproxy生产环境实战模拟准备

    1.  准备两台服务器,分别有两块网卡,一个用来外网传数据,一个是内网传数据。

5.  Haproxy实际安装过程

    1.  官方下载:  https://www.haproxy.org/download/1.9/src/haproxy-1.9.4.tar.gz

        wget --no-check-certificate https://www.haproxy.org/download/1.9/src/haproxy-1.9.4.tar.gz

    2.  解压  tar -zxvf haproxy-1.9.4.tar.gz

    3.  cd haproxy-1.9.4

    4.  make TARGET=linux2628 ARCH=x86_64  配置一些编译参数 64位

        make TARGET=linux2628 ARCH=i386  32位

    5.  make PREFIX=/usr/local/haproxy-1.9.4 install  安装

    6.  ln -s /usr/local/haproxy-1.9.4/ /usr/local/haproxy  创建一个软链接

6.  配置Haproxy内核参数

    1,  修改/etc/sysctl.conf文件

        net.ipv4.ip_forward = 1,默认为0,修改为1。

7.  调整haproxy目录规范及讲解配置文件框架

    1.  创建一些目录

        mkdir -p logs conf bin var/run var/chroot

    2.  haproxy配置文件

        分为五个部分

        global:全局配置参数段,主要控制haproxy启动前的进程及系统相关设置

        defaults:配置一些默认参数,如果下面三个参数没有设置,则使用defaults段配置

        listen:

        frontend:用来匹配客户端所请求的域名,url等,并针对不同的匹配,做不同的请求处理。

        backend:定义后端服务器集群,以及对后端服务器的一些权重,队列,连接数等选项的设置。

8.  haproxy的常用配置参数详解

    1.  global

        chroot

        daemon

        group haproxy

        user haproxy

        log

        pidfile

        maxconn  定义每个haproxy进程的最大连接数

        nbproc   设置haproxy启动的进程数

    2.  default

        log

        mode

        contimeout  连接超时

        clitimeout

    3.  listen  www  10.0.0.7:80

        mode http

        balance roundrobin

        option forwardfor

        server www01 ip:port check

        server www02 ip:port check

9.  实战配置haproxy tcp模式负载均衡并测试

    1.  配置文件内容

global
        daemon
        maxconn 20000
        group haproxy
        user haproxy
        log 127.0.0.1:514 local0 info
defaults
        log global
        mode tcp
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        option  dontlognull

listen  oldboytest
        bind 172.168.1.209:88
        #stats enable
        #stats uri       /admin
        #stats auth      admin:1234
        server test1 172.168.1.208:22 check port 22 inter 1500 rise 3 fall 3 weight 2
        server test2 172.168.1.207:28 check port 28 inter 1500 rise 3 fall 3 weight 2
listen  admin_stats
        bind 172.168.1.209:89
        mode http
        stats enable
        stats uri /admin
        stats auth admin:1234    

    2.  启动haproxy

        sbin/haproxy -f 配置文件路径  -c  检查语法

        sbin/haproxy -f 配置文件路径

    3.  创建haproxy用户

         useradd haproxy -s /sbin/nologin

10.  开发启动haproxy脚本

    1.  

11.  Haproxy日志配置

    1.  修改/etc/rsyslog.conf配置文件

cat >>/etc/rsyslog.conf<<EOF
#Haproxy
local0.* /usr/local/haproxy/logs/haproxy.log
#end /etc/rsyslog.conf
EOF

    2.  修改/etc/sysconfig/rsyslog

        SYSLOGD_OPTIONS="-c 2 -m 0 -r -x"

    3.  重启rsyslog

        /etc/init.d/rsyslog restart

    4.  rsyslog默认启动没有端口

    5.  修改配置文件/etc/rsyslog.conf

$ModLoad imudp
$UDPServerRun 514

默认是屏蔽的,要放开.

    6.  重启一下rsyslog服务。

        /etc/init.d/rsyslog restart

12.  实战配置haproxy http模式负载均衡

global
        daemon
        maxconn 20000
        group haproxy
        user haproxy
        log 127.0.0.1:514 local0 info
defaults
        log global
        mode tcp
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        option  dontlognull

listen  oldboytest
        bind 172.168.1.209:88
        #stats enable
        #stats uri       /admin
        #stats auth      admin:1234
        server test1 172.168.1.208:22 check port 22 inter 1500 rise 3 fall 3 weight 2
        server test2 172.168.1.207:28 check port 28 inter 1500 rise 3 fall 3 weight 2
listen  admin_stats
        bind 172.168.1.209:89
        mode http
        stats enable
        stats uri /admin
        stats auth admin:1234       
listen  chandao
        bind 172.168.1.209:90
balance roundrobin mode http server test1 172.168.1.208:80 check port 80 inter 1500 rise 3 fall 3 weight 2 server test2 172.168.1.207:80 check port 80 inter 1500 rise 3 fall 3 weight 2

    查看监控地址:  http://172.168.1.209:89/admin    账号admin   密码1234

13.  基于TCP端口的健康检查

    1.  check port 80  对80端口进行检查

    2.  inter 1500 fall 5  表示每5秒检查一次,一共检查5次。如果有问题就摘除这台服务器。

        如果不加inter 1500 fall 5  默认每2秒检查一次,一共检查3次。

    3.  rise  恢复之前,检查2次,认为没问题了,就加入到集群中。

14.   基于HTTP的URL方式检查

    1.  第一种HEAD配置方法

        写法:option httpchk HEAD /check.html HTTP/1.0

        这种检测方式相当于curl -I http://10.0.0.8/check.html。或者wget http://10.0.0.8/check.html。

        在haproxy的配置文件中,添加一行内容:option httpchk HEAD /check.html HTTP/1.0

        结论:haproxy检查check.html文件是否能够访问,如果访问不了,即使80端口,能通,后端服务器还是报警。

    2.  另外还有两个参数

        maxconn  2048  服务器承受的最大连接数

        weight  20  服务器权重

    3.  第二种GET配置方法

        写法:option httpchk GET /check.txt

    4.  第三种配置方法

        写法:option httpchk /

    5.  httpchk的文档

        /usr/local/haproxy/doc/haproxy/configuration.txt

15.  基于域名的URL健康检查

    1.  

        

 

 

 

    

 

 

 

 

 

    

 

        

 

 

        

        

 

 

        

 

posted @ 2019-02-21 11:43  奋斗史  阅读(387)  评论(0)    收藏  举报