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

nginx 实现负载均衡实操

程序员文章站 2024-01-31 23:18:34
...

目录

 

1、创建 服务端应用

1.1 创建SpringBoot项目

1.2 编辑 application.properties 文件

1.3 编辑主启动类

1.4 编辑 Controller 层

1.5 使用 maven 工具打包应用

2、 服务器端操作

2.1 设置 服务器的主机名

2.2 修改 hosts 文件

3、运行程序

3.1 将程序上传到服务器

3.2 执行程序

3.3 测试

4、nginx 配置

4.1 nginx 安装过程省略

4.2 编辑 nginx 配置文件

 4.3 启动 nginx

4.4 测试


1、创建 服务端应用

1.1 创建SpringBoot项目

pom.xml 文件具体如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.lcy</groupId>
    <artifactId>springboot-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

1.2 编辑 application.properties 文件

server.port=8088

1.3 编辑主启动类

package com.lcy.springboot.demo;

@SpringBootApplication
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }

}

1.4 编辑 Controller 层

package com.lcy.springboot.demo.controller;

@RestController
public class HelloController {

    @Value("${server.port}")
    private int serverPort;

    @GetMapping("/hello")
    public String hello() {
        InetAddress address = null;
        try {
            address = InetAddress.getLocalHost();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "当前服务器的IP地址:"+address.getHostAddress() +", 端口号:"+this.serverPort;
    }

}

1.5 使用 maven 工具打包应用

nginx 实现负载均衡实操

2、 服务器端操作

这里准备了3台服务器, IP地址分别为 192.168.3.18,192.168.3.19,192.168.3.20。 这里以 192.168.3.19 为例,其他2台做相同类似的操作。

2.1 设置 服务器的主机名

原来的主机名:

[aaa@qq.com ~]# hostnamectl --static
localhost.localdomain

设置 服务器主机名

[aaa@qq.com ~]# hostnamectl set-hostname server19

2.2 修改 hosts 文件

vi /etc/hosts

在文件中新增一条记录:

192.168.3.19    server19

如图:

nginx 实现负载均衡实操

修改完后, 可能需要重启服务器才生效。

补充

为什么要做这一步(修改主机名和hosts)?

因为在 linux 系统中,如果不这么做,那通过 InetAddress.getLocalHost().getHostAddress()获取的ip为127.0.0.1

3、运行程序

3.1 将程序上传到服务器

我们在步骤1的时候打包的 springboot-demo-0.0.1-SNAPSHOT.jar 程序,将其上传到 服务器中 /data 目录下

nginx 实现负载均衡实操

3.2 执行程序

java -jar springboot-demo-0.0.1-SNAPSHOT.jar

nginx 实现负载均衡实操

注意: 这里需要提前配置好 java环境

3.3 测试

在浏览器中输入:http://192.168.3.20:8088/hello

执行结果:

nginx 实现负载均衡实操

4、nginx 配置

4.1 nginx 安装过程省略

将 nginx 安装在 192.168.3.18 的服务器上

4.2 编辑 nginx 配置文件

vi /usr/local/nginx/conf/nginx.conf

http 标签内添加如下内容:

    upstream springbootCluster{
        server 192.168.3.18:8088 weight=1 max_fails=3 fail_timeout=3;
        server 192.168.3.19:8088 weight=1 max_fails=3 fail_timeout=3;
        server 192.168.3.20:8088 weight=1 max_fails=3 fail_timeout=3;
    }

    server {
        listen      7777;
        server_name localhost;
        location / {
            proxy_pass http://springbootCluster;
        }

    }

补充

nginx 实现负载均衡实操

 4.3 启动 nginx

可以用如下命令,检测修改nginx的配置文件有没有错误

[aaa@qq.com sbin]# cd /usr/local/nginx/sbin/
[aaa@qq.com sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

启动 nginx

[aaa@qq.com sbin]# ./nginx

4.4 测试

测试之前需要在3台服务器上分别使用 java -jar 命令执行 springboot-demo-0.0.1-SNAPSHOT.jar 文件。

然后,确保 nginx 已经启动。

最后在浏览器中输入:http://192.168.3.18:7777/hello

运行结果:

nginx 实现负载均衡实操

多刷新几次,就发现nginx负载均衡起作用了