系统操作和维护
通过博文: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