HAproxy

目录

一、概述

一、介绍

二、核心功能

三、关键特性

四、应用场景

二、内核配置

三、首先编译安装

四、建立配置文件

 五、添加为系统服务

六、验证负载均衡

七、调度算法

八、查看系统日志

九、负载均衡

一、七层负载

二、四层负载

十、keepalived + 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的网络带宽。

四、应用场景

高并发要求较高的场合下

二、内核配置

在实验环境下可有可无,实际生产必须存在

三、首先编译安装

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

四、建立配置文件

 

新建目录和配置文件

输入内容 (更改位置标红)

 global #全局属性
    daemon  #以daemon方式在后台运行
    maxconn 256  #最大同时256连接
    pidfile /home/ha/haproxy/conf/haproxy.pid  #指定保存HAProxy进程号的文件
 
 
defaults #默认参数
    mode http  #http模式
    timeout connect 5000ms  #连接server端超时5s
    timeout client 50000ms  #客户端响应超时50s
    timeout server 50000ms  #server端响应超时50s
 
 
frontend http-in #前端服务http-in
    bind *:80  #监听8080端口
    default_backend servers  #请求转发至名为"servers"的后端服务
 
 
backend servers #后端服务servers
    server server1 192.168.115.4:80 maxconn 32  #backend servers中只有一个后端服务,名字叫server1,起在本机的8000端口,HAProxy同时最多向这个服务发起32个连接

    server server2 192.168.115.5:80 maxconn 32  #backend servers中只有一个后端服务,名字叫server1,起在本机的8000端口,HAProxy同时最多向这个服务发起32个连接

 

 五、添加为系统服务

 进入后将第35行内容更改掉

赋予权限

 添加3 和 5 运行级别下启动

 

 启动服务 haproxy

 

 两个web节点服务需要安装epel源和nginx,并启动nginx 

echo nginx1 > /usr/share/nginx/html/index.html

echo nginx2> /usr/share/nginx/html/index.html

六、验证负载均衡

七、调度算法

八、查看系统日志

里面就是系统日志

 

 里面有个指令  journalctl

 调用系统日志 (就是调用 var/log/massage)

将日志定义级别的信息

$ModLoad imudp
 
 
$UDPServerRun 514
$FileCreateMode 0644  #日志文件的权限
$FileOwner root  #日志文件的owner
local0.*     /var/log/haproxy.log  #local0接口对应的日志输出文件
local1.*     /var/log/haproxy_warn.log  #local1接口对应的日志输出文件

写入 vim haproxy.conf

 更改后,重启日志服务 systemctl restart rsyslog.service

在 vim /etc/haproxy/haproxy.cfg下 添加内容

九、负载均衡

一、七层负载

 

将下方内容,复制并粘贴到配置文件中,放入配置文件最下方,端口号不能更改

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

 

 systemctil restart haproxy 重启服务

来到网页验证

 显示下方界面

打开新网页 多次刷新

 回来再次刷新查看显示结果

显示有三个请求

 

进来57905 出去29643

其余的数据都有相应的变化

 查看启动日志

二、四层负载

配置更改

global 
    daemon  
    maxconn 256  
    pidfile /var/run/haproxy/haproxy.pid  
 
 
defaults 
    mode tcp (把此处改为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

十、keepalived + haproxy实现高可用

两台机子都装keepalived

新建一台机器 ip为 192.168.115.6 作为备用 机 

keepalived 配置

yum install -y keepalived

vim /etc/keepalived/keepalived.conf

主机配置

从机将 MASTER 改为backup

优先级改为90 

安装HAproxy、配置、启动 和上方 haproxy一样

启动服务提示成功 

 关掉第一台主机

 来到备份的 192.168.115.6 上查看 虚ip 是否成功飘过来

curl 验证是否负载均衡 (成功添加了高可用和备份及负载均衡)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值