负载均衡

Nginx学习

人走茶凉 提交于 2019-12-04 01:41:43
Date:2019-11-08 读前思考: Nginx是什么? Nginx因为什么而出生的? Nginx到底能解决什么问题?Nginx的优缺点? Nginx 的产生 Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据,通过 HTTP 协议提供各种网络服务。 然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。这也使得各个 Web 服务器有着各自鲜明的特点。 Apache 的发展时期很长,而且是毫无争议的世界第一大服务器。它有着很多优点:稳定、开源、跨平台等等。 它出现的时间太长了,它兴起的年代,互联网产业远远比不上现在。所以它被设计为一个重量级的。 它不支持高并发的服务器。在 Apache 上运行数以万计的并发访问,会导致服务器消耗大量内存。 操作系统对其进行进程或线程间的切换也消耗了大量的 CPU 资源,导致 HTTP 请求的平均响应速度降低。 这些都决定了 Apache 不可能成为高性能 Web 服务器,轻量级高并发服务器 Nginx 就应运而生了。 俄罗斯的工程师 Igor Sysoev,他在为

实现负载均衡的小demo

夙愿已清 提交于 2019-12-04 00:08:16
首先我们先来了解负载均衡: 负载均衡是为了缓解网络压力的,服务器端进行扩容的重要手段  实现有两种方式:硬件F5 、 软件nginx、Dubbo 为了实现负载均衡的原理,我们基于以下两篇随笔继续学习 Euraka适合初学者的简单小demo 作为消费者访问提供者提供的功能(eureka的铺垫案例) 创建多个提供者的角色存在。 在消费者的实现中: (1) 修改pom文件,加入web、客户端的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> (2) application.yml文件中,配置eureka的相关配置 server: port: 80 #EurekaServer配置 eureka: client: register-with-eureka: false #不注册到其他的注册中心 fetch-registry:

Ocelot简易教程(二)之快速开始2

自作多情 提交于 2019-12-03 23:39:15
为什么这篇的标题叫“Ocelot简易教程(二)之快速开始2”呢,因为很多朋友跟我说上一篇“ Ocelot简易教程(二)之快速开始1”内容太少了,只是简单介绍Ocelot的一些简单配置,让Ocelot能跑起来!所以才有了这篇快速开始2.在这篇文章中,我会一步一步记录怎么跑起来一个Ocelot项目,并简单的介绍一下Ocelot怎么实现接口间的负载均衡!此篇文章的代码我会放在我的github上面。后续深入的记录Ocelot的使用的时候也会沿用这次的代码。 Ocelot简易教程目录 Ocelot简易教程(一)之Ocelot是什么 Ocelot简易教程(二)之快速开始1 Ocelot简易教程(二)之快速开始2 Ocelot简易教程(三)之主要特性及路由详解 Ocelot简易教程(四)之请求聚合以及服务发现 Ocelot简易教程(五)之集成IdentityServer认证以及授权 Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据 Ocelot简易教程(七)之配置文件数据库存储插件源码解析 本文作者:依乐祝 原文地址: https://www.cnblogs.com/yilezhu/p/9638417.html 一步一步开始 演示项目概述 这次的演示项目因为要实现Ocelot的负载均衡的功能,因此至少需要三个项目:Ocelot网关,OrderApi,GoodApi .名字随便取的

k8s iptalbes和ipvs 对比

坚强是说给别人听的谎言 提交于 2019-12-03 23:36:24
zhuanlan.zhihu.com /p/37230013 华为云在 K8S 大规模场景下的 Service 性能优化实践 21-27 minutes 讲师:王泽锋 / 华为云 Kubernetes 开源负责人 编辑:夏天 Kubernetes 原生的 Service 负载均衡基于 Iptables 实现,其规则链会随 Service 的数量呈线性增长,在大规模场景下对 Service 性能影响严重。本次分享介绍了华为云在 Kubernetes service 性能优化方面的探索与实践。 大家好,今天给大家带来我们在 Kubernetes Service 上的一些优化实践,这是一个网络相关的话题。首先,我将给大家介绍 Kubernetes 的 Service 机制。现在 Kubernetes 中 Service 的三种模式,包括原来的 Userspace 和 Iptables,以及后来我们贡献的 IPVS;第二部分会介绍原来社区是如何使用 Iptables 来实现 Service 负载平衡的;第三部分主要是 Iptables 实现中存在的一些问题;接下来是如何使用 IPVS 来做 Service 的负载实现的;最后是一个对比。 Kubernetes 的 Service 机制 先看一下 Kubernetes 里面的 Service。在用 Kubernetes 之前

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

≯℡__Kan透↙ 提交于 2019-12-03 23:18:28
http://www.cnblogs.com/edisonchou/ 《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构 此篇已收录至 《大型网站技术架构》读书笔记系列目录 贴,点击访问该目录可获取更多内容。 首先,所谓网站的伸缩性,指 不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力 。在整个互联网行业的发展渐进演化中,最重要的技术就是 服务器集群 ,通过不断地向集群中添加服务器来增强整个集群的处理能力。 一、网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩   (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性;   (2)横向分离:将不同的业务模块分离部署,实现系统的伸缩性; 1.2 单一功通过集群规模实现伸缩   使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务。具体来说,集群伸缩性又分为应用服务器集群伸缩性和数据服务器集群伸缩性。这两种集群对于数据状态管理的不同,技术实现也有很大的区别。  It is said that 当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车 。 二、应用服务器集群的伸缩性设计 2.1 应用服务器那点必须知道的事儿   (1)应用服务器应该被设计成 无状态 的,即应用服务器不存储请求上下文信息;构建集群后

复杂均衡方案

半腔热情 提交于 2019-12-03 21:39:36
二层负载均衡: 通过改写报文的目标MAC地址为上游服务MAC地址。源IP地址和目标IP地址是没有改变的,负载均衡服务器和真实服务器共享同一个VIP,如LVS DR工作模式。 四层负载均衡: 根据端口将报文转发到上游服务器(不同的IP地址+端口),如LVS NAT模式、HaProxy。 七层负载均衡: 根据端口号和应用协议如HTTP协议的主机名、URL,转发报文到上游服务器(不同的IP地址+端口,如Haproxy、Nginx)。 需要reload的方式 consul+consul-template方式, reload是有损耗的。 不需要reload方式(动态实现负载均衡) Tengine的Dyups模块 微博的Upsync OpenResty的balancer_by_lua 微博采用Upsync+consul,又拍云使用开源的slardar(Consul+balancer_by_lua) 动态添加/删除上有吧服务器,需要重启nginx,像HTTP动态负载均衡那样。 nginxu商业版 nginx-strean-upsync-module openResty提供的stream-lua-nginx-model尚未实现balancer_by_lua,暂时无法使用。 扩展: Liunx 三大主流(LVS、Nginx、HAproxy)负载均衡对比 LVS : 1.抗负载能力强,性能高

使用 Nginx 代理 Socket.io/WebSocket 及 负载均衡配置

百般思念 提交于 2019-12-03 21:26:43
转自: http://naux.me/using-nginx-with-socketio/ 0,介绍 Socket.io 一套是基于 WebSocket 协议的实时通讯 API,可以很轻松的开发类似于实时聊天,实时游戏之类的 Web 应用。 Nginx 从 1.3 版本开始支持 WebSocket 代理,我们也能将其应用于 Socket.io,实现如 Socket.io 的负载均衡,和 Web 共用 80(HTTP) 或 443(HTTPS) 端口处理握手请求等需求。 1,配置代理 在 server 配置块中添加如下配置中的 location /socket.io/ 配置块即可实现 WebSocket 在 80/443 端口握手。 server { listen 80; listen 443 ssl; server_name example.domain; root "/project/path"; index index.html index.htm index.php; location /socket.io/ { # 此处改为 socket.io 后端的 ip 和端口即可 proxy_pass http://127.0.0.1:5000; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection

nginx负载均衡 加权轮询和ip_hash

浪子不回头ぞ 提交于 2019-12-03 20:59:38
下面给大家总结了几种真正的nginx负载均衡的功能了,在此我们加了一个权重判断法就是根据nginx负载的状态实现分配访问用户到权重值少的机器了,具体配置如下。 nginx 为后端web服务器( apache ,nginx, tomcat ,weblogic)等做反向代理 几台后端web服务器需要考虑文件共享, 数据库 共享,session共享问题.文件共享可以使用nfs,共享存储(fc,ip存储都行)+redhat GFS集群文件系 统,rsync+inotify文件同步等.小规模的集群中使用更多的是nfs.对于内容管理系统,单台进行发布信息,向多台同步使用rsync+inotify就是个不错的选择. 小规模集群,单台高性能 数据库 (如志强双四核,32/64/128G内存)即可,大规模集群可能要考虑数据库集群了,可以使用mysql官方提供的集群软件,也 可以使用keepalived+lvs读写分离做Mysql集群. session共享问题是一个大问题,如果nginx采用ip_hash的轮询方法,每个ip在一定时间内会被固定的后端服务器,这样我们不用解决session共享问题.反之, 一个ip的请求被轮询分发到多台服务器上,就要解决session共享的问题,可以使用nfs共享session,把session写入mysql或者memcache等方法,当机器规模比较大 时

nginx+memcache+tomcat配置(新手笔记)

 ̄綄美尐妖づ 提交于 2019-12-03 20:59:21
nginx+memcache+tomcat 应该是企业级开发中用到的比较多的一套集群web环境,因为本人是从事Java的学习和开发,因此服务器选择了tomcat;配置这样一个环境在我看来首要目的当然是将服务器的压力分散开,用多台服务器来处理大用户的并发,并通过缓存来减少对服务器的请求量,同时一个应用分布在不同服务器上就需要做session共享。大概的结构我想应该是这样: 这样一来请求会被分派到这图中5个tomcat下的项目去处理,当然有时候服务器需要处理更大的并发量则需要更多的nginx来作为代理转发并需要更多的tomcat节点(当然也有牛人能把tomcat配到数千并发量,这样也不一定需要太多tomcat) 我将从windows上给大家讲我的配置过程,至于在linux上其实差不太多,只是在安装memcache和nginx上有差异,对于配置来说都一样。下面简单来介绍下我的操作步骤(JDK和tomcat部分的安装省略) 一、所需环境和软件 Tomcat7,下载链接: http://tomcat.apache.org/ Nginx是nginx-1.2.8, 下载链接: http://nginx.org/en/download.html Memcached是memcached-1.2.6-win32-bin,下载链接: http://code.jellycan.com/files