ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-03-02 10:58:04  阅读:269  来源: 互联网

标签:负载 8080 故障 jar server nginx hadoop1 服务器


如果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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有