nginx负载均衡配置

了解Nginx

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

负载均衡策略--Nginx

自古美人都是妖i 提交于 2020-01-26 21:28:27
1、Nginx是什么? nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。 nginx因具有高并发(特别是静态资源),占用系统资源少等特性,且功能丰富而逐渐流行起来。 nginx不但是一个优秀Web服务软件,还具有反向代理负载均衡功能和缓存服务功能, 与lvs负载均衡及Haproxy等专业代理软件相比,Nginx部署起来更为简单,方便;在缓存功能方面,它又类似于Squid等专业的缓存服务软件。 2、Nginx的重要特性 支持高并发:能支持几万并发连接(特别是静态小文件业务环境) 资源消耗少:在3万并发连接下,开启10哥Nginx线程消耗的内存不到200MB 可以做HTTP反向代理及加速缓存,即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能 具备Squid等专业缓存软件等的缓存功能。 支持异步网络I/O事件模型epoll(linux2.6+)。 3、Nginx常用功能 3.1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。 3.2、负载均衡 Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。 扩展策略,就天马行空,只有你想不到的没有他做不到的啦, 你可以参照所有的负载均衡算法,给他一一找出来做下实现。 Ip hash算法

实现Nginx tcp负载均衡:

南楼画角 提交于 2020-01-25 23:38:53
Nginx在1.9.0版本开始支持tcp模式的负载均衡,在 1.9.13 版本开始支持udp协议的负载,udp主要用于DNS的域名解析,其配置方式和指令和http 代理类似,其基于 ngx_stream_proxy_module 模块实现tcp负载,另外基于模块 ngx_stream_upstream_module 实现后端服务器分组转发、权重分配、状态监测、调度算法等高级功能。 官方文档:https://nginx.org/en/docs/stream/ngx_stream_core_module.html 四层负载均衡实例–Redis 服务器安装redis [root@s4 ~]# yum install redis -y [root@s4 ~]# vim /etc/redis.conf bind 0.0.0.0 ...... [root@s4 ~]# systemctl start redis [root@s4 ~]# systemctl enable redis [root@s4 ~]# ss -tnl | grep 6379 LISTEN 0 128 *:6379 *:* nginx配置 [root@s2 ~]# mkdir /apps/nginx/conf/tcp [root@s2 ~]# cat /apps/nginx/conf/tcp/tcp.conf #自配置文件

综合架构--负载均衡-keepalived

假如想象 提交于 2020-01-25 13:42:15
一、keepalived作用   Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。 二、keepalived的配置   在上一章的基础上 添加一台lb02     lb02 ip 10.0.0.6   在两台lb01与lb02 上安装keepalived yum install -y keepalived 三、修改 lb01 中keepalived 的配置文件    [root@lb01 ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id LB01 #定义名字 } vrrp_instance VI_1 { state MASTER #设置该主机为主 interface eth0 #网卡 virtual_router_id 51 #唯一标示id priority 150 #权重比权重高优先级高 advert_int 1 #心跳检测 每隔一秒

Nginx负载均衡配置

末鹿安然 提交于 2020-01-25 13:19:59
1、环境:一台宿主机Nginx + 2台Docker环境的Nginx 2、配置宿主机Nginx.conf文件 在http段加入以下代码: upstream www.abc.top { server 192.168.83.172:8081 weight=10; server 192.168.83.172:8082 weight=20; } server{ listen 80; server_name www.abc.top; location / { proxy_pass http://www.abc.top; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 3、docker环境执行命令 docker run -d -p 8081:80 -v /mnt/test/Work/nginx:/var/www/html --name xy_nginx2 nginx:1.10.3 docker run -d -p 8082:80 -v /mnt/test/Work/nginx:/var/www/html --name xy_nginx2 nginx:1.10.3 4、测试结果

负载均衡

陌路散爱 提交于 2020-01-23 13:17:32
Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件。一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。 一种是通过硬件来进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx/LVS/HAProxy的基于 Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。 目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+ Keepalived作负载均衡器;后端采用 MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。 下面说说各自的特点和适用场合。 Nginx的优点是: 1. 工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一

三、Spring Cloud之软负载均衡 Ribbon

我与影子孤独终老i 提交于 2020-01-22 09:16:18
前言 上一节我们已经学习了Eureka 注册中心,其实我们也使用到了Ribbon ,只是当时我们没有细讲,所以我们现在一起来学习一下Ribbon。 什么是Ribbon 之前接触到的负载均衡都是硬负载均衡,什么是硬负载均衡呢?硬负载均衡就是在以往的大型系统中,会有单独一套系统来负责负载均衡策略,我们所以的请求都会先走到负载均衡的系统上,进行分配到不同的服务器处理。 比如我们熟悉的nginx 。其实就可以算作一个负载均衡的系统,客户端请求的接口会先通过nginx 的负载均衡策略分配到不同的服务器上。 那Ribbon 不是这样的吗?那又是怎样的呢? Ribbon 是和 Eureka 一样是Netflix 推出的开源产品,它可以和Eureka 完成无缝结合,Ribbon 主要实现客户端负载均衡。 那什么是客户端负载均衡呢? 就是在客户端请求的时候,就通过均衡策略将请求分发到不同的服务器上,如下图 这个图是根据上节的Eureka 的架构图改编来的,主要的流程还是没有变,服务消费者和服务提供者都会注册到服务中心,然后服务消费者会从服务中心获取可用实例列表 ,这里就会通过负载均衡策略选择其中一个实例进行访问。 好了我们来用代码来看一下。 demo 我们为了简化,注册中心服务端,我们还是用上节的单节点。怎么配置我不说了。然后我们新建一个module 用来做服务提供者,其实也可以用上一节的服务提供者

Linux LB--负载均衡和高可靠

南楼画角 提交于 2020-01-22 05:47:26
1、负载均衡典型应用场景,外网、内网、私网公共服务。 典型场景: (1)用户通过公网访问数据中心的ftp、web、https服务器。 (2) 在数据中心内部东西向访问其他服务时,例如,访问其他虚拟机、DNS等公共服务。 (3) 通过专线或者ipsec vpn访问数据中心内部服务时。 2、常见的负载均衡的技术 硬件实现(2/3层):链路聚合、等价路由。 软件实现(4/7层):LVS、nginx/haproxy、   DNS负载均衡:公网智能分配目的ip GSLB、内网DNS解析公共服务。 3、LVS的3种模式:NAT、DR、TUNNEL。 NAT: 特点,流量来回路径一致,都要经过负载均衡器,通过DNAT转换,将目的ip修改为后端VM的ip,目的MAC修改为后端VM的MAC地址。 缺点:当回程流量很大时,负载均衡器本身容易成为瓶颈。改进方案,使用DR模式。 DR:特点,回程路径直接回到客户端。不需要NAT,后端服务器都需要配置环口ip为VIP,并且配置不响应VIP的arp请求。同时要求LVS分发器和后端VM在相同网段内,这个模式是主流。      缺点:要求后端VM和LVS分发头在相同网段。改进方案:LVS + haproxy. 隧道模式:特点,负载均衡器和后端虚拟机不是直接相连,通过隧道打通,要求双方都要支持IPinIP协议。 LVS + haproxy: 怎么解决跨网问题?

使用LVS实现负载均衡原理及安装配置详解

瘦欲@ 提交于 2020-01-21 08:48:23
使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。 一、负载均衡LVS基本介绍 LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上。为了避免不同机器上用户请求得到的数据不一样,需要用到了共享存储,这样保证所有用户请求的数据是一样的。 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirtualserver.org 现在 LVS 已经是 Linux 内核标准的一部分。使用 LVS 可以达到的技术目标是:通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,它具有良好的可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的性能。LVS 是一个实现负载均衡集群的开源软件项目,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。 二

Tomcat基础《三》----负载均衡

空扰寡人 提交于 2020-01-20 04:14:02
Tomcat基础《一》----WEB技术 Tomcat基础《二》----Tomcat基础介绍 负载均衡 动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压 力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载 均衡。 当单机的Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的 由来,都是由于HTTP协议在设计之初没有想到未来的发展。 HTTP的无状态,有连接和短连接 无状态:指的是服务器端无法知道2次请求之间的联系,即使是前后2次请求来自同一个浏览器,也没有任何数据能够判断出是同一个浏览器的请求。后来可以通过cookie、session机制来判断。 浏览器端第一次HTTP请求服务器端时,在服务器端使用session这种技术,就可以在服务器端产生一个随机值即SessionID发给浏览器端,浏览器端收到后会保持这个SessionID在Cookie当中,这个Cookie值一般不能持久存储,浏览器关闭就消失。浏览器在每一次提交HTTP请求的时候会把这个SessionID传给服务器端,服务器端就可以通过比对知道是谁了 Session通常会保存在服务器端内存中,如果没有持久化,则易丢失,为了速度,用了字典的技术 Session会定时过期。过期后浏览器如果再访问