企业需要运行多个相同的副本,并将负载分散在整个系统集群上,为了高性能的负载均衡,引入了Nginx代理,也就是说Nginx可以理解成一套负载均衡的解决方案。
参考文章或视频链接 |
---|
《Nginx官网》 |
# (1)更新已配置源的软件包信息
apt-get update
# (2)安装一些有助于配置官方 NGINX 软件包仓库的软件包:
apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
# (3)下载并保存 NGINX 签名密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# (4)使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件
OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/${OS} ${RELEASE} nginx" | tee /etc/apt/sources.list.d/nginx.list
# (5)再次更新软件包信息,然后安装 NGINX
apt-get update
apt-get install -y nginx
# 启动Nginx
nginx
# 停止Nginx
nginx -s stop
# 重新加载配置
nginx -s reload
配置负载均衡是Nginx最直接的功能了(准确的说是HTTP
负载均衡,因为TCP
、UDP
与HTTP
一样都是应用层协议,也可以配置负载均衡),这也是我们入门Nginx的首要目的。首先,假设你用SpringBoot搭了一个简单的Web应用,然后分别启动在9999
与9998
端口,那么可以认为这是一个简单的集群,提供同样的服务,但是作为用户肯定不希望记忆这种东西,既然提供同样的服务,那么地址就应该只有一个,下面是将负载分发到两台或多台 HTTP
服务器的配置示例。
假设这是你的SpringBoot项目的一个服务接口。
@RestController
public class demoController {
public static int count = 0;
@RequestMapping("/helloworld")
public String hello_world(){
System.out.println("Service is visited."+count);
count++;
return "hello world";
}
}
server:
port: 9999
servlet: # 项目访问地址
context-path: /
这是你的Nginx配置。
# /etc/nginx/nginx.conf。注意和/etc/nginx/conf.d/default.conf做区分
http{
upstream demo { # upstream代码块
server 127.0.0.1:9999 weight=1;
server 127.0.0.1:9998 weight=2; # 向这个配置所在服务器传输两倍的请求,weight默认值为1
server 127.0.0.1:8000 backup; # backup备用服务器,以便在上面两台主服务器不可用时发挥作用
}
server {
listen 8011;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
proxy_pass http://demo;
}
}
}
配置好后保存并nginx -s reload
重新加载,然后在9999
与9998
端口分别启动两个应用程序,那么之前我们访问的是http://127.0.0.1:9999/helloworld
与http://127.0.0.1:9998/helloworld
,现在只需要输入 http://127.0.0.1:8011/helloworld
或 http://localhost:8011/helloworld
即可,就像这样。
参考文章或视频链接 |
---|
[1] 《Idea启动多个SpringBoot项目的3种方案》 |
[2] 《IDEA中run Dashboard面板如何出现?实现批量运行微服务》 |
[3] 《Nginx实现负载均衡配置》 |