负载均衡

Nginx负载均衡详解

心不动则不痛 提交于 2019-12-01 13:24:10
负载均衡 负载均衡可以将请求前端的请求分担到后端多个节点上,提升系统的响应和处理能力。 负载均衡是扩展应用程序并提高其性能和冗余的绝佳方法。Nginx是一种流行的Web服务器软件,可以配置为简单但功能强大的负载均衡器,以提高服务器资源的可用性和效率。在负载平衡配置中,nginx充当在多个单独服务器上工作的分布式Web应用程序的单个入口点。 对于CentOS安装nginxn,用户可以在/etc/nginx/conf.d/下找到其主机配置文件,加载了任何 .conf 类型的虚拟主机文件。 Nginx负载均衡策略 负载均衡的策略可以大致分为两大类:内置策略 和扩展策略 内置策略:一般会直接编译进Nginx内核,常用的有轮询、加权轮询、最少连接平衡和ip_hash策略。在默认情况下内置策略会编译进nginx内核,只需在nginx配置中指明参数即可。 扩展策略:fair、url hash、Sticky策略等,默认不编译进nginx内核。 Nginx配置方法与配置模板 1.编辑配置文档: load-balancer.conf sudo vi /etc/nginx/conf.d/load-balancer.conf 2.在load-balancer.conf中, 您需要定义以下两个段: 上游 和 服务器 #定义要包含在负载均衡方案中的服务器。 #最好使用服务器的私有IP以获得更好的性能和安全性。

CDN(Content Delivery Network)原理

亡梦爱人 提交于 2019-12-01 13:09:30
CDN即内容分发网络,一般包括分发服务系统,负载均衡系统和管理系统。    分发服务系统 ,其基本的工作单元就是各个cache服务器。负责直接响应用户请求,将内容快速分发到用户;同时还负责内容更新,保证和源站内容同步。根据内容类型和服务种类的不同,分发服务系统分为多个子服务系统,如:网页加速服务、流媒体加速服务、应用加速服务等。每个子服务系统都是一个分布式的服务集群,由功能类似、地域接近的分布部署的cache集群组成。   在承担内容同步、更新和响应用户请求之外,分发服务系统还需要向上层的管理调度系统反馈各个cache设备的健康状况、相应情况、内容缓存状况等,以便管理调度系统能够根据设定的策略决定由哪个cache设备来响应用户的请求。    负载均衡系统 ,是整个CDN系统的中枢。负责对所有的用户请求进行调度,确定提供给用户的最终访问地址。使用分级实现。最基本的两极调度体系包括全局负载均衡(GSLB)和本地负载均衡(SLB)。   GSLB根据用户地址和用户请求的内容,主要是根据就近原则,确定向用户服务的节点。一般通过DNS解析或应用层重定向(HTTP 3XX重定向)的方式实现。   SLB主要负责节点内部的负载均衡。当用户请求从GSLB调度到SLB时,SLB会根据节点内各个cache设备的工作情况和内容分布情况等对用户请求重定向。SLB的实现由四层调度(LVS)、七层调度

nginx虚拟主机和负载均衡

我是研究僧i 提交于 2019-12-01 13:01:56
nginx 1.编译安装配置完成 /opt/nginx11/html/index.html 这是网页的首页文件 2. nginx.conf主配置文件学习 ######################################如下 worker_processes 4; nginx工作进程数,根据cpu的核数定义 events { worker_connections 1024; #连接数 } #http区域块,定义nginx的核心web功能 http { include(关键字) mime.types(可修改的值); default_type application/octet-stream; #定义日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #开启访问日志功能的参数 access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; #保持长连接 keepalive_timeout 65;

(转)装逼必备:大型分布式网站术语分析

♀尐吖头ヾ 提交于 2019-12-01 12:55:51
1、I/O优化 1、增加缓存,减少磁盘的访问次数。 2、优化磁盘的管理系统,设计最优的磁盘方式策略,以及磁盘的寻址策略,这是在底层操作系统层面考虑的。 3、设计合理的磁盘存储数据块,以及访问这些数据库的策略,这是在应用层面考虑的。例如,我们可以给存放的数据设计索引,通过寻址索引来加快和减少磁盘的访问量,还可以采用异步和非阻塞的方式加快磁盘的访问速度。 4、应用合理的RAID策略提升磁盘I/O。 2、Web前端调优 1、减少网络交互的次数(多次请求合并) 2、减少网络传输数据量的大小(压缩) 3、尽量减少编码(尽量提前将字符转化为字节,或者减少从字符到字节的转化过程。) 4、使用浏览器缓存 5、减少Cookie传输 6、合理布局页面 7、使用页面压缩 8、延迟加载页面 9、CSS在最上面,JS在最下面 10、CDN 11、反向代理 12、页面静态化 13、异地部署 3、服务降级(自动优雅降级) 拒绝服务和关闭服务 4、幂等性设计 有些服务天然具有幂等性,比如讲用户性别设置为男性,不管设置多少次,结果都一样。但是对转账交易等操作,问题就会比较复杂,需要通过交易编号等信息进行服务调用有效性校验,只有有效的操作才能继续执行。 (注:幂等性是系统的接口对外一种承诺(而不是实现), 承诺只要调用接口成功, 外部多次调用对系统的影响是一致的. 声明为幂等的接口会认为外部调用失败是常态,

Nginx

孤街浪徒 提交于 2019-12-01 12:54:51
Nginx 与服务器集群 一. 集群 1. 什么是集群 集 合在一起 放在一起 群 一堆 很多 服务器架构集群:多台服务器组成的响应大并发,高数据量的架构体系。 分布式服务器架构 特点: (1)成本高 (2)能够降低单台服务器的压力,使用流量平均分配到多台服务器 (3)使网站服务架构更加安全稳定 服务器概念 : 提供某种或多种服务(功能)的机器(计算机) (1)硬件 性能比较好的电脑主机 (2)软件 实现各种服务支持的协议的软件 1.1 web 服务软件 提供 http https协议的服务器。网站网页访问的功能 Apache 老牌的服务器软件,功能多并且稳定 ,支持多种配置, lamp Nginx 安装简单小巧,并发量高, web服务器,代理服务器,邮箱服务器 lls 微软公司, APS脚本使用,可以通过fast-cgi(网络接口服务)的方式使用PHP Lighttpd 德国开发的软件,小巧,提供 web服务支持 1.2 数据库 关系型数据库( RDBMS): Mysql mysqlab => sun(java) => Oracle Mariadb mysql的一个分支 Postgresql 加州伯克利大学,学院派 Oracle 大型商业数据库 Sqlserver 微软数据库 DB2 IBM Sqllite3 手机端( iOS和安卓)使用 非关系型数据库 Memcached

SpirngCloud之Ribbon负载均衡(二)

这一生的挚爱 提交于 2019-12-01 12:54:12
一 概念 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。 LB,即负载均衡(Load Balance),在微服务或分布式集群中经常用的一种应用。 负载均衡简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA。 常见的负载均衡有软件Nginx,LVS,硬件 F5等。 相应的在中间件,例如:dubbo和SpringCloud中均给我们提供了负载均衡,SpringCloud的负载均衡算法可以自定义。 二 Ribbon配置初步 启动一中的eureka-server项目和producer-service项目,然后再改producer-service的端口,启动2个客户端 修改producer-service的类 1 @RestController 2 @RequestMapping("/api/v1

CentOS6使用piranha配置负载均衡

蓝咒 提交于 2019-12-01 12:32:59
在 centos6环境,使用piranha部署web的LB集群: 角色 IP pip 172.16.0.111 sip 172.16.0.112 web1 172.16.0.121 web2 172.16.0.122 tomcat1 172.16.0.131 tomcat2 172.16.0.132 同步时间 主机名, /etc/hosts [root@6pip ~]# tail -6 /etc/hosts 172.16.0.111 6pip.up.com 6pip 172.16.0.112 6sip.up.com 6sip 172.16.0.121 6web1.up.com 6web1 172.16.0.122 6web2.up.com 6web2 172.16.0.131 6tomcat1.up.com 6tomcat1 172.16.0.132 6tomcat2.up.com 6tomcat2 ---------------------------- 1. 配置apache [root@6web1 ~]# yum install -y httpd [root@6web2 ~]# yum install -y httpd [root@6web1 ~]# echo 172.16.0.121 > /var/www/html/index.html [root@6web1 ~]#

Nuxt.js 部署负载均衡后 通过redis缓存token鉴权

浪子不回头ぞ 提交于 2019-12-01 09:46:11
1.背景:   项目前后台分离, 前端技术栈Nuxt.js + express.js 三台服务器 后端 5台服务器 做负载均衡处理 2.问题:   后端不做用户状态缓存, 仅通过user_id + user_acc 等 做AES加密生成 token,请求响应解密token 是否正确,   前端token如果只是本地缓存或状态层做token的非空验证,无法鉴别token是否伪造 3.解决思路:   在node中间层做用户token鉴权; 4.解决方法:   4.1 写入状态: 用户登录 --> node中间层标记cookie(例: nd-token: tokenKey(uuid + timestamp等生成唯一string)) --> 后端生成 user-token 返回node层 --> node层写入redis (key为 tokenKey, value 为后端返回 user-token )   4.2 (中间层)鉴权: 用户交互 --> node中间层读取cookie : nd-token;     4.2.1 若 nd-token 为空, 判断为游客状态;     4.2.2 若 nd-token 存在, 获取 tokenKey , 读取 redis中, tokenKey的value: user-token --> 携带token 请求后端 ( 这里可以根据前后约定,

proxysql 系列 ~ 知识点总结

自闭症网瘾萝莉.ら 提交于 2019-12-01 09:44:18
proxysql 知识点总结 1 读写分离搭建(核心) 2 variables熟悉 1 admin 2 mysql 3 variables优化 4 db熟悉 1 main 2 stats 3 monitor 5 后端mysql高可用 6 本身高可用/负载均衡 7 监控 8 性能问题排查 9 原理理解 1 读写分离过程 2 检测延时过程 3 连接池复用原理 10 备份和还原 来源: https://www.cnblogs.com/danhuangpai/p/11675802.html