配置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项目停掉。
然后多刷新几次网页,我们就会发现网页还可以继续访问,且请求会全部访问到hadoop1
、hadoop3
上,这一点我们从这两台机器的控制台可以看得出来。
然后我们把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