linux CentOS7 haproxy+httpd负载均衡 部署搭建

目录

一、概述

简介

核心功能

关键特性

应用场景

负载均衡

二、环境简介

三、操作步骤

部署web1与web2

web1和web2安装httpd

web1和web2网站根目录个写一个html首页,用于后期测试

启动httpd

部署haproxy调度器

内核配置

编译安装

建立配置文件

配置tcp(四层)模式

添加为系统服务

配置syslog日志

测试tcp(4层)模式

在tcp(4层)模式下配置http(7层)模式(红色字体是tcp与http模式不一致的地方)

测试http(7层)负载

测试监控页面

by by


提示:以下是本篇文章正文内容,下面案例可供参考

一、概述

简介

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的网络带宽。

应用场景

高并发要求较高的场合下

负载均衡

4层负载(tcp)(不支持监控状态)

7层负载(http)(支持监控状态)

二、环境简介

1.准备4台虚拟机,1台做haproxy调度器,2台做web服务器,1台做测试客户机

2.haproxy调度器:192.168.115.130

3.web1:192.168.115.131  web2:192.168.115.132

4.客户机:192.168.115.128

5.先配置tcp4层负载模式,再在tcp基础上配置http7负载层模式

三、操作步骤

部署web1与web2

web1和web2安装httpd

yum -y install httpd

web1和web2网站根目录个写一个html首页,用于后期测试

echo "web1" >/var/www/html/index.html

echo "web2" >/var/www/html/index.html

启动httpd

systemctl start httpd

部署haproxy调度器

内核配置

vim /etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65023
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_max_tw_buckets = 400000
net.ipv4.tcp_max_orphans = 60000
net.ipv4.tcp_synack_retries = 3
net.core.somaxconn = 10000

sysctl -p

编译安装

下载

下载haproxy软件包(官网下载地址:https://www.haproxy.org/download/ 可根据自己的需求下载对应版本)

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

下载完成解压

tar xf haproxy-1.7.2.tar.gz

安装

安装gcc依赖

yum -y install gcc

安装 haproxy

cd haproxy-1.7.2/

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

#PREFIX  指定安装路径

#TARGET 根据自己的内核版本设置,下图是我的内核版本

make install PREFIX=/usr/local/haproxy

安装完成,下面建立配置文件

建立配置文件

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

编译安装的配置文件目录与文件没有生成,所以需要我们手动建目录与文件

mkdir /etc//etc/haproxy

touch /etc/haproxy/haproxy.cfg

配置tcp(四层)模式

global #全局属性
    daemon  #以daemon方式在后台运行
    maxconn 256  #最大同时256连接
    pidfile /var/run/haproxy.pid  #指定保存HAProxy进程号的文件
 
 
defaults #默认参数
    mode tcp  #tcp模式
    timeout connect 5000ms  #连接server端超时5s
    timeout client 50000ms  #客户端响应超时50s
    timeout server 50000ms  #server端响应超时50s
 
 
frontend http-in #前端服务http-in
    bind *:80  #监听80端口
    default_backend servers  #请求转发至名为"servers"的后端服务
 
 
backend servers #后端服务servers

     balance  roundrobin  #轮询
    #balance  source     #保持会话 
    server server1 192.168.115.131:80 maxconn 32  #backend servers中只有一个后端服务,名字叫server1,起在本机的80端口,HAProxy同时最多向这个服务发起32个连接
    server server2 192.168.115.132:80 maxconn 32  #backend servers中只有一个后端服务,名字叫server2,起在本机的80端口,HAProxy同时最多向这个服务发起32个连接

添加为系统服务

cp examples/haproxy.init /etc/init.d/haproxy

vim  /etc/init.d/haproxy

修改: 35行 内容为 BIN=/usr/local/haproxy/sbin/$BASENAME

#定义haproxy的可以执行文件路径/usr/local/haproxy/sbin

注释掉26行[ ${NETWORKING} = "no" ] && exit 0

下图可以看到/etc/init.d/haproxy并没有可以执行权限,需要手动加上

chmod +x /etc/init.d/haproxy

chkconfig --add /etc/init.d/haproxy #添加 haproxy 服务为系统启动项

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

 chkconfig haproxy --level 35 on

  • 0:系统停机状态,也就是关机。
  • 1:单用户模式,只有一个命令行终端可以使用。
  • 2:多用户模式,没有 NFS(网络文件系统)。
  • 3:完全的多用户模式,有 NFS。
  • 4:系统未使用,保留给用户。
  • 5:图形界面模式。
  • 6:系统正常关闭并重启(用于自动重启)。

查看已经配置的服务和启动状态

chkconfig --list 

重新加载 systemd 系统管理器配置文件

systemctl daemon-reload

使用systemctl进行启停 #我们现在已经可以使用systemctl直接启动了

配置syslog日志

touch /etc/rsyslog.d/haproxy.conf

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

启动haproxy

systemctl start haproxy

测试tcp(4层)模式

在tcp(4层)模式下配置http(7层)模式(红色字体是tcp与http模式不一致的地方)

global #全局属性
    daemon  #以daemon方式在后台运行
    maxconn 256  #最大同时256连接
    pidfile /var/run/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  #监听80端口
    default_backend servers  #请求转发至名为"servers"的后端服务
 
 
backend servers #后端服务servers

    #balance  roundrobin  #轮询
    #balance  source     #保持会话 

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

#配置监控页面

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

测试http(7层)负载

 测试监控页面


by by

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值