陈奇网络工作室

Haproxy服务调优和配置内容详解

系统操作和维护

通过博文:Nginx Tomcat实现集群负载均衡的例子,可以效仿!

LVS负载平衡集群的详细说明

我们已经可以用Nginx和LVS来做负载均衡集群了,两者各有特色。今天,我们知道一个流行的集群调度工具,——Haproxy。

一. Haproxy概述

Haproxy是目前比较流行的集群调度工具,类似的集群调度工具有很多,比如LVS、Nginx等。相比较而言,LVS性能最好,但建设相对复杂;Nginx的上游模块支持集群功能,但对集群节点的健康检查功能不强,性能不如Haproxy。

二、使用Haproxy时必须了解的知识点

1.HTTP请求

通过URL访问网站使用的协议是HTTP协议,这类请求一般称为HTTP请求。

HTTP请求可以分为GET模式和POST模式。它们之间的区别如下:

GET方法:内容少(一般不超过8kB)且不安全,内容直接附在URL上;

贴吧模式:内容丰富,安全;

当使用浏览器访问URL时,将根据请求的URL返回状态代码。通常正常的状态码是2 X X和3xx(比如201和301),如果有异常会返回4 X X和5xx(比如401和501)。

关于HTTP请求返回的状态码的详细内容,请参考博文:HTTP请求返回的状态码的详细说明。

2.常见的负载平衡调度算法。

使用LVS、Haproxy和Nginx构建集群有三种最常用的调度算法:

(1)RR(轮询算法)

RR (Round Robin): RR算法最简单也最容易理解,就是轮询调度。这个算法还有一个加权轮询,即根据每个节点的权重轮询,分配访问请求。

这个算法主要用于性能差不多的节点服务器,想工作都工作;

(2)最小连接数算法

LC(最少连接数):最小连接数算法,根据后端的节点连接数动态分配前端请求。它可以确保新请求被分配给具有最少数量连接的客户端。其实每个节点的连接数都是动态释放的,很难有相同的连接数。因此,该算法相对于RR算法有了很大的改进,是目前使用最多的算法。

(3)SH(基于源的访问调度算法)

SH(源哈希):即基于源的访问调度算法。这种算法用于在服务器端记录会话会话的一些场景,可以基于源IP、Cookie等进行集群调度。这种算法的优点是实现了会话维护,但是当一些IP访问量很大时,会造成负载不均衡,一些节点访问量很大,会影响业务使用。

3.通用Web集群调度程序

目前最常见的Web集群调度器分为软件和硬件两种。软件通常使用开源的LVS、Haproxy和Nginx;硬件上常用F5,很多人用国内的一些产品。比如派克,绿盟等等。

4.4的应用环境。Haproxy

如图所示:

第三,安装Haproxy

Haproxy的安装包网盘链接:https://pan.baidu.com/s/10masYgp7VSWuZu8ebZ-pfQ

提取代码:2l44

1.编译并安装Haproxy

[root@localhost ~]# yum -y安装pcre-devel bzip2-devel

//安装依赖包,使Haproxy服务可以支持正则表达式和解压缩。

[root @ localhost ~]# tar zxf haproxy-1.5.19.tar.gz-C/usr/src

[root @ localhost ~]# CD/usr/src/ha proxy-1 . 5 . 19/

[root @ localhost ha proxy-1 . 5 . 19]# make target=Linux 26//表示64系统。

//正常解压,但是这个软件不需要配置。

[root @ localhost ha proxy-1 . 5 . 19]#进行安装

2.Haproxy服务配置

(1)建立Haproxy配置文件。

[root @ localhost ha proxy-1 . 5 . 19]# mkdir/etc/ha proxy

[root @ localhost ha proxy-1 . 5 . 19]# CP/usr/src/ha proxy-1 . 5 . 19/examples/ha proxy . CFG/etc/ha proxy/

//将haproxy.cfg文件复制到配置文件目录。

(2)2)ha proxy配置项目的详细说明

Haproxy配置文件通常分为三个部分:

全局(全局配置);

默认值(默认配置);

监听(应用程序组件配置)

Global通常有以下配置参数:

全球的

日志127。

log 127 . 0 . 0 . 1 Local 1 Notice # Notice是一个日志级别,通常有24个级别。

#log loghost local0信息

Maxconn 4096 #最大连接数

Chroot /usr/share/haproxy #服务自己设置的根目录,一般这一行需要注释掉。

UID 99 #用户UID

Gid 99 #用户Gid

守护进程#守护进程模式

默认值(默认配置)通常由应用程序组件继承。如果应用程序组件中没有特别声明,将安装默认配置参数设置。常见参数有:

默认

Log global #将日志定义为全局配置中的日志定义。

模式http #模式是http。

选项httplog #以http日志格式记录日志。

选项dontlognull

Retries 3 #检查节点服务器的失败次数,如果连续失败三次,则认为节点不可用。

Redispatch #当服务器负载较高时,自动结束当前队列已经处理了很长时间的连接。

Maxconn 2000 #最大连接数

Contimeout 5000 #连接超时

Clitimeout 50000 #客户端超时

Srvtimeout 50000 #服务器超时

Listen(配置项)通常配置应用模块参数:

listen appli4-backup 0 . 0 . 0:10004 #定义了名为appli 4-backup的应用程序。

选项httpchk /index.html #检查服务器的index.html文件。

选项persist #强制将请求发送到已经关闭的服务器,此选项通常是禁用的。

Balance roundrobin #负载平衡调度算法使用轮询算法。

server inst 1 192 . 168 . 114 . 56:80 check inter 2000 fall 3 #定义了在线节点。

server inst 2 192 . 168 . 114 . 56:81 check inter 2000 fall 3 backup #定义备份节点。

#注意:在上面定义的备份节点的参数中,

#“check inter 2000”表示haproxy服务器和节点之间的心跳频率,

#“fall 3”表示如果连续三次未检测到心跳频率,则该节点被视为无效。

#配置后带“备份”的节点,表示该节点只是一个备份节点,只有在主节点出现故障的情况下才会启动。

# Remove backup,意思是做主节点,和其他主节点一起提供服务。

(3)3)ha proxy的参数调整

如图所示:

以下修改后的配置文件可以满足正常要求。如果详细阅读了以上配置项的含义,可以自己添加需求。

全球的

日志127.0.0.1本地0

日志127.0.0.1本地1通知

#log loghost local0信息

maxconn 4096

#chroot /usr/share/haproxy

uid 99

gid 99

守护进程

#调试

#安静

默认

日志全局

模式http

选项httplog

选项dontlognull

重试3次

#重新调度

maxconn 2000

持续5000分钟

扣除50000英镑

srvtimeout 50000

听应用1-重写0.0.0.0:80

选项httpchk GET /index.html

平衡循环赛

服务器app1_1 192.168.1.3:80检查inter 2000上升2下降5

服务器app1_2 192.168.1.4:80检查inter 2000上升2下降5

这里就不解释什么意思了。

(4)创建启动脚本

[root @ localhost ~]# CP/usr/src/ha proxy-1 . 5 . 19/examples/ha proxy . init/etc/init . d/ha proxy

[root @ localhost ~]# ln-s/usr/local/sbin/ha proxy/usr/sbin/ha proxy

[root @ localhost ~]# chmod x/etc/init . d/ha proxy

[root @ localhost ~]# chkconfig-add/etc/init . d/ha proxy

[root @ localhost ~]#/etc/init . d/ha proxy start

正在启动ha代理(通过system CTL):[正常]

//都是很基本的命令,这里就不解释什么意思了。

(5)Haproxy服务的日志

Haproxy的日志默认输出到系统的syslog,查看起来非常不方便。为了更好的管理Haproxy的日志信息,我们一般在声场环境下单独定义。该方法如下:

[root @ localhost ~]# vim/etc/ha proxy/ha proxy . CFG

全球的

日志/开发/日志本地0信息

log /dev/log local0通知

//添加两行内容,把原本关于日志的信息注释掉

[root@localhost ~]# systemctl重新启动haproxy

//重启服务

[root @ localhost ~]# vim/etc/rsyslog。d/ha代理。conf

//定义Haproxy服务的日志文件存放的位置,添加如下内容:

if($ program name==\ \ \ ' ha proxy \ \ \ ' and $ syslog severity-text==\ \ \ ' info \ \ \ ')then-/var/log/ha proxy/ha proxy-info。原木

~

if($ program name==\ \ \ ' ha proxy \ \ \ ' and $ syslog severity-text==\ \ \ ' notice \ \ \ ')然后-/var/log/ha proxy/ha proxy-notice。原木

~

[root@localhost ~]# systemctl重新启动rsyslog

//重启日志服务

当客户端访问时,就可以利用以下命令查看Haproxy服务的日志文件

[root @ localhost ~]# tail-f/var/log/ha proxy/ha proxy-info。原木

———————— 本文至此结束,感谢阅读————————

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3