nginx负载均衡

来源:互联网 发布:贴吧防秒删软件 编辑:程序博客网 时间:2024/05/01 23:14

如果在同一个域名下有多台服务器提供服务,此时需要nginx负载均衡。

1.需求

nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至tomcat服务器。

nginx负载均衡服务器:192.168.25.141

tomcat1服务器:192.168.137.4:8080

tomcat1服务器:192.168.137.4:8081

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #配置负载均衡:算法采用轮询的方法  
  2.    #配置负载均衡  
  3.     upstream tomcat_server5 {  
  4. server 192.168.137.4:8080;  
  5. server 192.168.137.4:8081;  
  6.     }  
  7.     #配置一个虚拟主机4  
  8. server {  
  9.     listen 80;  
  10.     server_name www.zhang4.com;  
  11.   
  12.     location / {  
  13.           #域名www.zhang4.com的请求转发到tomcat_server5中的任意一台服务器上  
  14.           proxy_pass http://tomcat_server5;  
  15.           index index.jsp index.html index.htm;  
  16.     }  
  17.     }  

域名需要配置host文件

192.168.137.4 www.zhang4.com


条件:现有一台老机器,处理能力很差,这时就不能负载均衡了,需要配置权重,来降低老机器的压力

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1.    #配置负载均衡  
  2.     upstream tomcat_server5 {  
  3.        #配置权重时,weight=3:表示如果有4次请求,则有3次都是这台服务器处理,默认权重都是1  
  4. #权重越高,则处理请求的越多  
  5. server 192.168.137.4:8080 weight=3;  
  6. server 192.168.137.4:8081;  
  7.     }  
  8.     #配置一个虚拟主机4  
  9. server {  
  10.     listen 80;  
  11.     server_name www.zhang4.com;  
  12.   
  13.     location / {  
  14.           #域名www.zhang4.com的请求转发到tomcat_server5中的任意一台服务器上  
  15.           proxy_pass http://tomcat_server5;  
  16.           index index.jsp index.html index.htm;  
  17.     }  
  18.     }  
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. </pre><pre code_snippet_id="1640020" snippet_file_name="blog_20160409_4_755562" name="code" class="java"><p><pre name="code" class="java">节点说明:  
  2. 在http节点里添加:  
  3.   
  4. #定义负载均衡设备的 Ip及设备状态   
  5. upstream myServer {     
  6.   
  7.     server 127.0.0.1:9090 down; #不接收请求  
  8.     server 127.0.0.1:8080 weight=2;   
  9.     server 127.0.0.1:6060;   
  10.     server 127.0.0.1:7070 backup; #不参于负载均衡,当所有机器挂了,则这备份机处理请求服务<p style="display: inline !important;"></p><p></p><p></p>  
  11. }  
  12.   
  13. 在需要使用负载的Server节点下添加  
  14.   
  15. proxy_pass http://myServer;  
  16.   
  17. upstream 每个设备的状态:  
  18.   
  19. down 表示单前的server暂时不参与负载   
  20. weight  默认为1.weight越大,负载的权重就越大。   
  21. max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误   
  22. fail_timeout:max_fails 次失败后,暂停的时间。   
  23. backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。  



Nginx的高可用

录nginx挂了的时候,需要备份的nginx ,

解决高可用的方案就是添加冗余

使用:keeplived 健康检查,

1.1 keepalived+nginx实现主备

1.1.1 什么是keepalived

keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

  Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

 

1.1.2 keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backupmaster上面有一个对外提供服务的vipVIP = Virtual IP Address,虚拟IP地址,该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backupmaster。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是corecheckVRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。

0 0
原创粉丝点击