HAproxy

高可用集群架构 — N+1 模型

落爺英雄遲暮 提交于 2020-08-08 14:34:08
目录 文章目录 目录 前言 高可用集群架构 高可用集群模型模型 N+1 模型 N+1 模型关键技术 单进程多定时器的设计 冗余节点快速切换技术 服务器池多级检测机制 前言 本地是对论文《服务器池的高可用 N+1 冗余结构模型》的学习记录,详细请浏览论文。 高可用集群架构 一主多备架构:同一时间只有一个 Master 节点提供服务,多个 Slave 备份节点用于替换。 多活架构:同一时间有多个处于 ACTIVE 状态的节点提供服务,通常结合负载均衡策略使用。 高可用集群模型模型 N+1 模型:有 N 个在工作,1 个空闲作为冗余。 N/N 模型:N 个节点中同时运行 N 个服务。 N+1 模型 服务器机群的高可用性需要靠双前端负载分配器和后端服务器池来保障,经典案例为:HAProxy + Keepalived 架构。双前端结构消除了前端单一故障点隐患,后端服务器池屏蔽了服务器的故障所引起的服务中断的情况。双前端结构是高可用机群应用最广泛的模型,许多早期的服务器都采用这种方式保证服务器可靠运行。为追求更高的可靠性,还会扩展到 3 个或更多的节点,例如:3 节点仲裁架构。 高可用系统会将某故障服务器上的工作迁移到其他节点,以保证为客户继续提供服务。服务迁移的前提就是能够及时准确地发现失效节点,即心跳检测机制。常见的心跳检测方案有信任度模型、投票模型和邻居模型,目的在于提出对多于 2

Haproxy做代理,后端nginx获取真实用户IP

◇◆丶佛笑我妖孽 提交于 2020-08-08 10:24:08
1)修改haproxy配置文件,添加如下参数: option httpclose option forwardfor 2)修改nginx配置文件,添加如下参数 注意:需要编译模块--with-http_realip_module #haproxy服务器IP set_real_ip_from 192.168.64.128; real_ip_header X-Forwarded-For; real_ip_recursive on; 3)分别重启haproxy和nginx /etc/init.d/haproxy restart /etc/init.d/nginx restart 来源: oschina 链接: https://my.oschina.net/u/4323284/blog/4317769

Hacker News 简讯 2020-07-13

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-08 05:12:18
更新时间: 2020-07-13 23:00 Show HN: Primo – all-in-one IDE, CMS, component library, static site generator - (primo.af) 展示HN:Primo–集成开发环境、内容管理系统、组件库、静态站点生成器 得分:169 | 评论:55 Google to Invest $10B in India - (techcrunch.com) 谷歌将在印度投资100亿美元 得分:260 | 评论:182 Libtorrent adds support for the WebTorrent protocol - (feross.org) Libtorrent增加了对WebTorrent协议的支持 得分:130 | 评论:48 Data Definition and Code Generation in Tcl (2014) [pdf] - (nasa.gov) Tcl中的数据定义和代码生成(2014) [pdf] 得分:17 | 评论:2 The Most Remarkable Legacy System I Have Seen - (thehftguy.com) 我见过的最出色的遗留系统 得分:239 | 评论:82 The greatest privilege we never talk

打造java高性能,高可用,高复用的大型分布式项目

廉价感情. 提交于 2020-08-07 11:25:19
大型网站的特点 大型网站一般有如下特点: 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络*** 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 大型网站架构目标 大型网站的架构目标有如下几个: 高性能:提供快速的访问体验。 高可用:网站服务一直可以正常访问。 可伸缩:通过硬件增加/减少,提高/降低处理能力。 扩展性:方便地通过新增/移除方式,增加/减少新的功能/模块。 安全性:提供网站安全访问和数据加密、安全存储等策略。 敏捷性:随需应变,快速响应。 大型网站架构模式 如上图是大型网站的架构模式: 分层:一般可分为应用层、服务层、数据层、管理层与分析层。 分割:一般按照业务/模块/功能特点进行划分,比如应用层分为首页、用户中心。 分布式:将应用分开部署(比如多台物理机),通过远程调用协同工作。 集群:一个应用/模块/功能部署多份(如:多台物理机),通过负载均衡共同提供对外访问。 缓存:将数据放在距离应用或用户最近的位置,加快访问速度。 异步:将同步的操作异步化。客户端发出请求,不等待服务端响应,等服务端处理完毕后,使用通知或轮询的方式告知请求方。一般指:请求——响应——通知模式。 冗余:增加副本,提高可用性、安全性与性能。 安全:对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。 自动化:将重复的

打造java高性能,高可用,高复用的大型分布式项目

白昼怎懂夜的黑 提交于 2020-08-07 06:14:37
大型网站的特点 大型网站一般有如下特点: 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络*** 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中心 免费服务,付费体验 大型网站架构目标 大型网站的架构目标有如下几个: 高性能:提供快速的访问体验。 高可用:网站服务一直可以正常访问。 可伸缩:通过硬件增加/减少,提高/降低处理能力。 扩展性:方便地通过新增/移除方式,增加/减少新的功能/模块。 安全性:提供网站安全访问和数据加密、安全存储等策略。 敏捷性:随需应变,快速响应。 大型网站架构模式 如上图是大型网站的架构模式: 分层:一般可分为应用层、服务层、数据层、管理层与分析层。 分割:一般按照业务/模块/功能特点进行划分,比如应用层分为首页、用户中心。 分布式:将应用分开部署(比如多台物理机),通过远程调用协同工作。 集群:一个应用/模块/功能部署多份(如:多台物理机),通过负载均衡共同提供对外访问。 缓存:将数据放在距离应用或用户最近的位置,加快访问速度。 异步:将同步的操作异步化。客户端发出请求,不等待服务端响应,等服务端处理完毕后,使用通知或轮询的方式告知请求方。一般指:请求——响应——通知模式。 冗余:增加副本,提高可用性、安全性与性能。 安全:对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。 自动化:将重复的

科普|什么是负载均衡

北城余情 提交于 2020-08-07 04:27:41
击上方“朱小厮的博客”,选择“ 设为星标” 后台回复" 加群 ",加入组织 来源:8rr.co/Ah6k 什么是负载均衡(Load balancing) 在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.taobao.com的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等。 在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户端的请求转发给它处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来

一文了解HAProxy主要特性

我的未来我决定 提交于 2020-08-07 04:10:56
本文转自 Rancher Labs 在Kubernetes中,Ingress对象定义了一些路由规则,这些规则规定如何将一个客户端请求路由到指定服务,该服务运行在你的集群中。这些规则可以考虑到输入的HTTP消息的独特方面,包括其Host请求头和URL路径,这将允许你在请求中使用数据发现将流量从一个服务发送到另一个服务。那意味着你能够使用Ingress对象来为许多不同的应用程序定义路由。 虽然Ingress对象定义路由,但Ingress Controller是驱动它们的引擎。Ingress Controller是一个位于客户端和服务之间的代理,其作用是正确地传递消息。目前市面上已经有几个项目实现了Ingress Controller规范,每个项目都有其优势。Rancher提供了一个基于NGINX的默认controller,但你并不需要局限于此。Rancher已经和HAProxy达成合作,因此你也可以选择使用HAProxy Ingress Controller。我们倾向于把HAProxy Ingress Controller看作是一个完美的Kubernetes的涡轮增压引擎,能够充分提升Kubernetes的使用效率。 HAProxy Ingress Controller的特性 你可以在Rancher应用商店中找到HAProxy,此外你还可以在HAProxy的官方文档( https:/

服务好“最后一公里”,高效CDN架构经验

独自空忆成欢 提交于 2020-08-06 09:03:31
国内,随着互联网的高速发展,因为各大通信公司的政策,造成了南电信北联通互通有局限性,再加上大小且质量参差不齐的运营商,在这特殊的氛围的互联互通下号称“八线合一”的机房开始崭露头角。互联网的广泛性使得网民分散在全国各地,由于全国地区的经济发展和互联网建设的不平衡,实际网民的体验往往受限于最后一公里的速度。在技术大喷井的年代,一些无聊或者有目的******也开始涌现,无论是***还是DDoS***都非常频繁,时刻威胁着网站的安全…… 上述种种问题,作为应用服务提供商,我们要如何解决此类问题呢?归根结底就是要充分利用好CDN(Content Delivery Network,即内容分发网络)。 CDN作用 缓存代理 缓存代理类似内容提供商源数据中心的一个透明镜像,这些内容可以在边缘服务器中缓存和分发,对于普通的网络用户来讲,它通过智能DNS的筛选,用户的请求被透明地指向离他最近的省内骨干节点,最大限度的缩短用户信息的传输距离。在任何时间、地点或者不同的运营商之间(尤其在中国),快速响应用户请求。 它是通过在网络各处放置节点服务器,所以无需更改源站的网络拓扑,而是根据智能路由和用户就近原则匹配,从而确保了内容快又稳定的传输,大大提高了用户访问网站的响应速度。 路由加速 CDN服务初衷是确保快速可靠地分发静态内容,相对于动态内容来说,由于动态内容必须长连接来操持连接和通讯

KeepAlived

我怕爱的太早我们不能终老 提交于 2020-08-06 08:15:28
为什么使用keepalived呢? 在服务器集群情况下,会用到lvs或者nginx做调度,如果调度器是单台设备就会出现单点故障的问题。 也就是说,当单台调度器故障,无法完成调度,造成站点无法提供服务。 所以为了避免这样的情况,一般调度器会使用多台做高可用。而keepalived就是在这方面的典型代表。 keepalived的底层功能是vrrp协议 vrrp叫做虚拟路由冗余协议,在路由器、三层交换机上使用广泛,如思科、华为的路由器产品一般都会支持vrrp协议。 当然思科有自己的类似vrrp协议叫做hsrp,其功能都是一样的。 vrrp由以下几个部分组成 真实路由器:即物理设备; 虚拟路由器:由两台或者多台物理机器组成,具有相同的VRID的物理机器即认为在同一个虚拟路由器组中; VIP:虚拟路由器的ip地址,也是多个物理主机公用的ip地址; VMAC:虚拟mac地址,默认是00-00-5e-00-01-VRID; MASTER:多台物理机器组成逻辑上的一台虚拟路由器,其中只有一台机器是能够转发数据的这台机器就是MASTER。我们称为主设备; BACKUP:其他机器就是BACKUP起备份作用,我们称为备设备; priority:区分master和backup的决定参数就是优先级,默认优先级是100,而且值越大越优先; 通告: 主设备与备设备是通过协商优先级来决定的,而且是周期性检查优先级

OpenStack Octavia 实现分析

て烟熏妆下的殇ゞ 提交于 2020-08-06 06:51:51
Octavia就是将用户的API请求经过逻辑处理, 转换成Haproxy或者Nginx的配置参数 ,下发到amphora虚机中。 Octavia的内部实现中,逻辑流程的处理主要使用TaskFlow库。 【基本概念】 ·LBaas Load Balancing as a Service,在openstack平台上,LB被作为一种服务提供给用户,用户可以按需获取可配置的业务负载分担方案。 ·loadbalancer 负载均衡服务的跟对象,一般为虚机,用户基于此对负载均衡进行配置和操作。 ·VIP 与LB关联的IP地址,作为 外部访问后端服务 的入口。 ·Listener 监听器,用户可通过其配置外部对VIP访问的端口,算法,类型等等。 ·Pool 负责后端的虚拟机池。在Haproxy为driver的情况下,一个Pool对应着一个独立的network namespace中运行的HaProxy进程中管理的backend。 一个VIP只会有一个Pool。 ·Member Member 对应的是 pool 里面处理网络请求的一个 OpenStack Nova 虚机。 ·Health monitor 它用来检测pool里面的member的状态,支持很多种检测方法,在neutron里面是可选的。 ·L7 Policy 七层转发策略 ,描述数据包转发动作。 ·L7 Rule 七层转发规则