HAproxy相关知识点以及搭建负载均衡

目录

一、概述

(一)简介

(二)核心功能

(三)关键特性

(四)应用场景

二、HAProxy关键配置详解    #详见http://t.csdn.cn/jNMI1

三、HAproxy调度算法

四、安装

(一)内核配置(实验环境可有可无)

(二)编译安装步骤

1、下载

2、解包

3、查看内核版本号和发布号。(为下步的编译做准备)

4、编译

 5、HAProxy编译时为什么会有“TARGET=”选项

 6、在编译时可能会报下面的错误(未解决依赖关系gcc)

 7、安装

 8、建立配置文件

9、添加为系统服务

 五、搭建负载均衡(可以实现L4和L7两种模式)

(一)配置7层负载均衡(可以配置监控页面)

1、只配置负载均衡,没有监控页面

 2、若实现监控页面,需在上面配置的基础上添加以下配置

(二)配置4层负载均衡(不支持监控状态)


一、概述

(一)简介

1、HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上(CentOS、Ubuntu、Debian、OpenSUSE、Fedora、麒麟、欧拉、UOS)。

2、HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy具备媲美商用负载均衡器的性能和稳定性。

(二)核心功能

1、    负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法

2、    健康检查:支持TCP和HTTP两种健康检查模式

3、    会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持

4、    SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输

5、    HTTP请求重写与重定向

6、    监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态

(三)关键特性

1、    采用单线程、事件驱动、非阻塞模型,减少上下文切换的消耗,能在1ms内处理数百个请求。并且每个会话只占用数KB的内存。

2、    大量精细的性能优化,如O(1)复杂度的事件检查器、延迟更新技术、Single-buffereing、Zero-copy forwarding等等,这些技术使得HAProxy在中等负载下只占用极低的CPU资源。

3、    HAProxy大量利用操作系统本身的功能特性,使得其在处理请求时能发挥极高的性能,通常情况下,HAProxy自身只占用15%的处理时间,剩余的85%都是在系统内核层完成的。

4、    HAProxy作者在8年前(2009)年使用1.4版本进行了一次测试,单个HAProxy进程的处理能力突破了10万请求/秒,并轻松占满了10Gbps的网络带宽。

(四)应用场景

高并发要求较高的场合下

二、HAProxy关键配置详解    #详见http://t.csdn.cn/jNMI1

三、HAproxy调度算法

(一)roundrobin:表示简单的轮询。

(二)static-rr:表示根据权重。

(三)leastconn:表示最少连接者先处理。

(四)source:表示根据请求的源 IP,类似 Nginx 的 IP_hash 机制。

(五)ri:表示根据请求的 URI。

(六)rl_param:表示根据 HTTP 请求头来锁定每一次 HTTP 请求。

(七)rdp-cookie(name):表示根据据 cookie(name)来锁定并哈希每一次 TCP 请求。

四、安装

(一)内核配置(实验环境可有可无)

1、vim  /etc/sysctl.conf

2、写入的内容

net.ipv4.tcp_tw_reuse = 1

#启用端口重用,允许一个服务器进程在进行完一个连接后立即再次使用相同的连接端口。
net.ipv4.ip_local_port_range = 1024 65023

#本地端口范围。指定可用于本地TCP/UDP端口的端口号范围。
net.ipv4.tcp_max_syn_backlog = 10240

#TCP半连接请求的最大长度,如果超过这个值,对方就会收到RST响应。
net.ipv4.tcp_max_tw_buckets = 400000

#系统中同时保持TIME_WAIT状态的最大数量,一般设置为TCP建立连接次数的2倍。
net.ipv4.tcp_max_orphans = 60000

#系统中允许存在的最大orphan连接数(没有对应的socket文件),这个数字越大,系统支持的TCP连接数也越多。
net.ipv4.tcp_synack_retries = 3

#尝试发送SYN+ACK应答报文的最大次数。
net.core.somaxconn = 10000

#服务器套接字排队长度的最大值

(二)编译安装步骤

1、下载

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

2、解包

tar xf haproxy-1.7.2.tar.gz

3、查看内核版本号和发布号。(为下步的编译做准备)

uname  -r

#根据内核版本号和发布号选择合适的目标平台

- linux22     for Linux 2.2
- linux24     for Linux 2.4 and above (default)
- linux24e    for Linux 2.4 with support for a working epoll (> 0.21)
- linux26     for Linux 2.6 and above
- linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)

4、编译

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

#这条命令的作用是编译HAProxy的源代码,并将二进制文件安装到/usr/local/haproxy/bin下,可执行文件是针对特定的linux2628平台优化的版本。由于TARGET的不同,编译的结果可能会有所不同,它可能甚至可能生成不同的二进制文件(例如,编译针对不同的操作系统)。

 5、HAProxy编译时为什么会有“TARGET=”选项

在编译 HAProxy 时,利用 TARGET= 选项可以针对不同的目标平台进行编译。通过设置该选项,可以使生成的二进制文件更好地适应目标平台的硬件和操作系统环境,并提高 HAProxy 在目标平台上的性能和稳定性。

 6、在编译时可能会报下面的错误(未解决依赖关系gcc)

 yum  -y  install  gcc  gcc-c++或yum  -y  install  gcc*

#问题就解决了!!!

 7、安装

make install PREFIX=/usr/local/haproxy

出现上面的界面就表示ok了!!!恭喜啊

 

对上图的解释说明

 8、建立配置文件

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

 ①cd  /root/haproxy-1.7.2/examples

②vim  init.haproxy

 ③创建文件(根据实际需要进行配置)

touch /etc/haproxy/haproxy.cfg -p

配置文件相关说明

9、添加为系统服务

①cp   -p  /root/haproxy-1.7.2/examples/haproxy.init /etc/init.d/haproxy

#/etc/init.d是Linux系统中系统启动脚本的存放位置。这些脚本是在系统启动过程中自动运行的,并且在运行级别的切换过程中提供了相应的服务。

②修改 /etc/init.d/haproxy

vim  /etc/init.d/haproxy

将BIN=/usr/sbin/$BASENAME改为BIN=/usr/local/haproxy/sbin/$BASENAME

③添加执行的权限

chmod   +x  /etc/init.d/haproxy

④将 /etc/init.d/haproxy 脚本添加到 chkconfig 管理工具中

chkconfig --add /etc/init.d/haproxy

 ⑩启动haproxy

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

 五、搭建负载均衡(可以实现L4和L7两种模式)

(一)配置7层负载均衡(可以配置监控页面)

1、只配置负载均衡,没有监控页面

global

    daemon  

    maxconn 256  

    pidfile /var/run/haproxy.pid 

defaults

    mode http  

    timeout connect 5000ms  

    timeout client 50000ms  

    timeout server 50000ms

frontend http-in

    bind *:8080  

    default_backend servers 

backend servers

    server server1 127.0.0.1:8000 maxconn 32  

    server server2 127.0.0.1:8090 maxconn 32

#相关说明在上面有解释

#验证时需要输入本机IP:8080才能访问,使用ctrl+F5可以强制刷新,查看页面

 2、若实现监控页面,需在上面配置的基础上添加以下配置

listen stats    #定义监控页面    
bind *:1080                   #绑定端口1080    
stats refresh 30s             #每30秒更新监控数据    
stats uri /stats              #访问监控页面的uri    
stats realm HAProxy\ Stats    #监控页面的认证提示    
stats auth admin:admin        #监控页面的用户名和密码

#访问时需要输入本机的IP:1080/stats才能显示监控页面  

#注意要输入监控页面的用户名和密码(配置文件最后可以查到)

最终看到的界面

(二)配置4层负载均衡(不支持监控状态)

global
    daemon  
    maxconn 256  
    pidfile /var/run/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 127.0.0.1:8000 maxconn 32  
server server2 127.0.0.1:8090 maxconn 32

#注意标识紫的地方是7层负载均衡与4层负载均衡配置的不同的地方

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值