Haproxy的学习及使用,实现负载均衡等

haproxy

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
包括 GitHub、Bitbucket[3]、Stack Overflow[4]、Reddit、Tumblr、Twitter[5][6]和 Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。

一,haproxy实现负载均衡

1.解压haproxy压缩包,安装源码编译软件,源码编译haproxy软件
在这里插入图片描述
在之前是通过make && make install进行编译,这是因为有Makefile文件(c语言的模块包的安装配置文件),源码编译可以指定我们的配置文件地方,而rpm时红帽官方的安装包,它会有一个默认的配置文件地址,我们可以查看是否有./examples/haproxy.spec,有的话就可以通过rpm的封装使他成为rpm安装包。
在这里插入图片描述
我们发现有.spec文件,那么我们就可以将他封装成rpm包,这样就可以指定我们的配置文件安装路径,那么我们得先安装一个rpm封装的软件
在这里插入图片描述
因为我们的haproxy时用c语言写的,那么我们在编译时也需要用到gcc
在这里插入图片描述
进行封装
在这里插入图片描述
显示还需要一个依赖性
在这里插入图片描述
再次进行封装
在这里插入图片描述
安装haproxy
在这里插入图片描述
2.配置haproxy的配置文件
首先我们将之前解压过的tz文件的包中的配置文件模版复制到haproxy的配置文件目录中
在这里插入图片描述
在这里插入图片描述
3。编辑配置文件
我们在配置文件中可以发现许多的参数都有重复,那么我们完全可以把它们放到默认变量中,这样可以减少我们的书写量

global
    maxconn         10000
    stats socket    /var/run/haproxy.stat mode 600 level admin
    log             127.0.0.1 local0
    uid             200
    gid             200
    chroot          /var/empty
    daemon

defaults
    mode            http
    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

    stats uri       /admin/stats
# The public 'www' address in the DMZ
frontend public
    bind            *:80 name clear		##接收全部的80端口
    #bind            192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem

    stats uri       /admin/stats
    #use_backend     static if { hdr_beg(host) -i img }
    #use_backend     static if { path_beg /img /css   }
    default_backend dynamic	##默认访问dynamic

# the application servers go here
backend dynamic
    balance         roundrobin		##轮询调度
    server          web1 172.25.77.2:80 check inter 1000  #后端服务器1
    server          web2 172.25.77.3:80 check inter 1000	#后端服务器2

在这里插入图片描述
4。编辑两个后端服务器server2和server3
在这里插入图片描述
在这里插入图片描述
5.测试负载均衡
由于之前的配置中我们已经默认的将负载均衡配置完了,那么我们直接进行测试即可
在这里插入图片描述在这里插入图片描述
6.我们也可以在浏览器上测试
在这里插入图片描述

在这里插入图片描述
7.浏览器监控haproxy
记得我们在之前的配置中有这样一行参数
在这里插入图片描述
那么我们可以直接访问它
在这里插入图片描述
8.我们还有一个参数
在这里插入图片描述
他是一个简单的查看后端服务器状态的显示
在这里插入图片描述
/monitoruri则一般使用在脚本中,他在浏览器中如果后端服务器时好的会出现一个OK,这样在脚本中就可以通过结果的判断来做一个脚本监控
9.添加监控界面的访问控制
1.密码形式
在这里插入图片描述
在这里插入图片描述

2.黑名单

acl blacklist src 172.25.25.250 250加入黑名单
http-request deny if blacklist 黑名单的都丢弃

在这里插入图片描述
重启服务,然后进行测试
在这里插入图片描述
10.进行错误重定向
首先修改httpd的端口为8080,因为haproxy已经占用了80端口,并且修改默认发布内容
在这里插入图片描述
在这里插入图片描述
然后重启服务进行测试
在这里插入图片描述
11.生成日志
首先我们得知道我们的haproxy的日志名称是local0(配置文件中的)
在这里插入图片描述
编辑日志系统

vim /etc/rsyslog.conf

打开UDP
在这里插入图片描述
填写日志内容和查看路径
在这里插入图片描述
图示为显示local0的全部日志
重启日志服务
在这里插入图片描述
测试:访问,然后查看日志
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42446031/article/details/89491601