1.实验环境

Screenshot_20211205_201107.png

2.实验思路

使用nginx反向代理实现负载均衡,并测试nginx负载均衡各个模式

3.具体实现和结果 分析

1.配置nginx


worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    types_hash_max_size 4096;
    server_names_hash_bucket_size 128;
    upstream test{
            server 127.0.0.1:8081;
            server 127.0.0.1:8082;
            server 127.0.0.1:8083;
           }

    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
                proxy_pass <http://test>;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

将localhost:80的流量转发到nginx的集群中,集群由

server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083;

三台服务器组成,由nginx进行LoadBalance

2.配置服务器

使用go进行服务器搭建

package main

import (
	"log"
	"sync"

	"github.com/gin-gonic/gin"
)

func main() {
	wg := sync.WaitGroup{}
	wg.Add(3)
	go func() {
		defer wg.Done()
		r := gin.New()
		r.GET("/", func(c *gin.Context) {
			log.Println("8081")

		})
		r.Run(":8081")
	}()
	go func() {
		defer wg.Done()
		r := gin.New()
		r.GET("/", func(c *gin.Context) {
			log.Println("8082")
		})
		r.Run(":8082")
	}()
	go func() {
		defer wg.Done()
		r := gin.New()
		r.GET("/", func(c *gin.Context) {
			log.Println("8083")
		})
		r.Run(":8083")
	}()
	wg.Wait()
}

在三个goroutine中分别监听8081,8082,8083三个端口,当有GET请求发过来时,输出端口号码

至此,我们就完成了准备工作,通过统计服务器被访问的次数和顺序就可以验证nginx的负载均衡策略了

4.验证

1.轮询