nginx负载均衡

如果在同一个域名下有多台服务器提供服务,此时需要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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lazy-Balancer 项目起源于好哥们需要一个 7 层负载均衡器,无奈商业负载均衡器成本高昂,操作复杂。又没有特别喜欢(好看,好用)的开源产品,作为一名大 Ops 怎么能没有办法?正好最近在看 Django 框架,尝试自己给 Nginx 画皮,项目诞生!非专业开发,代码凑合看吧。 项目基于 Django   AdminLTE 构建,在 Ubuntu 14.04 上测试通过;为了保证良好的兼容性,请使用 Chrome 浏览器。 因为增加了 iptables 自动控制,所以暂时不支持 docker 方式部署;需要本地测试的同学请使用 vagrant 方式 为了后续扩展方便,请大家使用 Tengine 替代 Nginx 服务 项目地址 GITHUB - https://github.com/v55448330/lazy-balancer 码云 - http://git.oschina.net/v55448330/lazy-balancer OSCHINA - http://www.oschina.net/p/nginx-balancer 更新 将 Nginx 更换为 Tengine 以提供更灵活的功能支持以及性能提升 新增 HTTP 状态码方式检测后端服务器,默认 TCP 方式 新增 HTTP 状态码方式支持查看后端服务器状态 修复因前方有防火墙导致无法获取后端服务器状态 修复因主机头导致后端服务器探测失败 新增自定义管理员用户 新增配置通过文件备份和还原 新增实时查看访问日志和错误日志 新增实时请求统计 更新 Vagrantfile 修复其他 Bug 功能 Nginx 可视化配置 Nginx 负载均衡(反向代理)配置 Nginx 证书支持 系统状态监测 自动维护防火墙规则(白名单) 支持 TCP 被动后端节点宕机检测 支持 HTTP 主动后端节点宕机检测 运行 克隆代码 mkdir -p /app git clone https://github.com/v55448330/lazy-balancer.git /app/lazy_balancer cd /app/lazy_balancer 卸载 nginx apt-get -y purge nginx-* nginx* apt-get -y autoremove 安装 tengine git submodule update --init --recursive cd resource/nginx/tengine apt-get install -y build-essential libssl-dev libpcre3 libpcre3-dev zlib1g-dev ./configure --user=www-data --group=www-data --prefix=/etc/nginx --sbin-path=/usr/sbin --error-log-path=/var/log/nginx/error.log --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx.pid make make install mkdir -p /etc/nginx/conf.d echo "daemon off;" >> /etc/nginx/nginx.conf 安装 supervisor apt-get install supervisor update-rc.d supervisor enable 配置 supervisor cp -rf service/* /etc/supervisor/ 安装依赖 apt-get install -y python-dev python-pip iptables libcurl4-openssl-dev pip install -r requirements.txt 初始化数据库 python manage.py makemigrations python manage.py migrate 启动服务 service supervisor restart

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值