HAProxy实现网站高并发集群

news/2024/5/19 12:42:37/文章来源:https://blog.csdn.net/weixin_33692284/article/details/90650473

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

项目需求:由于网站规模的扩大,访问量的也越来越多,原来的一台机器提供网站服务,出现故障后就中断了网站服务,造成经济损失,现在老板发话要解决单点故障,于是我就找了些资料,对比了下Haproxy、LVS、Nginx,是各有各的优点,我们的网站每天的PV也不是很大,就先在虚拟机上做了下测试,仅做Haproxy部分七层负载均衡,生产环境需要Haproxy+keepalived来实现负载均衡器高可用性。

先了解下HAProxy常用的算法:

roundrobin   #表示简单的轮询,每个负载均衡器基本都具备的
static-rr    #表示根据权重
leastconn    #表示最少连接者先处理
source       #表示根据请求源IP, haprox按照客户端的IP地址所有请求都保持在一个服务器上

ri           #表示根据请求的URI
rl_param     #表示根据请求的URl参数'balance url_param' requires an URL parameter name
hdr(name)    #表示根据HTTP请求头来锁定每一次HTTP请求
rdp-cookie(name) #表示根据据cookie(name)来锁定并哈希每一次TCP请求

拓扑图:

124805373.jpg

下载:http://haproxy.1wt.eu/

配置如下:

安装haproxy

1
2
3
4
[root@localhost ~]# tar zxvf haproxy-1.4.24.tar.gz
[root@localhost ~]# cd haproxy-1.4.24
[root@localhosthaproxy-1.4.24]# make TARGET=linux26 PREFIX=/usr/local/haproxy
[root@localhosthaproxy-1.4.24]# make install PREFIX=/usr/local/haproxy

#进入安装目录创建配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@localhosthaproxy-1.4.24]# cd /usr/local/haproxy/
[root@localhost haproxy]# mkdir conf
[root@localhost haproxy]# cd conf/
[root@localhost conf]# vi haproxy.cfg
global
    log 127.0.0.1 local0  #通过syslog服务的local0输出日志信息
    maxconn 4096  #单个进程的最大连接数
    uid 99        #所属运行的用户uid,默认nobod
    gid 99        #所属运行的用户组,默认nobody
    daemon        #后台运行
    nbproc 2      #工作进程数量
    pidfile /var/run/haproxy.pid
defaults
    log global
    log 127.0.0.1 local3 err #使用本机上的syslog服务的local3 设备记录错误信息[err warning info debug]
    mode http          #工作模式在7层,tcp是4层
    option httplog     #使用http日志类别,默认是不记录http请求的
    option httpclose   #每次请求完毕后主动关闭http通道式
    option forwardfor  #如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中获得客户端IP
    option redispatch  #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    retries 3          #设置尝试次数,3次连接失败则认为服务器不可用
    maxconn 2048       #最大连接数
    contimeout 5000    #连接超时
    clitimeout 50000   #客户端超时
    srvtimeout 50000   #服务器超时
    timeout check 2000         #心跳检测超时
listen status 0.0.0.0:8080     #定义状态名字和监听端口
    stats uri /haproxy-status  #查看haproxy服务器状态地址
    stats auth admin:admin     #查看状态页面的用户名和密码
    stats hide-version         #隐藏haproxy版本信息
    stats refresh 30s          #每5秒刷新一次状态页面
listen web_server 0.0.0.0:80   #定义后端名字和监听端口
    mode http                  #采用7层模式
    balance roundrobin         #负载均衡算法,这里是轮叫
    cookie SERVERID  #允许插入serverid到cookie中,serverid后面可以定义
    option httpchk GET /index.html #健康检测
    server web1 192.168.1.11:80 weight 3 check inter 500 fall 3
    server web2 192.168.1.12:80 weight 2 check inter 500 fall 3

说明:用server来设置后端服务器

第二段:haproxy自己的一个名称,将在日志中显示

第三段:后端IP和端口

第四段:权重值,权重值越大,分配的任务几率越高

第五段:健康检测,inter 500健康检测间隔是500毫秒

最后一段:检测多少次,认为服务器是不可用的

启动haproxy

1
[root@localhost ~]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

重启haproxy

1
[root@localhost ~]# /usr/local/haproxy/sbi n/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -st `cat/var/run/haproxy.pid`

写一个简单的haproxy服务脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@localhost ~]# vi /etc/init.d/haproxy
#!/bin/bash
DIR=/usr/local/haproxy
PIDFILE=/var/run/haproxy.pid
ARG=$*
start()
{
echo "Starting Haproxy ..."
$DIR/sbin/haproxy -f $DIR/conf/haproxy.cfg
}
stop()
{
echo "Stopping Haproxy ..."
kill -9 $(cat $PIDFILE)
}
case $ARG in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: start|stop|restart"

#设置开机启动

1
2
[root@localhost ~]# chmod +x/etc/init.d/haproxy
[root@localhost ~]# echo "/etc/init.d/haproxy start" >> /etc/rc.local

#查看服务器状态

http://192.168.1.10:8080/haproxy-status

125812648.png

配置haproxy日志输出

1
2
3
4
[root@localhost ~]# vi /etc/rsyslog.conf #在下面添加
local3.*     /var/log/haproxy.log
local0.*     /var/log/haproxy.log
[root@localhost ~]# service rsyslog restart

后端web服务器配置相同

1
2
3
[root@localhost ~]# yum install httpd –y
[root@localhost ~]# service httpd start
[root@localhost ~]# echo "web1/web2" > /var/www/html/index.html

测试访问http://192.168.1.10,按F5一直刷新会显示轮训显示web1和web2,模拟web1故障down机,haproxy页面显示的状态会变成DOWN,只有web2提供服务,当web1恢复后会自动加入集群中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_760378.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大学学python,通过这些刷题网站成了别人眼中大佬

哈喽,大家好,这次为大家分享几个编程刷题网站,巩固基础知识,提升自己的能力水平 首先明确一:我们为什么要刷题呢? 1.通过刷题米提高自己所学专业知识的巩固程度,知道自己的不足之处 2.有可能你通过这些平台刷过的题&#xff0…

大流量、高并发的网站的底层系统架构

动态应用,是相对于网站静态内容而言, 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用…

手机站SEO优化需要外链吗

移动网站对于市场来说,也不是什么新鲜事情了。现在也越来越多的企业客户,更加关注企业网站的搜索效果。 甚至愿意为了网站的移动搜索优化效果,愿意再单独支付费用。也就是PC理PC的,移动理移动的。 百度官方上关于移动网站的基础建…

关于WordPress建站的原理二三事

2019独角兽企业重金招聘Python工程师标准>>> 在写关于仿站文章详情页如何制作之前,我觉得有必要就一些原理性的问题,做一些说明。文章详情页的核心模块和首页有很多相似的地方,比如调用文章的标题、文章的内容、文章分类、作者等&…

大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt387 1 前言 百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP 请求跳转成 HTTPS。本文重点介绍 HTTPS 协议, 并简单介绍部署全站 HTTPS 的意义。 2 HTTPS 协议概述 HTTPS 可以…

大型网站架构之分布式缓存

缓存是优化网站性能的第一手段。在大型网站中,缓存通常用来保存热点数据,或者保存应用上下文相关信息。比如之前提到的session服务器集群就可以用分布式缓存来搭建。当然,分布式缓存还可用于缓存数据库中的热点数据以减轻数据库的压力。 分布…

屏蔽网站广告插件:广告终结者

1. 上网站: http://www.adtchrome.com/ Chorme下载地址: http://www.adtchrome.com/%E5%B9%BF%E5%91%8A%E7%BB%88%E7%BB%93%E8%80%853.1.4.rar 2. 进入chrome扩展程序设置界面: 3. 将解压后的插件文件拖入此界面即可。 4. 后面再打开网页&a…

解读大型网站系统架构的演化

前言一个成熟的大型网站(如淘宝、京东等)的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计…

【转】高扩展性网站的50条原则

《高扩展性网站的50条原则》,利用一天半的时间快速浏览总结的电子书,对网站的建设有一个原则性的把握,书中提到的大部分原则现在已成为互联网行业的共识,但并不妨碍我们重新整理分类,从全局层面把控高扩展性网站的建设…

秒杀网站系统设计详解

2019独角兽企业重金招聘Python工程师标准>>> 最近总有一些朋友问高并发问题,后来就想自己把一个秒杀系统作为例子详细分解一下,也是一个学习过程。 首先假设场景,预计该活动可能有1万人参加,那最大并发数为1万。 主要面…

办公资源:你曾错过的PPT视频教程网站

身边有好多小哥哥,姐说不会制作PPT模板,怎么办呀?我想说不会就学嘛!可有人问了想学又不知道从哪里开始着手。诶呀!真是令人脑壳疼的问题。其实现在网络发展这么快了,网上随便搜索就会有很多PPT制作教学的课…

在 Windows 的 IIS 上部署 .net core 网站

参考: .net core 2.0学习笔记(二):部署到Windows和Liunx系统 - ZuQing - 博客园 使用 IIS 在 Windows 上托管 ASP.NET Core | Microsoft Learn 在 Visual Studio 2017 远程 IIS 计算机上的远程调试 ASP.NET Core 一、安装 SDK…

第一个在 Linux 下的 .net core 2.1 网站 ( Jexus )

制作最简单的 .net core Web应用程序 本文的主要目标是部署, 所以就不多在 Web 应用程序上赘述了, 如下图: 1. 用 VS 2017 创建 ASP.NET Core Web 应用程序项目 HelloCore: 2. 项目上右键生成, 再右键发布&#xff1a…

.net core 网站如何附加到进程 ?

.net core也用了一段时间了, 总觉得网站调试不方便, 直接 F5 运行不稳定,有时在网站输入验证码VS就直接退出了调试。于是改为附加进程,发布到 IIS 再来附加 dotnet 进程, 应用池名称都对上了, 打的断点还是…

.net core 网站 Linux 下部署 ( Docker )

参考:ASP.NET Core Docker部署 有改动。 一、docker 安装 见: https://blog.csdn.net/yenange/article/details/81703221 二、查找 dotnet 的镜像,拉取 https://hub.docker.com/ 下搜索 dotnet , 可以看到: 复制拉取…

大型网站HTTPS部署实践点拨

一、HTTPS简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTP协议传输的数据是未加密的明文,因此使用HTTP协议传输隐私信息非常不安全。为了保证隐私数据能加密传…

IIS10(WinServer2019自带)如何限制网站的流量带宽

网站多了,某个网站极大的下载带宽会挤压其它网站,导致其它网站访问困难。 所以,限制某个网站的带宽还是非常有必要的。 一、选中网站,点击右侧栏的“限制” 二、 弹出框中打上勾,并输入合适的数值。 实测&#xff…

大型网站架构之分布式消息队列(转)

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐&am…

在线更新dede程序后 网站出现错误 DedeCMS Error:Tag disabled:php more...!

dedecms出现DedeCMS Error:Tag disabled:php原因解决 ------------------------------------------------------- dede做了一个小网站,近两个月连续被 别人 非法侵入 90sec.php \mybak.php ; 于是想着更新下dede程序到最新的版本 ,谁知道在…

转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程

使用vue全家桶制作博客网站 前面的话 笔者在做一个完整的博客上线项目,包括前台、后台、后端接口和服务器配置。本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue、vue-router、vuex、vue SSR)开发的一套博客前台页…