小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Ngnix负载均衡实战配置

Java,Nginx 额外说明

收录于:52天前

Nginx 的优势

1、作为Web服务器,Nginx处理静态文件和索引文件,自动索引非常高效。

2、Nginx作为代理服务器,可以实现无缓存的反向代理加速,提高网站运行速度。

3、作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和负载平衡利用算法

4、性能方面,Nginx是专门针对性能优化而开发的,其实现非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最多可以支持响应5万个并发连接,并且只占用非常低的内存资源。

5、在稳定性方面,Nginx采取了阶段性资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的

6、在高可用性方面,Nginx支持热部署,启动速度非常快。因此,可以在不中断服务的情况下升级软件版本或配置。即使运行几个月也不需要重新启动。它几乎可以每天 24 小时、7x7 运行。

2.Ngnix负载均衡

1.转发功能

根据一定的算法【加权、轮询】,将客户端请求转发到不同的应用服务器,减轻单台服务器的压力,提高系统并发量。

2、故障排除

通过心跳检测来判断应用服务器当前是否可以正常工作。如果服务器宕机,请求会自动发送到其他应用服务器。

3.恢复并添加

如果检测到故障的应用服务器已恢复工作,则会自动添加到处理用户请求的团队中。

4.Nginx负载分配策略

      Nginx 的 upstream目前支持的分配算法: 
1)、轮询 ——1:1 轮流处理请求(默认)

      每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。 
2)、权重 ——you can you up (weight)
      通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。 
3)、ip_哈希算法(ip_hash)
      每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。 

3.负载均衡的实际配置

1、首先修改/usr/local/etc/nginx/nginx.conf

将 localhost:8081 的请求转发到代理 http://sww。这个sww有2台服务器,每台权重为50%。

  # nginx 转发配置开始
    upstream sww {
       server localhost:8080 weight=1;
       server localhost:9080 weight=1;
    }

    # nginx 转发配置结束

    server {
        listen       8081;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://sww;
        }
        
        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

通过上面的配置,可以实现当访问网站localhost:8081时,由于配置了proxy_pass地址,所以所有请求都会首先经过nginx反向代理服务器。当服务器将请求转发到目的主机时,上游被读取为sww。地址,读取分配策略,将8080权重配置为1,将9080权重配置为1。这样请求就会平均分配到这两台机器上。

2.启动ngnix

cd /usr/local/Cellar/nginx/1.17.6/bin

./nginx // 启动

sudo ./nginx -s reload // 重启

3.在sww代理下启动2台服务器

java -jar /Users/sunww/Desktop/spring-boot-0.0.1-SNAPSHOT.jar --server.port=9080

java -jar /Users/sunww/Desktop/spring-boot-0.0.1-SNAPSHOT.jar --server.port=8080

4.发起请求并检查负载均衡情况

通过postman发起请求 localhost:8081

总共发起了3个请求,可以看到其中有2个请求发送到服务器8080。

. . .

相关推荐

额外说明

mySQL优化的一些总结 SQL编写一般要求

  SQL编写一般要求 ---SQL语句尽可能简单 ---分解联接保证高并发 ---同数据类型的列值比较 ---不在索引列做运算 ---禁止使用SELECT * ---避免负向查询和%前缀模糊查询 ---保持事务(连接)短小 ---改写OR为IN() -

额外说明

MySQL Community Server的安装配置教程(Windows版本)

(1)了解MySQL Community Server: MySQL Community Server是开源的MySQL数据库服务的名称。它是MySQL AB在2000年推出的一个开源数据库服务器,现在由Oracle公司维护和管理。 MySQL Comm

额外说明

云数据仓库实践:AWS Redshift在大数据储存分析上的落地经验分享

-作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 -数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 -本文已收录于PHP专栏:数据库与数据仓库 -欢

额外说明

Go语言进阶,并发通道机制搭建一个可注册昵称的聊天室

        聊天室的创建,主要是由两部分组成,服务端和客户端, 新增一个客户端相当于新来一个用户,陆续参与进来进行群聊,服务端就是处理所有客户端的操作然后反馈出去。 服务端具体作用:一直监听所有客户端的连接net.Conn(有进入、发送消息、退出这样

额外说明

《天天数学》连载26:一月二十六日

格言作者:伽利略·伽利雷(1564年2月15日~1642年1月8日)原名(Galileo di Vincenzo Bonaulti de Galilei)是意大利天文学家,物理学家和工程师。伽利略被称为“观测天文学之父”、“现代物理学之父”、“科学方法之

额外说明

TensorFlow学习笔记02:TensorBoard可视化入门

文章目录 一、TensorBoard概述 二、启动TensorBoard 1、打开Anaconda Prompt窗口

额外说明

如何给一张图片设置帘子(水幕)效果,或者反向帘子效果?

这是帘子效果,完整代码如下,大家不明白的可以复制代码到编辑器运行,代码很简单,研究一下都能学会。 <!DOCTYPE html> <html>     <head>         <meta charset="utf-8" />         <ti

额外说明

面试官灵魂三问:什么是SOA?什么是微服务?SOA和微服务有什么区别?

SOA SOA(Service-Oriented Architecture,面向服务的架构)是一种高层级的架构设计理念,可通过在网络上使用基于通用通信语言的服务接口,让软件组件可重复使用。 那么什么是服务呢? 所有业务功能都可以定义为一项服务,服务就意味

额外说明

RocketMQ的invokeSync call timeout异常的解决办法

缘起 在RocketMQ客户端的DefaultMQPushConsumer的start方法被执行时,时不时会报出invokeSync call timeout异常,如下: Caused by: java.lang.IllegalStateExceptio

额外说明

亚马逊入门全套教程,涵盖从亚马逊平台注册注意事项、选品技巧、广告投放等

标题:打通亚马逊,探索利润增长的秘密!一站式教程,教你从入门到精通! 文章: 亚马逊作为全球最大的电子商务平台之一,吸引了无数创业者和卖家的加入。然而,刚接触亚马逊的人经常面临一系列的问题和挑战。从注册亚马逊平台的注意事项,到如何寻找畅销产品、优化广告投

ads via 小工具