负载均衡

服务通信框架Gaea--client负载均衡和服务重连策略

橙三吉。 提交于 2019-12-01 18:20:26
作为一个分布式的服务框架,服务器的负载均衡,将是一个很重要的性能指标,将能够最大限度的利用多个服务器资源,为服务的高性能,高可扩展性提供最直接的有力支持。在这篇文章中,我们就来看看Gaea是如何做到负载均衡,如何能够通过简单的添加机器,解决系统问题。 1 服务器类Server 首先所有的server是被放入到一个List中的。 public List<Server> GetAllServer() { return ServerPool; } 在这个Server中,Gaea除了封装了服务器的IP和端口以为,还设置了许多重要的参数,用于控制服务器的链接 private String name; private String address; private int port; private int weight; private float weightRage; private ServerState state; private ScoketPool scoketpool; private int currUserCount; private int deadTimeout; private long deadTime; private boolean testing = false; 其中state是客户端重连机制的最主要的参数。接下来我们慢慢的会讲解其中的一些参数是的意义

大数据 负载均衡高可用 keepalived

纵然是瞬间 提交于 2019-12-01 17:05:40
可以不用安装ipvsadm -lnc yum install keepalived 安装 service keepalived start 启动服务 tail /var/log/message 查看日志 man keepalived.conf 查看帮助手册 配置文件,编辑之前,需要备份 cp –a keepalived.conf keepalived.conf.backup vi /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { root@localhost                  #发送提醒邮件的目标地址可有多个 goldbin@126.com } notification_email_from test@localhost #发送邮件的from地址,可以随意写,邮件地址不存在都无所谓 smtp_server 127.0.0.1         #邮件服务的地址,一般写本地 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP                 #MASTER 主和从 interface eth0

关于正向代理与反向代理

岁酱吖の 提交于 2019-12-01 17:02:58
今天面试过程中遇到了正向代理与反向代理的问题,回来后整理了这篇文章。 前言 说一下为什么会被问到这个问题吧,我在项目简历中有如下一段描述: 在部署方面,采用了 Nginx+Tomcat 的模式,其中 Nginx 的作用一方面是做反向代理、负载均衡,另一方面是做… 所以就勾起了面试官的… 小王呀,能说一下 Nginx 的负载均衡,以及正向代理跟反向代理有什么区别吗? 相信负载均衡大家应该都有了解,在写正反代理之前再来回顾一下吧。 负载均衡 1、负载均衡使用场景 举一个例子,假如现在有两台服务器 A、B 同时为用户提供服务,如果没有采用负载均衡的话,可能会出现这么个情况,A 占访问的 90%,B 占访问的 10%,或者是 B 占访问的 80%,A 占访问的 20%,总之用户具体访问哪个服务是不确定的,且不可控。所以这种情况的弊端就很明显了,显然我们是希望能够将用户的访问均衡的分配到这两台服务器上的,这才是负载均衡最大的意义。 负载均衡:将客户端的请求按照一定的规则分配到一群服务器上,并将处理结果返回给相应的客户端。 2、负载均衡实现方式 因为是基于 Nginx 的问题,所以就直接来看 Nginx 提供的五种实现负载均衡的方式: 2.1、轮询(默认) 这是 Nginx 默认采用的方式,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕掉,能自动剔除;举例:服务器处理请求顺序

nginx反向代理、负载均衡

我是研究僧i 提交于 2019-12-01 16:55:17
什么叫反向代理? A用户--> B(在和C同一个机房,并且有公网)--> C(不带公网的机器) 什么场景下会用到反向代理? 1.访问不带公网的内网机器 2.解决两台之间通信有障碍的问题 编辑虚拟机添加网络适配器,仅主机模式,开机增加网卡 进入网卡配文件 # cd /etc/sysconfig/network-scripts/ # cp ifcfg-ens33 ifcfg-ens37 # vim ifcfg-ens37 重启网络服务 # systemctl restart network Windows可以ping通 场景: 1.A B两台机器,其中A只有内网,B有内网和外网 2.A的内网ip 192.168.109.133 B的内网ip是192.168.109.131 外网ip是192.168.239.128 3.C为客户端,C只能访问B的外网,不能访问A或者B的内网 需求: 1.C要访问到A的内网上的网站 在B机器配置,前提B机器上要有nginx服务: server { listen 80; server_name bbs.centos.com; location / { proxy_pass http://192.168.109.133; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;

MySQL数据库分库分表策略

不打扰是莪最后的温柔 提交于 2019-12-01 16:40:18
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层已经成为架构研发人员首选的方式。 水平切分数据库:可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失; 负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能性; 集群方案:解决了数据库宕机带来的单点数据库不能访问的问题; 读写分离策略:最大限度了提高了应用中读取数据的速度和并发量; 第2章 基本原理和概念 什么是数据切分 "Shard" 这个词英文的意思是"碎片",而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏中。"Sharding" 姑且称之为"分片"。Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案, 其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。 通过一系列的切分规则将数据水平分布到不同的DB或table中,在通过相应的DB路由或者table路由规则找到需要查询的具体的DB或者table,以进行Query操作。“sharding”通常是指“水平切分”

高并发大型网站架构设计思路(待补充)

感情迁移 提交于 2019-12-01 16:35:02
一个大型的网站网站应该由如下6个子系统组成 负载均衡系统 反向代理系统 Web服务器系统 分布式存储系统 底层服务系统 数据库集群系统 为什么要做高并发系统设计? 事实上,针对于任何单一的网络服务器程序,其可承受的同时连接数目是有理论峰值的,通过C++中对TSocket的定义类型:word,我们可以判 定这个连接理论峰值是65535,也就是说,你的单个服务器程序,最多可以承受6万多的用户同时连接。但是,在实际应用中,能达到一万人的同时连接并能保 证正常的数据交换已经是很不容易了,通常这个值都在2000到5000之间,能达到上万已经很不错了。目前的门户网站动辄几千万的访问量,所以,高并发的 系统架构在所难免。 整体架构 真实中的网站架构也许并不如此也可以实现高性能。但是高性能的网站莫不过如此。如下图所示。 第一 负载均衡系统 负载均衡系统分为硬件和软件两种。 硬件负载均衡效率高,但是价格贵,比如F5等。 软件负载均衡系统价格较低或者免费,效率较硬件负载均衡系统低,不过对于流量一般或稍大些网站来讲也足够使用,比如lvs。 第二 反向代理系统 目前普遍使用Squid或者nginx,或者Lighttpd,Varish。 这四者又各自有很大的差异。 Squid:主要用来做反向代理,使用内存+硬盘 Nginx:可以反向代理+负载均衡+WWW解析 Lighttpd:反向代理能力一般

【转发】nginx负载均衡6种策略

倾然丶 夕夏残阳落幕 提交于 2019-12-01 16:14:08
转发自 https://www.cnblogs.com/1214804270hacker/p/9325150.html 一、关于Nginx的负载均衡   在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。详情请查看我的 另一篇博客 。 二、Nginx负载均衡策略   负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表: #动态服务器组 upstream dynamic_zuoyu { server localhost:8080; #tomcat 7.0 server localhost:8081; #tomcat 8.0 server localhost:8082; #tomcat 8.5 server localhost:8083; #tomcat 9.0 }   在upstream模块配置完成后,要让指定的访问反向代理到服务器列表: #其他页面反向代理到tomcat容器 location ~ .*$ { index index.jsp index.html; proxy_pass http://dynamic_zuoyu; }   这就是最基本的负载均衡实例,但这不足以满足实际需求

DOCKSWARM服务网络原理

℡╲_俬逩灬. 提交于 2019-12-01 16:13:59
如图所示,我们将在 swarm 集群中部署 “client” 服务 和 “vote” 服务,其中 “vote” 服务部署多个副本。 客户端请求 “vote” 服务时,输出结果中包含服务端的容器 ID,这样就更方便演示网络请求。 docker node ls 使用如下命令,创建 overlay 网络: docker network create --driver overlay overlay 一、基于 DNS 的负载均衡(DOCKER引擎内嵌了DNS服务器,创建容器时,在各个容器内设置nameserver,指向dns服务) dns服务内会配置overlay网络内的容器的IP和容器主机之间的映射 下图描述了基于 DNS 的负载均衡是如何工作的: DNS轮询 DNS server 内嵌于 Docker 引擎。 Docker DNS 解析服务名 “vote” 并返回容器 ID 地址列表(随机排序)。 客户端通常会挑第一个 IP 访问,因此负载均衡可能发生在服务器的不同实例之间。 docker service create --endpoint-mode dnsrr --replicas 1 --name client --network overlay1 registry.cn-hangzhou.aliyuncs.com/anoy/ubuntu ping anoyi.com docker

客户端负载均衡与服务器端负载均衡区别?

本秂侑毒 提交于 2019-12-01 13:34:54
服务器端负载均衡:       例如:Nginx,通过Nginx进行负载均衡,先发送请求,然后通过负载均衡算法,在多个服务器之间选择一个进行访问;即在服务器端再进行负载均衡算法分配。 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 客户端负载均衡:       例如:spring cloud中的ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,这是客户端负载均衡;即在客户端就进行负载均衡算法分配。 来源: https://www.cnblogs.com/Z-wen/p/11688657.html

CITRIX ADC配置SSL卸载

岁酱吖の 提交于 2019-12-01 13:33:13
如上图,将ssl的加密解密放在前端的负载均衡设备上,客户端到VPX的访问都是加密的,VPX到后端的服务器都是http的 Step1:上传证书到VPX,如下图: Step2:创建SSL的虚拟服务器并且绑定证书,如下图: Step3:在测试终端上通过https://10.10.1.210访问如下图: 来源: https://www.cnblogs.com/networking/p/11688598.html