2019/06/08 M 国内互联网架构常用负载均衡haproxy介绍

haproxy最主要的功能,无非就是nginx的proxy的功能,所以从这个角度来讲,haproxy是一款代理服务器,或者称为伪4层的负载均衡器软件解决方案,名字虽然叫ha,但是自身并没有ha功能,在讲负载均衡的时候提到过,如果前端主机对后端服务器主机健康有检测能力,而后端主机不止一个的时候,这时会导致一个结果,某单台服务器出现故障,并不会导致整个服务不可用,所以能够在一定程度上带来ha的功用,因此把它称作haproxy
haproxy和nginx不同的地方在于haproxy仅仅是一个负载均衡器或http代理服务器,代理完后也可以做负载均衡,所以是一个七层的负载均衡器(就看前端服务器要不要写在ssl)
在这里插入图片描述在这里插入图片描述
负载均衡解决方案,开源有如下
在这里插入图片描述
如果中小站点,工作在七层模型上的时候,工作逻辑如下,当用户请求到达负载均衡服务器时,负载均衡器应该以web服务为cluster,主站程序是动态的话,应该会把这部分内容发送给主站服务器,假如是动态的话,请求是直接到动态服务器,对动态服务器来讲 程序是由指令加数据组成的,所以在服务器上部署的页面文件都通常是指令,是程序文件本身,而数据通常在后端的存储当中(关系型数据库,mariadb,oracle,非关系型mongodb,json格式的)
web2.0时代,缓存是提高速度的关键

在这里插入图片描述
数据存在空间局部性和时间局部性,所以存在热区,这些热区数据存放在缓存中,就足够承载百分之80 的访问了
后端做图片存储的比如nginx或者lucky,轻量级的web服务器程序,这种web服务器程序有可能允许服务器上传图片

在这里插入图片描述
所以就应该有个分布式存储系统的集群用来存储这些,(动态服务器完成(增删改)操作和静态服务器(读取)都需要链接)
在这里插入图片描述
haproxy工作在何处,能实现怎么样的工用,nginx做负载均衡和代理服务器都可以,因此整个集群的接口,haproxy是可以使用的,也能做动静分离和各种功能,同时haproxy工作在tcp模式下,也能够做,能承担非web应用,比如mysql,因此在各种位置,在任何位置,都能做负载均衡的软件,所以haproxy跟nginx的stream模块一样,能够调度众多服务,需要用到这些软件的高级功能,而无需管理过大的并发,他们比lvs更加实用,
因为haproxy基于tcp协议,可以调度fastcgi,http,mysql协议都没问题,所以haproxy的适用率是还是非常多的,那么用nginx还是haproxy呢,取决于你的前任,前任给你留下了什么样的环境,你所运维的就是什么环境 ,如果需要改造接口时,就另当别论,
(日常工作就是发布,变更(配置文件的参数做调整,每天调整,需要经过多次调整才能达到一个最佳适用的参数,关闭445,和130),故障处理(一般来讲一台服务器1000天是要坏一次的,坏的概率是千分之1,一般入职会给你签协议,任何时候出现故障,你的手机都要在线,午夜凶铃))
某东,某淘宝,运维工具非常完善,内部人员只需要看清楚监控,各种故障怎么在线上处理就可以了,越大的公司,你就越是螺丝钉,(没有固定靠谱的范围,只要靠谱的自己的能力)

在这里插入图片描述
github,代码托管管理站点
支持tcp和http协议的反代1
1.基于静态的cookie来完成http协议的请求和调度
2.可以基于所谓的服务器端口的持久来实现负载均衡

在这里插入图片描述

haproxy有了商业版本以后就进入了快速的版本迭代更新
haproxy跟keepalived一样在centos6。4开始都收入到base仓库了,随系统发行光盘直接提供
(nginx没有,nginx还是epel源)
现在看文档

在这里插入图片描述
在这里插入图片描述
starter guide 开始指南,configuration manual 配置手册,managerment guiede管理指南
在这里插入图片描述
haproxy的配置指令非常多
在这里插入图片描述
程序环境,先让haproxy负载web服务器集群为例,七层反向代理,后端的主机应该都是用私有地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
unit file对centos7来讲是个重要文件
在这里插入图片描述
nginx中代理是没有一一对应关系的,称为server
**代理配置段**
对haproxy称为frontend(定义如何接受用户请求server的,backend定义后端服务器归位组,来进行负载均衡调度)
前后端有些都用到的,就可以作为默认值default

在这里插入图片描述
前端和后端一一对应,只负责一个调度,haproxy可以定义为listen
在这里插入图片描述
这个四个称为代理的定义
在这里插入图片描述
在这里插入图片描述
程序自身配置段都在global中
安装haproxy的文件数量

在这里插入图片描述
错误页
在这里插入图片描述
在这里插入图片描述
代理配置段的默认值
在这里插入图片描述
在这里插入图片描述
假如现在要配置一个简单的负载均衡集群,准备两个后端服务器,配置成web服务
在这里插入图片描述
在这里插入图片描述
一定要记得先同步时间
先提供测试页*在负载均衡里,页面必须一摸一样)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另外一台主机也同理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试正常
在这里插入图片描述
尝试做配置,让haproxy代理后端两台服务器
在这里插入图片描述
在这里插入图片描述
main代表主server或者默认server
定义一个名字只要不跟其他frontend名字相同就可以

在这里插入图片描述
默认后端服务器是谁
在这里插入图片描述
删除部分内容
在这里插入图片描述
balance 是负载均衡的调度算法 roundrobin static的标识符只在haproxy使用,跟后端主机没有关系,起个名字
check对后端服务器做健康状态监测

在这里插入图片描述
现在就可以来尝试启动了
在这里插入图片描述
可以用tnlp查看谁监听的
在这里插入图片描述
在这里插入图片描述
也可以使用bind来定义监听地址端口
在这里插入图片描述
在这里插入图片描述
定义好后就可以直接查询访问了
在这里插入图片描述
在这里插入图片描述
一个简单的负载均衡集群就配置好了
在server背后有很多参数可以设定服务器的自己监听的一些权重之类的
在这里插入图片描述
这是web服务集群,如果要定义别的集群的话,把端口修改一下,只要把mode改一下就可以了,
mode是定义工作在7层还是4层的,工作在7层们通常只能负载均衡web服务,(如果后端是mysql怎么办,这时候就要工作在tcp模式下)
先启动后端mysql服务,并允许远程连接

在这里插入图片描述
当前用户是root
在这里插入图片描述
另外一个主机也提供一个一模一样的账号
在这里插入图片描述
测试一下node3连接node2
在这里插入图片描述
现在试试能否给mysql做负载均衡操作
在这里插入图片描述
现在添加一个mode
监听端口3306
后面服务器地址,,mysql1
对于长连接来讲,避免使用roundrobin调度,应该使用最少链接leastpost

在这里插入图片描述
重启服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连不上可能是因为mysql工作原理有关系
在这里插入图片描述
在这里插入图片描述
global代表全局,haproxy对全局配置段,有三段指令在这里插入图片描述
第一类是与进程相关的参数
第二类是与性能调整相关的
第三类是debug(启动的时候根据其他的性能指标应该使用什么参数为最佳,会自动的去设定,这比自己设定好很多,自己设定会导致资源不足,多的话,会导致资源浪费,因此我们无须为haproxy做过多的设置)

在这里插入图片描述
但是有这么几个参数需要了解
log(定义日志系统发往何处,127.0,。0.1当前主机的日志服务器地址,
local2指日志Facility)

在这里插入图片描述
对于linux程序来讲,大部分应用程序都需要记录日志,每个应用程序分别记录日志挺烦的,因此为了帮助诸多应用程序记录日志,就有一个专门的日志服务syslog(早期单进程,并发非常有效,centos5以后用rsyslog支持多线程,tcp
Facility设施)

Facility就是把日志归类,来源是何处,来源于守护进程的统统归为一类,通告一个代理人信道来记录到一个 文件中,这样说明就是一类日志
把用户登录的日志由第二个代理人收集到第二个日志文件中
这种就叫facility,负责把日志记录在指定的目标处,这个目标可能是个文件,也可能是个存储,也可能是一个用户,可以把信息发送给用户
后面存放的位置都是由facility来定义的

在这里插入图片描述
每个应用程序产生的日志非常多,我们也没有必要把所有的日志都记录下来,只记录一些关键事件
就需要定义priority优先级
从local0-7,用户自定义的facility
在这里插入图片描述
在这里插入图片描述
前面是facility,.后面是priority
在这里插入图片描述
现在可以定义local2
在这里插入图片描述
.*.是可以的,有些应用程序可以指定级别,如果没指定级别,在这里也是可以定义的
在这里插入图片描述
所有配置必须放到配置段下,放在其他位置是不能生效的
在这里插入图片描述
监听套接字
在这里插入图片描述
配置服务就配置ok了
在这里插入图片描述
这里就是定义,日志送给哪个服务器的那个facility
在这里插入图片描述
如果代理服务器需要自己生成日志,可以在自己的服务器上定义
运行在一个切跟下,万一haproxy被劫持了,破坏的就是你的跟系统
所以把haproxy禁锢在/var/lib/haproxy跟下,其实这个目录什么也没有,不能危害到真正的跟
现在很多应用都跑在容器当中或者虚拟机上,破坏的也仅是虚拟机

在这里插入图片描述
最大并发连接数
在这里插入图片描述
以哪个身份来运行子进程
在这里插入图片描述
手动检测模式
在这里插入图片描述
用哪个文件来实现本地保存去访问stats页面,unit socket文件路径
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值