2025年2月24日 星期一 甲辰(龙)年 腊月廿四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > Nginx

Nginx 负载均衡配置和演示

时间:01-26来源:作者:点击数:25

一 Nginx配置

之前有过Docker安装经验,本教程演示宿主机直接安装方法

1.Nginx下载官网

在这里插入图片描述

2.因为在Centos虚拟机安装,所以下载Linux版本

  • ## 1.解压安装包
  • tar zxvf nginx-1.22.0.tar.gz
  • ## 2.将解压后的包移动到
  • mv nginx-1.22.0 /usr/local/nginx-1.22.0
  • ## 3.安装gcc环境:提示输入【y】并回车
  • yum install gcc-c++
  • ## 4.安装pcre
  • yum install -y pcre pcre-devel
  • ## 5.安装zlib
  • yum install -y zlib zlib-devel
  • ## 6.安装openssl
  • yum install -y openssl openssl-devel
  • ## 7.进入Nginx目录
  • cd /usr/local/nginx-1.22.0
  • ## 8.构建makefile
  • ./configure \
  • --prefix=/usr/local/nginx \
  • --pid-path=/var/run/nginx/nginx.pid \
  • --lock-path=/var/lock/nginx.lock \
  • --error-log-path=/var/log/nginx/error.log \
  • --http-log-path=/var/log/nginx/access.log \
  • --with-http_gzip_static_module \
  • --http-client-body-temp-path=/var/temp/nginx/client \
  • --http-proxy-temp-path=/var/temp/nginx/proxy \
  • --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
  • --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
  • --http-scgi-temp-path=/var/temp/nginx/scgi \
  • --with-http_stub_status_module \
  • --with-http_ssl_module \
  • --with-file-aio \
  • --with-http_realip_module
  • ## 9.编译Nginx
  • make
  • ## 10.创建配置的临时文件目录
  • mkdir -p /var/temp/nginx
  • ## 11.安装
  • make install
  • ## 12.启动服务
  • /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • ## 13.查看服务进程
  • ps aux | grep nginx
  • ## 14.停止服务
  • /usr/local/nginx/sbin/nginx -s stop
  • ## 15.关闭防火墙
  • systemctl stop firewalld && systemctl disable firewalld

3.打开页面查看(服务可正常访问)

在这里插入图片描述

二 配置均衡策略

1.内置负载策略

轮循:round-robin 默认策略,请求均匀打到每台服务器上,如果服务器宕机则自动剔除

权重:weight 按权重进行请求分流,每台服务器默认权重为 1

哈希:ip_hash 请求按访问IP的哈希结果分配,这样每个客户端多次访问都会请求同一服务器,可以解决Session问题

最少:last_conn 请求被打倒连接数最少的服务器

2.配置参数说明

参数 说明
weight 各个节点分流权重
max_fail 最大失败次数
fail_time 失败超时,当请求失败次数超过最大次数,则超时时间内,新的请求不会再分配给该服务器
backup 备用机,其他节点均不可用时,服务会发到备用机上
down 永久停机(请求不会发到此地址)
max_conns 最大连接数,默认为 0 即不限制

3.Nginx配置文件配置

  • ## 1.进入编辑状态
  • vi /usr/local/nginx/conf/nginx.conf
  • ## 2.增加负载均衡配置
  • upstream proxymoonhello{
  • server 192.168.184.4:8801 ;
  • server 192.168.184.5:8801 backup;
  • server 192.168.184.6:8801 down;
  • }
  • ## 3.增加转发配置
  • location /hello {
  • proxy_pass http://proxymoonhello;
  • proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  • proxy_connect_timeout 20s;
  • proxy_read_timeout 20s;
  • proxy_send_timeout 20s;
  • }
  • ## 3.重载配置文件
  • /usr/local/nginx/sbin/nginx -s reload
在这里插入图片描述

编写一个Nginx开机自启脚本

  • ## 1.创建文件
  • vim /usr/lib/systemd/system/nginx.service
  • ## 2.写入指定内容
  • ## 3.激活脚本
  • systemctl enable nginx.service
  • ## 4.刷新
  • systemctl daemon-reload
  • ## 5.启动测试
  • systemctl start nginx.service
  • ## 6.查看状态
  • systemctl status nginx.service

注意启动要先关掉手动启动的 Nginx 进程

脚本内容

  • [Unit]
  • Description=Nginx
  • After=network.target remote-fs.target nss-lookup.target
  • [Service]
  • Type=forking
  • Environment=JAVA_HOME=/usr/local/java
  • User=root
  • TimeoutSec=0
  • PIDFile=/var/run/nginx/nginx.pid
  • ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • ExecReload=/bin/kill -s HUP $MAINPID
  • ExecStop=/bin/kill -s QUIT $MAINPID
  • PrivateTmp=true
  • [Install]
  • WantedBy=multi-user.target

4.用Java写一个简单接口

  • package com.demo.controller;
  • import org.springframework.web.bind.annotation.*;
  • import javax.servlet.http.HttpServletResponse;
  • /**
  • *
  • * Description: 你好
  • *
  • * @Author: zhx & moon hongxu_1234@163.com
  • * @Date: 2022-03-30 20:21
  • * @version: V1.0.0
  • */
  • @RestController
  • @RequestMapping("/hello")
  • public class Hello {
  • @GetMapping("/{type}")
  • public String hello(@PathVariable("type") int type, HttpServletResponse responseBody){
  • System.out.println("Accept HTTP .........................");
  • if (type > 0){
  • return "S";
  • }
  • responseBody.setStatus(500);
  • return "F";
  • }
  • }

打包并部署:java -jar zhx_moon_consumer.jar &

5.用VM WARE启动三个虚拟机,将上面代码部署到三个虚拟机上

在这里插入图片描述

服务均可直接响应

在这里插入图片描述

Nginx转发调用

在这里插入图片描述

三 测试

1.默认轮询

配置

在这里插入图片描述

效果

在这里插入图片描述]
在这里插入图片描述

2.权重(3:2:1)

配置

在这里插入图片描述

效果:比重并不是按序123 45 6去落到三台机器上的

在这里插入图片描述

4.备用

一台失败不可用,一台备用,一台宕机

在这里插入图片描述

效果

是是是
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门