当前位置:   article > 正文

Nginx实现负载均衡和文件服务器_文件服务器负载均衡

文件服务器负载均衡

超详细的Java知识点路线图


概述

本文将介绍目前非常流行的Nginx服务器,我们将了解反向代理、负载均衡等概念,然后掌握Nginx的安装、配置,可以使用Nginx+Vsftp配置文件上传服务器,以及实现负载均衡的配置。

1、Nginx简介

Nginx是一个轻量级、高性能、稳定性高、并发性强的HTTP和反向代理服务器。目前在互联网企业中应用非常广泛,如:百度、京东、新浪、网易、腾讯、淘宝等。

1.1 Nginx能做什么

Nginx的作用主要有:

  • http服务器

    Nginx一般用于部署静态资源,和部署动态资源的服务器(如:Tomcat) 分开部署,实现动静分离,达到服务器性能的最大化。

  • 反向代理

    代理后台服务器,通过配置实现灵活的路由

  • 负载均衡

    将大量的用户请求,均衡的分配给多台服务器,提高系统的负载能力

1.2 正向/反向代理

Nginx的一个重要作用是反向代理,那么我们首先需要搞清楚什么是反向代理。

在这里插入图片描述

正向代理和反向代理的区别是:

  • 正向代理,代理的是客户端

    如:用户不能直接访问企业的内部服务器,可以通过VPN代理服务器间接访问,这就是一种正向代理

  • 反向代理,代理的是服务器

    如:淘宝的业务部署到不同的服务器上,如商品服务器、商户服务器、订单服务器等,用户访问淘宝时,通过Nginx将请求转发到不同的后台服务器上

2、Nginx的安装

2.1 Linux中安装Nginx

1) 安装依赖库

yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
  • 1
  • 2
  • 3
  • 4

2) 下载Nginx

cd /usr/local
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
  • 1
  • 2

3) 解压

tar -zxvf nginx-1.12.0.tar.gz
  • 1

4)进行默认配置

cd nginx-1.12.0
./configure
  • 1
  • 2

5)编译安装

make
make install
  • 1
  • 2

6)启动nginx

编译安装后,会出现nginx目录

cd /usr/local/nginx/sbin/
./nginx 
  • 1
  • 2

其他命令:

停止
./nginx -s stop
退出
./nginx -s quit
重启
./nginx -s reload
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

7) 打开80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent 

  • 1
  • 2

打开浏览器,输入IP地址,出现Nginx页面

在这里插入图片描述

2.2 Windows中安装Nginx

1)去官网下载Nginx

http://nginx.org/en/download.html

2)解压,双击nginx.exe就可以了

在这里插入图片描述

3、反向代理配置

Nginx作为反向代理服务器可以对服务器的域名和端口进行映射,起到的作用有:

  1. 隐藏真正服务器的地址,提高安全性
  2. 解决跨域问题,将不同的域名和端口映射为相同的
  3. 负载均衡,将大量请求分发给不同的服务器处理
  4. 动静分离,将对不同资源的请求分发给处理各自资源的服务器等

反向代理案例:

在SpringBoot项目中添加控制器,端口是默认的8080

RestController
public class HelloController
{
    @GetMapping("/hello")
    public String hello(){
        return "Hello Nginx";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

通过URL:http://localhost:8080/hello 可以正常访问
现在需要通过URL:http://www.xray.com/hello 也能访问到该接口

这就需要:
1、 将域名localhost映射到www.xray.com上
2.、将端口8080映射到80端口上(浏览器默认)

实现步骤:

1)在C:\Windows\System32\drivers\etc\host文件中添加:

127.0.0.1 www.xray.com
  • 1

让windows系统支持www.xray.com域名

2)修改nginx.conf,添加配置

server {
    listen       80;
    server_name  www.xray.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

proxy_pass 是原来的域名和端口,127.0.0.1就是localhost
server_name 后面是映射后的域名
listen 后面是映射后的端口

3)重启nginx

nginx -s reload
  • 1

4、Nginx+Vsftp搭建文件服务器

Nginx作为http服务器部署静态资源的性能非常高,Linux中的Vsftp组件可以实现文件的传输,Nginx+Vsftp可以组合搭建高性能的文件服务器,实现项目文件上传的功能。

4.1 安装vsftp

1) 安装vsftp组件

yum -y install vsftpd

  • 1
  • 2

2) 添加ftp用户

useradd ftpuser

  • 1
  • 2

登录后默认的路径为 /home/ftpuser.

3) 给ftp用户添加密码

passwd ftpuser

  • 1
  • 2

4) 修改配置

配置文件在/etc/vsftpd/vsftpd.conf

vi /etc/vsftpd/vsftpd.conf

  • 1
  • 2

修改配置

在这里插入图片描述

关闭匿名访问

在这里插入图片描述

添加端口范围

在这里插入图片描述

5) 重启vsftp

service vsftpd restart

  • 1
  • 2

6) 设置开机启动

chkconfig vsftpd on

  • 1
  • 2

7) 修改用户权限

chown ftpuser /home/ftpuser
chmod 777 -R /home/ftpuser

  • 1
  • 2
  • 3

4.2 Nginx配置Vsftp

1) 新建目录用于保存图片

cd /home/ftpuser/
mkdir www
cd www
mkdir images
cd images
pwd
/home/ftpuser/www/images

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2) 配置Nginx

nginx的配置文件是 nginx/conf/nginx.conf

在server中添加location

location /images {
	root  /home/ftpuser/www/;
	autoindex on;
}  

  • 1
  • 2
  • 3
  • 4
  • 5

3) 重启nginx

./nginx -s reload

  • 1
  • 2

在浏览器输入 http://服务器地址/images , 可以看到上传目录下的文件列表

在这里插入图片描述

5、Nginx负载均衡

5.1 负载均衡概念

每台服务器处理请求数都有上限,超过这个上限就可能挂掉,那么多部署几台服务器就可以解决这个问题吗?

也不一定,假设所有请求都打到一台服务器上,还是会挂掉。

负载均衡(Load balancing),是一种计算机技术,能将用户请求按一定的负载均衡算法,分配给集群中的每一台服务器上,从而避免单台服务器过载,也提高了服务器集群处理请求的响应速度,达到服务器资源的优化配置。

在这里插入图片描述

负载均衡可以通过客户端、服务器端和硬件实现,Nginx属于服务器端负载均衡技术。

5.2 负载均衡配置

1) 服务器设置

为了测试方便起见,可以在一台电脑上启动几个SpringBoot项目,以端口区别,模拟多台服务器

RestController
public class HelloController
{
    @GetMapping("/hello")
    public String hello(){
        return "Hello 8081";
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2) 修改Nginx配置

在http中添加upstream,配置服务器列表,myservers是列表名称,内部每个server后面是服务器的IP和端口

upstream myservers { 
	server 192.168.0.113:8081;
	server 192.168.0.113:8082;
	server 192.168.0.113:8083;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

添加server,配置代理将请求发送给myservers处理

server {
        listen       8088;
        server_name  localhost;
        charset utf-8;
        location / {
			proxy_pass http://myservers;
        }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3) 重启Nginx

./nginx -s reload

  • 1
  • 2

4) 测试

在浏览器测试8088端口访问hello接口时,发现接口的调用是轮询式的。

每个服务器的处理能力不同,可以配置权重weight,让能力强的服务器处理更多请求

upstream myservers { 
	server 192.168.0.113:8081 weight=1;
	server 192.168.0.113:8082 weight=2;
	server 192.168.0.113:8083 weight=1;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结束

以上就是Nginx的基本使用了,如果你感觉有用,那就点个赞吧,有问题也可以一起交流。


大家如果需要学习其他Java知识点,戳这里 超详细的Java知识点汇总

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/518476
推荐阅读
相关标签
  

闽ICP备14008679号