系统相关
首页 > 系统相关> > 配置nginx的负载均衡和故障转移

配置nginx的负载均衡和故障转移

作者:互联网

如果Nginx仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器或少数服务器宕机之后,整个集群仍能保持系统可用。

一、配置步骤

1、准备springboot的demo jar包用来当作测试项目,我将我使用的jar包放在网盘上供大家下载使用,当然大家也可以使用自己的用来测试。
        百度网盘下载地址(16.26M):https://pan.baidu.com/s/1KD5h2lUqCAbZRaX7YDyniw提取码:1i7t

2、准备虚拟机和连接工具,集群分配情况如下:
        nginx:部署在hadoop1:80
        springboot项目:部署在hadoop1:8080、hadoop2:8080、hadoop3:8080三台机器上
注意:我在/etc/hosts中做了域名和IP地址的映射,如果大家没有做映射的话,把域名改成IP地址即可。
在这里插入图片描述
3、配置nginx的配置文件nginx.conf中,对相应部分进行修改或者替换

upstream springboot{
		### weight为分配权重,默认为1。数值越大,相同时间内分配的请求越多。
        server hadoop1:8080 weight=2;
        server hadoop2:8080 weight=1;
        server hadoop3:8080 weight=1;
}
server {
        listen       80;
        server_name  _;
      
        location / {
        	### 指定上游服务器负载均衡服务器
            proxy_pass http://springboot/;
            ###nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间
			proxy_connect_timeout 1s;
			###nginx发送给上游服务器(真实访问的服务器)超时时间
			proxy_send_timeout 1s;
			### nginx接受上游服务器(真实访问的服务器)超时时间
			proxy_read_timeout 1s;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

4、启动nginx服务器和springboot项目。
使用如下命令启动nginx

[root@hadoop1 ~]# nginx

在三台机器上分别使用如下启动所有springboot项目

[root@hadoop1 ~]# java -jar demo-1.0.0.jar
[root@hadoop2 ~]# java -jar demo-1.0.0.jar
[root@hadoop3 ~]# java -jar demo-1.0.0.jar

二、验证负载均衡

我们在浏览器地址上输入hadoop1或者hadoop1:80即可访问页面,页面内容如下:
在这里插入图片描述
然后我们查看xshell连接工具,在hadoop1机器上的控制台打印输出了访问信息
在这里插入图片描述
如果你不断刷新浏览器页面,那么hadoop1,hadoop2,hadoop3的控制台会都能打印这条访问信息。说明负载均衡实现成功。

三、验证故障转移

现在我们把hadoop2机器上的springboot项目停掉。
在这里插入图片描述

然后多刷新几次网页,我们就会发现网页还可以继续访问,且请求会全部访问到hadoop1hadoop3上,这一点我们从这两台机器的控制台可以看得出来。

然后我们把hadoop3也停掉,只留下hadoop1测试一下。
在这里插入图片描述
我们再多刷新击次浏览器,这时你发现项目还可以访问。
在这里插入图片描述
因此,在配置nginx后,不仅可以做到负载均衡缓解单个服务器压力,还可以做到故障转移,提高系统的安全可靠性。

四、补充nginx转发策略

除 weight(权重)之外,upstream还有其它的分配策略,分别如下:

1、 ip_hash(访问ip)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

upstream favresin{
      ip_hash;
      server 10.0.0.10:8080;
      server 10.0.0.11:8080;
}

2、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

upstream favresin{     
      server 10.0.0.10:8080;
      server 10.0.0.11:8080;
      fair;
}

标签:负载,8080,故障,jar,server,nginx,hadoop1,服务器
来源: https://blog.csdn.net/cczxcce/article/details/114276510