HAProxy实现网站高并发集群

news/2024/5/20 23:01:26/文章来源:https://blog.csdn.net/weixin_33875564/article/details/85143988

简介: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

[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

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

[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
globallog 127.0.0.1 local0  #通过syslog服务的local0输出日志信息maxconn 4096  #单个进程的最大连接数uid 99        #所属运行的用户uid,默认nobodgid 99        #所属运行的用户组,默认nobodydaemon        #后台运行nbproc 2      #工作进程数量pidfile /var/run/haproxy.pid
defaultslog globallog 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中获得客户端IPoption 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 3server web2 192.168.1.12:80 weight 2 check inter 500 fall 3

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

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

第三段:后端IP和端口

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

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

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

启动haproxy

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

重启haproxy

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

写一个简单的haproxy服务脚本

[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"

#设置开机启动

[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日志输出

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

后端web服务器配置相同

[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_817718.aspx

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

相关文章

洛谷 P1886 滑动窗口 (数据与其他网站不同。。)

题目描述 现在有一堆数字共N个数字&#xff08;N<10^6&#xff09;&#xff0c;以及一个大小为k的窗口。现在这个从左边开始向右滑动&#xff0c;每次滑动一个单位&#xff0c;求出每次滑动后窗口中的最大值和最小值。 例如&#xff1a; The array is [1 3 -1 -3 5 3 6 7], …

一个在线练习编程的网站

在笔者转发一篇非常有意思的文章&#xff1a;http://blog.csdn.net/chancein007/article/details/53731514中提到什么是“编码套路”&#xff08;Code Kata&#xff09;,而且提到可以从Dave Thomas的21种实用的编码套路中获取灵感&#xff08;CodeKata.com&#xff09;&#xf…

Asp.Net网站的的编译与发布原理

如下所示创建一个简单的asp.Net Web应用程序 在VS中生成解决方案之后&#xff0c;可以在项目的目录下看到以下的文件&#xff1a;当我们通过VS将网站发布出去之后&#xff0c;可以看到&#xff0c;最后生成的文件&#xff0c;如下图所示&#xff1a;我们可以发现&#xff0c;发…

11个SEO人员必须知道的Chrome扩展插件

每个搜索引擎都有自己的运行规则&#xff0c;谷歌也是如此&#xff0c;Chrome SEO人员如能根据规则做好搜索引擎优化&#xff0c;将有效提高网站在谷歌的搜索排名。本文总结了11款口碑免费谷歌浏览器拓展&#xff0c;帮助SEO人员做好谷歌搜索引擎优化。 1、SEOquake。能够将所…

真人测试网站用户体验的超棒在线服务 - Peek by UserTesting

为什么80%的码农都做不了架构师&#xff1f;>>> 闲逛的过程中找到的这个工具网站&#xff0c;它可以帮助你测试你的网站用户体验&#xff0c;而且会发送给你一个5分钟的视频来展示一个实际的用户&#xff08;不是机器&#xff0c;是人哦&#xff09;如何操作你的网…

.net core Asp.net Mvc Ef 网站搭建 vs2017

1&#xff09;开发环境搭建 首先下载安装vs2017 地址 &#xff1a;https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net core 运行时一定要勾上,很多人都没勾结果新增不了.net core 项目 2&#xff09;开发 1.新增.net core mvc …

腾讯云 LNMP+wordpress 搭建个人网站

折腾了好几个小时才弄好&#xff08;php nginx略知一二&#xff09;&#xff0c;其实一点都不难&#xff01; 以此记录一下&#xff0c;献给首次搭建的朋友们&#xff01;&#xff01; 1&#xff09;准备工作&#xff1a;&#xff08;因为个人用的ubuntu16.04 LTS系统 所以这是…

大型网站系统架构的演化

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

大型高并发高负载网站的系统架构

From&#xff1a;http://www.toplee.com/blog/71.html鄙人先后在CERNET做过拨号接入&#xff0c;在Yahoo&3721搞过搜索前端&#xff0c;在猫扑处理过mop.com的架构升级&#xff0c;在6.cn视频网站从事开发工作&#xff0c;还在多年的工作中接触和开发过不少大中型网站的模块…

学术研究网站

2019独角兽企业重金招聘Python工程师标准>>> 艾瑞网 iSuppli 转载于:https://my.oschina.net/lilugirl2005/blog/376442

高可用网站多点部署架构实战经验总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能&#xff0c;高可用&#xff0c;可伸缩&#xff0c;可扩展的分布式网站进行了概要性描述&#xff0c;并给出一个架构参考。一部分为读书笔记&#xff0c;一部分是个人经验总结。对大型分布式网站架构有很好的参考价值…

如何开发一个移动网站

无法改变基于该站点上下文的内容。 对于大多数移动设备和屏幕分辨率来说&#xff0c;很难进行设计。 3.单独设计一个移动站点 如果有大量预算的话&#xff0c;那么最理想的方法就是开发一个独立的专门由移动设备访问的网站。移动网站的设计&#xff0c;组织和填充一直关注移动用…

网站HTTP升级HTTPS完全配置手册

所有使用Google Chrome稳定版的用户迎来了v68正式版首个版本的发布&#xff0c;详细版本号为v68.0.3440.75&#xff0c;上一个正式版v67.0.3396.99发布于6月13日&#xff0c;自Chrome 68起&#xff0c;当在加载非HTTPS站点时&#xff0c;都会在地址栏上明确标记为“Not Secure&…

优化LNMP架构采用“Website Baker”为小型公司创建高性能网站方案

Intel嵌入式设计开发者秘笈(精品) [上海央邦]学一送一,超值! 必读版《十一攻破RHCE6.0、OCP》安博亚威】CCIE考试通过率第一&#xff01; Cisco网络技术系列讲座 试听一个月,高端IT技术,五大项目3年经验 中国IT实验室收集整理 佚名 2011-11-24 9:07:51 保存本文 推荐给好友 收藏…

用Python从网站爬图片

从极客学院首页爬几张图片&#xff1a; 一下为titita.txt内容&#xff0c;为极客学院首页源代码节选&#xff1a; <div class"jk-uptodate"><h2>最新课程</h2><ul><li class"uptodate"><a href"/zhiye/course/135.h…

SharePoint 2013网站突然不能登录了。

SharePoint 2013网站突然不能登录了&#xff0c;访问的时候&#xff0c;总是报错&#xff1a; The list has not shared with you. 原因&#xff1a; 原来我不知道什么时候把web application的Default authentication provider中的验证方式从NTLM改成 Kerboes了。 【解决方法】…

网易网站设计(思想)

很多人可能认为门户网站首页设计只是把一些导航、资讯内容和广告堆积起来摆放得好看就可以了&#xff0c;虽然这个观点也并不是完全错误的&#xff0c;确实门户网站首页是由这三方面内容组织而成&#xff0c;但随着互联网的快速发展&#xff0c;用户对访问网站的要求也越来越高…

Java开发牛人十大必备网站

摘要&#xff1a; 以下是我收集的 Java 开发牛人必备的网站。这些网站可以提供信息&#xff0c;以及一些很棒的讲座&#xff0c; 还能解答一般问题、面试问题等。质量是衡量一个网站的关键因素&#xff0c;我个人认为这些网站质 量都很好。接下来&#xff0c;我会跟大家分享我是…

程序员必去的几个网站

2019独角兽企业重金招聘Python工程师标准>>> http://www.itheima.com/ 黑马 http://www.itcast.cn/ 传智博客 http://www.imooc.com/ 慕课网 http://www.jikexueyuan.com/ 极客学院 http://www.csdn.com 转载于:https://my.oschina.net/u/588516/blog/755753…

HTML5移动网站制作教程

&#xfeff;&#xfeff;http://www.thinkphp.cn/extend/461.html 希望我的分享能够为正在研究或者想要研究移动端的朋友们带来更高&#xff0c;更好的回报&#xff01; 本文是基于zepto框架下的手机移动端网站制作教程&#xff0c;适用于苹果的ios系统&#xff0c;和android系…