part_76:HAproxy

HAproxy

HAProxy 提供高可用性、负载均衡以及基于 TCP(第四层) 和 HTTP(第七层) 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy 特别适用于那些负载特大的 web 站点, 这些站点通常又需要会话保持或七层处理。HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整 合进您当前的架构中, 同时可以保护你的 web 服务器不被暴露到网络上。
四层是传输层:负载均衡效率高(lvs)

HAproxy支持:访问控制、高可用、负载均衡、反向代理、动静分离、读写分离
实验前先了解一些知识:

  • 四层是传输层:负载均衡效率高(lvs)
  • 七层是应用层:负载软件(haproxy,apache,ngnix)
  • 反向代理:反向代理其实就是客户端去访问服务器时,他并不知道会访问哪一台,感觉就是客户端访问了Proxy一样,而实则就是当proxy关口拿到用户请求的时候会转发到代理服务器中的随机(算法)某一台。而在用户看来,他只是访问了Proxy服务器而已,典型的例子就是负载均衡了。
  • 正向代理:正向代理通过上面的图理解其实就是用户想从服务器拿资源数据,但是只能通过proxy服务器才能拿到,所以用户A只能去访问proxy服务器然后通过proxy服务器去服务器B拿数据,这种情况用户是明确知道你要访问的是谁,在我们生活中最典型的案例就是“翻墙“了,也是通过访问代理服务器最后访问外网的。
  • 源码安装和rpm安装区别?
  • 源码安装的好处如下:最大的好处就是可以自行调整编译参数,最大化地定制安装结果。源码安装可以选择最新的软件包,而Linux系统(包括FreeBSD)自带的软件包一般都是最稳定的版本,但不能保证是最新的。相对而言,源码安装的性能是最优异的。源码包安装的软件卸载时极为方便和简单,更重要的是,它比较安全,尤其是对线上的生产环境而言。迁徙也比较方便,如果不涉及系统库文件,复制到另一台机器上也可以使用。
  • rpm是安装本地存在的rpm包,如果存在依赖也需要安装上,如果某个rpm是自己修改编译的,那么只能用rpm安装了

实验环境

  • rhel6.5
主机名 IP
server1 172.25.60.1
server2 172.25.60.2
server3 172.25.60.3
foundation60 172.25.60.250

HAproxy 负载均衡环境配置

实验前先将上个实验配置的删除:删除共享磁盘时: 先删除逻辑卷,再删除逻辑组,然后删除共享的磁盘,最后删除被共享的硬盘
当删除集群时, 要一步一步从小到大删除,先删除服务,再删除节点,最后删除集群.可以通过ps ax 查看进程,看是否删除
在这里插入图片描述

  1. 先下载安装包,并解压(最好下载到家目录下,因为后面,编译后生成的目录会生成到家目录下)
    在这里插入图片描述
  2. 进入到该文件后,查看以下有没有spec文件,有这个文件才可以打成rpm包
    在这里插入图片描述
  3. 安装rpm-build :
     [root@server1 haproxy-1.7.3]# yum install rpm-build -y
  1. 安装c语言调试工具gcc:
 [root@server1 haproxy-1.7.3]# yum install gcc -y
  1. 安装 pcre:
 [root@server1 ~]# yum install pcre-devel -y
  1. 打包成rpm包:
    [root@server1 ~]# rpmbuild -tb haproxy-1.7.3.tar.gz
  2. 这时会在加目录下生成rpmbuild/,进入到该文件的RPMS/ x86_64/
  3. 安装haproxy
    在这里插入图片描述
  4. 将 haproxy-1.7.3/examples/下的配置文件拷贝到/etc/haproxy下,并重命名位haproxy.cfg
    在这里插入图片描述
  5. 修改配置文件: cd /etc/haproxy/---> vim haproxy.cfg
global      ##全局定义
        maxconn         10000         ##最大连接数
        stats socket    /var/run/haproxy.stat mode 600 level admin
        log             127.0.0.1 local0       ##本机日志
        uid             200          ##haproxy用户的uid
        gid             200           ##haproxy用户的gid
        chroot          /var/empty
        daemon

defaults   ##默认条件
        mode            http     ##默认使用http的7层模式 tcp:4层
        log             global
        option          httplog
        option          dontlognull
        monitor-uri     /monitoruri
        maxconn         8000
        timeout client  30s
        option prefer-last-server
        retries         2
        option redispatch
        timeout connect 5s
        timeout server  5s

frontend public
        bind            *:80 name clear      ##监听端口
        default_backend dynamic    ##使用默认static服务器集群

backend dynamic
        balance         roundrobin       ##负载均衡算法(轮循)
        server          web1 172.25.60.2:80 check inter 1000    ##后端服务器server2
        server          web2 172.25.60.3:80 check inter 1000     ##后端服务器server3
  • 开启服务: /etc/init.d/haproxy start
  • 在server2和server3上安装并编写测试页面,开启httpd
    在这里插入图片描述
  • 测试:在foundation60上测试,会发现轮循
    在这里插入图片描述
  • 编辑配置文件,设置stats状态页面、密码、刷新时间,编辑完配置文件要重启服务
    在这里插入图片描述
  • stats状态页:stats uri /admin/stats
    在这里插入图片描述
  • 用户密码:stats auth admin:westos
    在这里插入图片描述
  • 刷新时间(每5秒刷新一次):stats refresh 5s

HAproxy 访问控制

  • 创建指定日志存放目录
  • 修改日志服务配置文件,从而修改日志的存储位置
    *.info : 高级别的日志
    local : 自定义日志
[root@server1 haproxy]# vim /etc/rsyslog.conf 

在这里插入图片描述
在这里插入图片描述

  • 重启服务后测试
    在这里插入图片描述
  • 访问控制(黑名单)
  • 编辑配置文件,将250放进黑名单
    在这里插入图片描述
  • 重启haproxy
    在这里插入图片描述
  • 测试:
    在这里插入图片描述
  • 错误重定向:这里将错误重定向到本机的apache服务默认发布目录的内容
    在这里插入图片描述
  • 要将httpd端口更改为8080,避免和haproxy服务冲突
  • [root@server1 html]# vim /etc/httpd//conf/httpd.conf
    在这里插入图片描述
  • 给server1安装apache并编写默认发布页面
    在这里插入图片描述
  • 重启haproxy和httpd服务
    在这里插入图片描述
  • 测试: 物理机浏览器访问
    在这里插入图片描述

HAproxy的动静分离

  • 给server3安装php,编辑动态页面,并重启httpd
[root@server3 ~]# yum install php -y

在这里插入图片描述

  • server2作为静态,访问apache默认页面
    在这里插入图片描述
  • 编辑配置文件:如果访问以.php 结尾的,就访问server3(动态页面);静态(默认)访问server2
    在这里插入图片描述
  • 重启haproxy
    在这里插入图片描述
  • 测试
  • 默认访问:172.25.60.1
    在这里插入图片描述
  • 以 .php 结尾:172.25.60.1/index.php
    在这里插入图片描述

HAproxy的读写分离

  • 编辑haproxy配置文件,如果有写操作,就访问动态页面(server3)
    在这里插入图片描述
    在这里插入图片描述
  • 重启haproxy
    在这里插入图片描述
  • 在server3将静态页面(index.php)和动态页面(upload_file.php)存放在apache的默认发布目录中
    在这里插入图片描述
  • 在静态页面中,修改以下(和server2的静态页面作对比)
    在这里插入图片描述
  • 在动态页面中修改上传东西的上限
    在这里插入图片描述
  • 在server2上安装php
  • 将静态页面(index.php)和动态页面(upload_file.php)存放在apache的默认发布目录中。并重启httpd
    在这里插入图片描述
  • 测试:在浏览器上访问server1的IP(默认访问的是server3的页面)
    在这里插入图片描述
  • 点击Browse选择图片后Submit上传
  • 会发现保存到server2,而server3没有
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42311209/article/details/89467594
76
今日推荐