使用nginx反向代理实现负载均衡,并测试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
使用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的负载均衡策略了