HAproxy搭建7层与四层负载均衡

目录

一、HAproxy概述

二、核心功能

三、关键特性

四、安装与配置

(一)内核配置

(二)编译安装

 五、建立配置文件

(一)、从haproxy的源码包中的examples下的init.haproxy中获得配置文件的路径“/etc/haproxy/haproxy.cfg”

(二)、添加为系统服务

(三)、启动服务

六、配置七层与四层负载均衡

(一)、七层配置

 (二)、四层配置


需要三台虚假机

 haproxy IP地址:192.168.115.150

WEB1  IP地址:192.168.115.151

WEB2  IP地址:192.168.115.153

一、HAproxy概述


    (一)HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上(CentOS、Ubuntu、Debian、OpenSUSE、Fedora、麒麟、欧拉、UOS)。
    (二)HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy具备媲美商用负载均衡器的性能和稳定性。

二、核心功能


        负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法
        健康检查:支持TCP和HTTP两种健康检查模式
        会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持
        SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输
        HTTP请求重写与重定向
        监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态

三、关键特性


        采用单线程、事件驱动、非阻塞模型,减少上下文切换的消耗,能在1ms内处理数百个请求。并且每个会话只占用数KB的内存。
        大量精细的性能优化,如O(1)复杂度的事件检查器、延迟更新技术、Single-buffereing、Zero-copy forwarding等等,这些技术使得HAProxy在中等负载下只占用极低的CPU资源。
        HAProxy大量利用操作系统本身的功能特性,使得其在处理请求时能发挥极高的性能,通常情况下,HAProxy自身只占用15%的处理时间,剩余的85%都是在系统内核层完成的。
        HAProxy作者在8年前(2009)年使用1.4版本进行了一次测试,单个HAProxy进程的处理能力突破了10万请求/秒,并轻松占满了10Gbps的网络带宽。

应用场景:高并发要求较高的场合下

四、安装与配置

(一)、内核配置


实验环境下可有可无

vim  /etc/sysctl.conf
	net.ipv4.tcp_tw_reuse = 1 #开启TIME-WAIT socket复用,可以减少TIME-WAIT状态的消耗,提高系统的TCP连接响应能力。
	net.ipv4.ip_local_port_range = 1024 65023 #设置本地TCP端口的可用范围。
	net.ipv4.tcp_max_syn_backlog = 10240   #设置系统最大SYN队列长度,可以减少SYN Flood攻击的影响。
	net.ipv4.tcp_max_tw_buckets = 400000  #设定系统最大的TIME-WAIT bucket数量,可以让系统更好地管理TIME-WAIT状态的socket。
	net.ipv4.tcp_max_orphans = 60000   #设置系统保持的最大无主套接字数量,防止系统出现file descriptor耗尽的情况。
	net.ipv4.tcp_synack_retries = 3    #设定SYN连接请求发送的最大次数,可以减少SYN Flood攻击的影响。
	net.core.somaxconn = 10000  #设置系统同时建立的最大连接数,可以提高系统的连接响应能力。

(二)、编译安装

    wget https://www.haproxy.org/download/1.7/src/haproxy-1.7.2.tar.gz

make PREFIX=/usr/local/haproxy TARGET=linux2628

make install PREFIX=/usr/local/haproxy

 五、建立配置文件

(一)、从haproxy的源码包中的examples下的init.haproxy中获得配置文件的路径“/etc/haproxy/haproxy.cfg”

vim examples/init.haproxy

 

 在etc下没有haproxy这个目录需要手动创建

mkdir /etc/haproxy
touch /etc/haproxy/haproxy.cfg

(二)、添加为系统服务

cp /root/haproxy-1.7.2/examples/haproxy.init   /etc/init.d/haproxy
vim  /etc/init.d/haproxy
修改: 35行 内容为 BIN=/usr/local/haproxy/sbin/$BASENAME

 

 修改权限添加执行权限

chmod +x haproxy

chkconfig --add /etc/init.d/haproxy
将脚本添加到系统服务管理器中,这样当系统启动时,会自动执行该脚本,启动 haproxy 服务。

chkconfig haproxy --level 35 on
添加3和5运行级别下自启动
chkconfig --list  #查看运行级别

 

 

(三)、启动服务

   service haproxy  start
    service haproxy  stop
    service haproxy  restart  | reload
    systemctl  daemon-reload
    也可以使用systemctl进行启停

六、配置七层与四层负载均衡

(一)、七层配置

vim  /etc/haproxy/haproxy.cfg

global 
    daemon  #以 daemon 方式运行。
    maxconn 256  #指定了 HAProxy 允许的最大连接数。
    pidfile /var/run/haproxy/haproxy.pid  #指定了 HAProxy 进程的 PID 文件存放位置。
 
 
defaults  #定义了默认配置。
    mode http  
    timeout connect 5000ms  
    timeout client 50000ms  
    timeout server 50000ms 
 
 
frontend http-in  #绑定 IP 地址和端口,指定将请求转发到 default_backend 后端。
    bind *:8080  
    default_backend servers  
 
 
backend servers  #定义了后端
    server server1 192.168.115.151:80 maxconn 32    #限制了每个服务的最大连接数 #WEB1 ip地址
    server server2 192.168.115.153:80 maxconn 32    #限制了每个服务的最大连接数 #WEB2 ip地址
listen stats    #定义监控页面    
bind *:1080                   #绑定端口1080    
stats refresh 30s             #每30秒更新监控数据    
stats uri /stats              #访问监控页面的uri    
stats realm HAProxy\ Stats    #监控页面的认证提示    
stats auth admin:admin        #监控页面的用户名和密码

 配置完成启动haproxy

service haproxy start

WEB1、WEB2分别安装httpd

yum -y install httpd
systemctl start httpd

 

 

 在web1和web2的 var/www/html目录下创建一个测试页面

 

 

 

测试

在haproxy虚拟机上打开浏览器访问192.168.115.150:8080

刷新会分别显示

 访问192.168.115.150:1080/stats进入监控页面

账号:admin 密码 :admin

 

 (二)、四层配置

vim  /etc/haproxy/haproxy.cfg

global 
    daemon  
    maxconn 256  
    pidfile /var/run/haproxy/haproxy.pid  
 
 
defaults 
    mode tcp
    timeout connect 5000ms  
    timeout client 50000ms  
    timeout server 50000ms 
 
 
frontend http-in 
    bind *:8080  
    default_backend servers  
 
 
backend servers
	balance  roundrobin  #轮询
	#balance  source     #保持会话 
    server server1 192.168.115.151:80 maxconn 32  
    server server2 192.168.115.153:80 maxconn 32
 #四层负载均衡不支持监控状态

 配置完成后启动服务

service haproxy start

 在haproxy上打开浏览器访问192.168.115.150:8080

 刷新分别显示

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值