haproxy的安装、日志服务、重定向、动静分离、读写分离

安装haproxy

下载 haproxy-1.6.11.tar.gz 压缩包,制作rpm包

yum install rpm-build   
rpmbuild -tb haproxy-1.6.11.tar.gz 

查看这个rpm包都会生成什么文件

rpm -qpl haproxy-1.6.11-1.x86_64.rpm

查看这个rpm包都会生成什么文件
安装rpm包

cd rpmbuild/RPMS/x86_64/
rpm -ivh haproxy-1.6.11-1.x86_64.rpm 

安装rpm包
解压压缩包,因为安装的rpm包中不会生成配置文件,所以将里面的配置文件模版复制到/etc/haproxy/haproxy.cfg,haproxy的脚本文件会去/etc/haproxy/haproxy.cfg这个位置读它的配置文件

tar zxf haproxy-1.6.11.tar.gz 
cd haproxy-1.6.11/examples/
cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg

配置文件位置

用haproxy实现均衡负载

实验环境:
调度器:server6 安装haproxy
realserver:
server2:安装阿帕奇(httpd) 在 /var/www/html/index.html 文件中写入server2
server3:安装阿帕奇(httpd) 在 /var/www/html/index.html 文件中写入server3


编辑配置文件

vim /etc/haproxy/haproxy.cfg
global
        maxconn         10000
        stats socket    /var/run/haproxy.stat mode 600 level admin
        log             127.0.0.1 local0    #日志输出配置,所有日志都记录在本机,通过local0输出
        uid             200
        gid             200
        chroot          /var/empty
        daemon      #以后台形式运行haproxy
defaults
        mode            http            #默认模式  tcp是4层 http是7层
        log             global
        option          httplog         #日志级别
        option          dontlognull     #不记录健康检查日志信息
        monitor-uri     /monitoruri
        maxconn         8000
        timeout client  30s

        stats uri       /admin/stats
        option prefer-last-server
        retries         2
        option redispatch
        timeout connect 5s
        timeout server  5s

# The public 'www' address in the DMZ
frontend public
        bind            *:80 name clear
        #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
        use_backend     static if { hdr_beg(host) -i img }
        use_backend     static if { path_beg /img /css   }
        default_backend static  #默认访问后端为 static

# The static backend backend for 'Host: img', /img and /css.
backend static
        mode            http
        balance         roundrobin  #轮询算法
        server          statsrv1 172.25.31.2:80 check inter 1000
        server          statsrv2 172.25.31.3:80 check inter 1000

负载均衡
创建haproxy用户

groupadd -g 200 haproxy
useradd -u 200 -g 200 -M haproxy
id haproxy  #查看用户

查看用户
对用户做访问限制

vim /etc/security/limits.conf
haproxy -       nofile  10000

对用户做访问限制

/etc/init.d/haproxy start#打开服务

打开服务
测试负载均衡是否可用
在浏览器中访问
172.25.31.6/monitoruri #网站健康检测URL,用来检测HAProxy管理的网站是否可以用,正常返回200
 检测haproxy是否可用
172.25.31.6/admin/stats #对后端服务器的管理和页面监控数据监控
检测后端数据是否可用
检测负载均衡功能是否正常
检测负载均衡功能是否可用

Haproxy中的算法

名称 工作方式
1.balance roundrobin 轮询,软负载均衡基本都具备这种算法
2.balance static-rr 根据权重
3.balance leastconn 最少连接者先处理
4.balance source 根据请求源IP
5.balance uri 根据请求的URI
6.balance url_param, 根据请求的URl参数’balance url_param’ requires an URL parameter name
7.balance hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
8.balance rdp-cookie(name) 根据据cookie(name)来锁定并哈希每一次TCP请求

开启日志功能

vim /etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514


# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local0.none          /var/log/messages

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local0.*                                                /var/log/haproxy.log

打开UDP端口
不再message中显示
指定日志位置

/etc/init.d/rsyslog restart #重启日志服务
cat /var/log/haproxy.log    #查看日志

查看日志

动静分离

在server3安装php ,编辑 /var/www/html/index.php

vim /var/www/html/index.php
<?php
phpinfo()
?>

写入测试页面
在server6中编辑haproxy的配置文件

vim /etc/haproxy/haproxy.cfg

# The public 'www' address in the DMZ
frontend public
        bind            *:80 name clear
        #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
        #use_backend     static if { hdr_beg(host) -i img }
        #use_backend     static if { path_beg /img /css   }
        use_backend     static2 if { path_end -i .php   }
        default_backend static1

# The static backend backend for 'Host: img', /img and /css.
backend static1
        balance         roundrobin
        server          statsrv1 172.25.31.2:80 check inter 1000

backend static2
        balance         roundrobin
        server          statsrv2 172.25.31.3:80 check inter 1000

动静分离
在浏览器中访问172.25.31.6时访问到的是server2的页面
访问172.25.31.6
当访问172.25.31.6/index.php 时,访问的是server3 中的页面
访问172.25.31.6/index.php

黑名单

vim /etc/haproxy/haproxy.cfg

    acl blacklist src 172.25.31.250
    http-request deny if blacklist

不允许ip为172.25.31.250 的用户访问 (也可以写网段)
不允许ip为172.25.31.250 的用户访问
403

重定向

在server6中安装httpd
将端口改为8080
将httpd端口改为8080

编辑 /var/www/html/index.html 文件 写入网站正在维护中…

编辑haproxy 配置文件

vim /etc/haproxy/haproxy.cfg

    acl blacklist src 172.25.31.250

    errorloc 403 http://172.25.31.6:8080

当得到403 的错误时,重定向到172.25.31.6:8080 页面
当得到403 的错误时,重定向到172.25.31.6:8080
重定向

直接重定向

vim /etc/haproxy/haproxy.cfg

    acl blacklist src 172.25.31.250

    redirect location http://172.25.31.6:8080

直接重定向
直接重定向

读写分离

编辑haproxy配置文件

vim /etc/haproxy/haproxy.cfg

frontend public
        bind            *:80 name clear

        acl write method POST
        acl write method PUT

        #use_backend     static2 if { path_end -i .php   }
        use_backend     static2 if write

读写分离
/etc/init.d/haproxy reload #重新加载配置文件

将上传脚本放在server2、3的httpd默认发布目录/var/www/html/下(server2、3都要安装php)
给upload目录一个777权限
给upload目录一个777权限
访问172.25.31.6 上传图片
上传图片
上传图片
图片将上传到server3上
图片将上传到server3上

猜你喜欢

转载自blog.csdn.net/qq_40303205/article/details/81412991
今日推荐