千家信息网

使用haproxy-实现七层负载均衡

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,使用haproxy-实现七层负载均衡HAProxy概述: HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最
千家信息网最后更新 2024年11月14日使用haproxy-实现七层负载均衡

使用haproxy-实现七层负载均衡

HAProxy概述

HAProxy提供高可用性、负载均衡以及基于TCPHTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合您当前的架构中, 同时可以保护你的web服务器被暴露到网络上。

其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql的均衡负载。

相同点:在功能上,proxy通过反向代理方式实现 WEB均衡负载。和 NginxApacheProxylighttpdCheroke 等一样。

同点:Haproxy Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是 WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)(php,cgi..)文件的传输以及处理。而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并能提供http服务。 但其配置简单,拥有非常错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障, HAProxy会自将该服务器摘除,故障恢复后再自将该服务器加入。

一:实验拓扑图:

二:实验目标

实战:使用haproxy实现负载均衡集群

三:实验环境

Xuegod63 192.168.1.63

Xuegod64 192.168.1.64

Xuegod62 192.168.1.62

四:实验代码

1、搭建编译安装haproxy环境

1解压haproxy软件包

[root@xuegod63 ~]# tar -zxvf haproxy-1.4.22.tar.gz

[root@xuegod63 haproxy-1.4.22]# cd /root/haproxy-1.4.22

[root@xuegod63 haproxy-1.4.22]# uname -r #查看内核版本

2.6.32-220.el6.x86_64

2)安装

[root@xuegod63 haproxy-1.4.22]#make TARGET=linux26 PREFIX=/usr/local/haproxy #定操作系统内核类型和安装的路径。也可以直接修改Makefile配置文件中这两个变量的值。如下:

[root@xuegod63 haproxy-1.4.22]# vim Makefile

[root@xuegod63 haproxy-1.4.22]#make install PREFIX=/usr/local/haproxy

#如果没有修改Makefile配置文件中PREFIX变量的值,就必须在此重新对,PREFIX=/usr/local/haproxy赋值,否则直接执行 make install 时,make install会直接读取Makefile文件中PREFIX的变量值。

3使用nobody用户运行haproxy

[root@xuegod63 haproxy-1.4.22]# id nobody

uid=99(nobody) gid=99(nobody) groups=99(nobody)

4设定HAproxy配置文件

[root@xuegod63 haproxy-1.4.22]# ls /usr/local/haproxy/

doc sbin share

注:没有生成配置文件,后期自己手写一个。

[root@xuegod63 ~]# mkdir /usr/local/haproxy/etc

[root@xuegod63 ~]# touch /usr/local/haproxy/etc/haproxy.cfg #创建配置文件

注: 配置文件的解读:

global #全局,以全局定义为准

defaults #默认,在全局的前提下,默认跟局部的配置,如果局部没说,那就挄默认走,如果局部有定义那就挄局部。

frontend #前端,监听地址,监听端口,该如何处理

backend #后端服务器,定义那些真正处理业务的服务器Realserver.

listen #frontendbackend 合体的一种方案

[root@xuegod63 ~]# vim /usr/local/haproxy/etc/haproxy.cfg # 写入以下内容

global

log 127.0.0.1 local0

#log 127.0.0.1 local1 notice

#log loghost local0 info

maxconn 4096

chroot /usr/local/haproxy

uid 99 #所属运行的用户uid

gid 99 #所属运行的用户组

daemon #以后台形式运行haproxy

nbproc 1 #启动1haproxy实例。# #工作程数量(CPU数量) ,实际工作中,应该设置成和CPU核心数一样。 这样可以发挥出最大的性能。

pidfile /usr/local/haproxy/run/haproxy.pid #将所有程写入pid文件

#debug #调试错误时用

#quiet #安静

defaults

log global

log 127.0.0.1 local3 #日志文件的输出定向。产生的日志级别为local3. 系统中local1-7,用户自己定义

mode http #工作模式。所处理的类别,默认采用http模式,可配置成tcp4层消息转发

option httplog #日志类别,记载http日志

option httpclose #每次请求完毕后主关闭http通道,haproxy支持keep-alive,叧能模拟这种模式的实现

option dontlognull #记录空连接,产生的日志

option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip

option redispatch #serverid对应的服务器挂掉后,强制定向到其他健康服务器

retries 2 #2次连接失败就认为服务器可用,主要通过后面的check检查

maxconn 2000 #最大连接数

balance roundrobin #负载均衡算法

stats uri /haproxy-stats #haproxy 监控页面的访问地址 # 可通过 http://localhost:80/haproxy-stats 访问

contimeout 5000 #连接超时时间。 单位:ms 毫秒

clitimeout 50000 #客户端连接超时时间

srvtimeout 50000 #服务器端连接超时时间

listen localhost 0.0.0.0:80 #运行的端口及主机名

mode http

option httpchk GET /index.html #健康检测。#注意实际工作中测试时,应该下载某一个页面来行测试,因此这个页面应该是个小页面,而要用首页面。这里是每隔一秒检查一次页面。

server s1 192.168.1.62:80 weight 3 check #后端的主机 IP &权衡

server s2 192.168.1.64:80 weight 3 check #后端的主机 IP &权衡

#server s3 192.168.148.110:8081 weight 3 check #后端的主机 IP &权衡

5)启动和停止服务

[root@xuegod63 haproxy]# mkdir run

1)启动haproxy

[root@xuegod63 etc]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg

查看状态:

[root@xuegod63 etc]# ps -axu | grep haproxy

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

nobody 3871 0.0 0.0 12228 1036 ? Ss 21:53 0:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg

root 3879 0.0 0.0 103300 852 pts/0 S+ 21:53 0:00 grep haproxy

[root@xuegod63 etc]# netstat -antup | grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3871/haproxy

2haproxy

[root@xuegod63 etc]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg -st `cat /usr/local/haproxy/run/haproxy.pid`

查看 -st 参数含意:

[root@xuegod63 ~]# /usr/local/haproxy/sbin/haproxy -h

-sf/-st [pid haproxy当前ID]* finishes/terminates old pids. Must be last arguments. # 完成/ terminates trm.nāt)终止旧的PID。 此参数必须是最后一个参数。

3)停止

[root@xuegod63 etc]# killall haproxy

6rsyslog.conf中开udp 514的日志收集

[root@xuegod63 ~]#vim /etc/rsyslog.conf # 打开以以下两行的注释,打开收到日志。

# Provides UDP syslog reception

$ModLoad imudp.so

$UDPServerRun 514

如图:

58 local7.* /var/log/boot.log #在这下面新增以下两行条目

local3.* /var/log/haproxy.log

local0.* /var/log/haproxy.log

7rsyslog服务

[root@xuegod63 ~]#/etc/init.d/rsyslog restart

2配置后端服务器: xuegod62

1配置web服务器:

[root@xuegod62 html]# yum install httpd php -y

2生成测试文件:

root@xuegod62 html]#echo 192.168.1.62 > /var/www/html/index.html

3)启动apache服务器:

[root@xuegod62 html]# service httpd restart

3配置后端服务器: xuegod64

1配置web服务器:

[root@xuegod64 html]# yum install httpd php -y :

2生成测试文件:

echo 192.168.1.64 > /var/www/html/index.html

3)重启apache服务器

[root@xuegod64 html]# service httpd restart

4、测试:

1查看HAproxy的监控页面

http://192.168.1.63/haproxy-stats

2测试:反向代理及负载均衡

http://192.168.1.63/

http://192.168.1.63/


服务 服务器 配置 文件 均衡 日志 页面 运行 代理 支持 测试 主机 参数 局部 模式 用户 处理 实验 工作 健康 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 宿州网络安全考试公司 端游原神怎么查看服务器 用云盘做软件服务器 金税三期个税数据库损坏 成都2018网络安全博览会 电脑开机一段时间不能访问服务器 网络安全的手抄报怎么办 博兴人力资源软件开发公司 app怎样放服务器生成二维码 群体决策支持系统数据库 传奇176版本数据库 手机怎么管理电脑服务器 软件开发1.0和2.0编号意义 为什么要提高网络安全知识 衡水市网络安全考核部署会 中国网络安全中心是干嘛的 盐城天一网络技术 香港服务器做棋牌安全吗 网络安全管理十三五规划方案 计算机网络技术第5版答案 数据库模式不匹配 数据库相应字段自增写法 数据库查询哪种方式更好 科技股和互联网 vps 云服务器管理系统 北京市耀华夏网络技术有限公司 网络安全靠人民观后感 软件开发java和web的区别 禁止下载软件开发 原神b服服务器能切换官服吗
0