欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx实践

程序员文章站 2022-03-20 11:39:14
...

Nginx负载均衡实践

本次实践是为了体验在目前分布式集群的环境部署的条件下,使用nginx实现负载均衡配置,体验服务器集群处理请求操作的过程。

一、服务器环境搭建

本次实践使用了两台AWS服务器,每台机器上部署了相同的服务,并且在其中一台机器上搭建了nginx,进行负载均衡。

1.创建虚拟机

本次实验选择的虚拟机的操作系统是ubuntu 16.04 LTS,创建虚拟机的操作比较简单,但是AWS默认使用的是**登陆,对新手用户不是很友好,尤其容易让人忘记需要下载**文件到本地保存,并设置使用权限为400。
服务器列表:
nginx实践

AWS默认用户名为: ubuntu
AWS密码为: *****************

连接示例:
nginx实践

将**登陆修改为密码登陆:设置AWS服务器为密码登陆

2.安装nginx

使用命令:

sudo apt-get install nginx

完成安装之后,ubuntu会默认启动nginx,在浏览器中输入对应AWS服务器端外网IP计科访问到nginx的主页。

3.安装Java

此次实践的服务是使用Java语言开发的,因此运行需要Java的环境。
安装步骤请参考:ubuntu环境下Java Web环境搭建
安装命令如下:

sudo apt-get install software-properties-common   
sudo add-apt-repository ppa:webupd8team/java    
sudo apt-get update
sudo apt-get install oracle-java8-installer

安装完成之后使用命令:

java -version

检查java是否安装成功

二、部署应用

1.克隆代码

本次实验的代码我已经上传到Github,代码仓库的地址为:

aaa@qq.com.com:JimmyU1/turing_robot.git

使用命令

git clone aaa@qq.com.com:JimmyU1/turing_robot.git

即可将代码克隆到本地进行修改。

2.打包代码

代码进行修改之后需要将代码重新打包,使用maven工具进行打包
打包命令:

mvn clean
mvn package -D skipTests

然后会在代码目录下生成一个target文件夹,里面由一个jar文件即为本项目的可执行文件

3.上传代码

在服务器上的/home/ubuntu路径下新建一个文件夹命名webroot用于存储代码文件。使用命令:

sudo mkdir webroot
sudo chmod 777 webroot

创建好目录之后把打包好的jar文件上传至服务器。使用命令(文件名、目录名和服务器地址请自行替换):

sudo scp robot-0.0.1-SNAPSHOT.jar ubuntu@52.36.73.236:/home/ubuntu/webroot

4.启动服务

进入到webroot目录,使用nohup从后台启动程序:

nohup java -jar robot-0.0.1-SNAPSHOT.jar &

本服务默认使用端口号是11200,之后的nginx配置将对11200端口的服务进行负责均衡。

三、负载均衡配置

负载均衡的配置是通过修改nginx配置文件来实现的。
nginx的默认配置文件路径为/etc/nginx/conf.d/

在其中一台服务器上配置nginx来进行负载均衡,在/etc/nginx/conf.d/目录下创建一个配置文件,命名turing_robot.conf,具体内容如下:

upstream turingrobot{
    server 127.0.0.1:11200;
    server 52.36.73.236:11200;
}

server{
    listen 8700;
    location / {
        proxy_pass http://turingrobot;
    }
}

备注:
1. upstream用于配置同样服务的多个服务器,不要带有http或者https的协议头。
2. upstream的里面配置多个server,是是提供服务的服务器地址和端口号。
3. server结构中,listen接口表示的是nginx对外服务的端口号。是服务访问的实际入口。
4. proxy_pass 用于表示该服务代理的是upstream中配置的对应实际服务地址。

最后重新加载nginx的配置文件即可完成配置,使用命令:

sudo nginx -s reload

四、效果演示

我们在代码中会获取服务器的IP(内网IP,暴露外网IP存在安全隐患),并返回给了前端,然后前端会在每次请求返回只有在页面上展示对应的服务器IP。下图中两次返回的IP地址并不一样,表示我们两次请求分别是由不同的服务器来处理的。

展示效果:
nginx实践

1

1

相关标签: nginx