HAProxy——概念,反向代理及负载均衡

1. HAProxy介绍

HaProxy是一个特别适用于高可用性环境的TCP/HTTP开源的反向代理和负载均衡软件。在七层负载均衡方面的功能很强大(支持cookie track, header rewrite等等),支持双机热备,支持虚拟主机,支持健康检查,同时还提供直观的监控页面,可以清晰的监控服务集群的运行状况。

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和 Tuenti在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。

2. Haproxy的配置

HAProxy的配通过程分为3个主要部分:

  • 命令行参数,这是最优先的
  • global (全局)段,设置进程级参数;
  • 代理配置段,通常位于default,listen,backend这样的形式内。

配置文件的语法是由关键字后跟可选的一个或者多个参数(参数之间有空格)组成。如果字符串中包含空格,必须用\进行转义.

Haproxy配置段中分五大部分:

  • global:全局参数配置,进程级的,用来控制Haproxy启动前的一些进程及系统设置
  • defaults:配置些默认的参数,可以被frontend,backend, listen段集成使用
  • frontend :用来匹配接收客户所请求的域名、uri等,并针对不同的匹配做不同的请求处理
  • backend:定义后端服务器集群,以及对后端服务器集群的一些权重、队列、连接数等选项的设置,类似于nginx中的upstream模块
  • listen:可以理解为frontend和backend的组合体。Haproxy配置文件的配通方法主要有两种,一种是由前端(frontend )和后端( backend )配置块组成,前端和后端都可以有多个。第二种方法是只有一个listen配置块来同时实现前端和后端。最常用也是推荐的方法为第一种,即frontend和backend的模式

3. 实验环境准备

准备三台全新的虚拟机

cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b kane.qcow2 hh1
qemu-img create -f qcow2 -b kane.qcow2 hh2
qemu-img create -f qcow2 -b kane.qcow2 hh3

server1—haproxy
server2—服务端
server3—服务端

4. 实现反向代理及负载均衡

server1

yum install haproxy -y

cd /etc/haproxy/
vim haproxy.cfg 

 87 listen  admin *:8080
 88         stats enable
 89         stats uri /status       #监控页面地址
 90         stats auth admin:westos #管理帐号和密码
 91         stats refresh 5s        #刷新频率
 92 
 93 listen  westos *:80             #监听的实例名称,地址和端口
 94         balance roundrobin      #负载均衡算法
 95         server web1 172.25.1.2:80 check
 96         server web2 172.25.1.3:80 check
systemctl start haproxy	#启动haproxy

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

server2

yum install httpd -y
cd /var/www/html/
vim index.html
server2

systemctl start httpd

在这里插入图片描述

server3

yum install httpd -y
cd /var/www/html/
vim index.html
server3

systemctl start httpd

在这里插入图片描述

server1

netstat -antlp

在这里插入图片描述

测试:
打开游览器:

http://172.25.1.1:8080/status

在这里插入图片描述
在这里插入图片描述

真机:

curl 172.25.1.1

在这里插入图片描述
关闭server2

systemctl stop httpd

真机:

curl 172.25.1.1

在这里插入图片描述
在这里插入图片描述

生成日志:

server1

cat /var/log/messages 

查看日志级别

vim haproxy.cfg 
vim /etc/rsyslog.conf 

 15 $ModLoad imudp
 16 $UDPServerRun 514


 55 local2.*               /var/log/haproxy

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

systemctl restart rsyslog.service
cat /var/log/haproxy 

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值