文档章节

keepalived+nginx的代理使用心得

xper
 xper
发布于 2015/10/14 16:01
字数 967
阅读 44
收藏 1

硬件配置:使用虚拟机装ubuntu13.10系统。开启三台。

环境配置:u001(192.168.58.130)和u002(192.168.58.129)装有keepalived+lnmp(集成环境)

                u003(192.168.58.128)装有lnmp(集成环境)

---------------------------------------------

配置信息:u001和u002使用keepalived建立主备系统。u001为主;同时虚拟IP(192.168.58.131)

通过IP访问可以访问ip:131;

关闭u001;再次访问131.依然没有问题,且本地可以ping通。此时不可以使用的是130访问,可以使用的访问ip为131和129同时来自u002;

此时本机的host添加记录192.168.58.131   xx.com;  可以正常访问到主机u002,但是此时使用的是虚拟ip:131。既使用ping xx.com 显示的ip地址还是131;

----------------------------------------------------------------------------

配置信息:u001的nginx配置中使用模块upstream。配置服务的ip为三台虚拟机的地址同时加入了IP(192.168.58.131)。及配置了有四个IP。设置虚拟的服务域名为xx.com;

此时访问xx.com ; 本来是应该是实际上有三台服务器在提供服务,其实只有两台提供web应用。既我们不可能访问到u001上的资源。原因分析:每次请求先到ip131;这时作为主服务器的u001就接受到信息。

ngingx调用upstream模块;随机拿到ip地址:假如拿到的是129和128,将分别访问到u002和u003;重点是:假如我们拿到了131和130;就意味着形成一个loop;再次访问了本地,再次发起请求直到拿到的ip为129和128;才能正常的返回数据。既访问不到u001,他只能作为请求的分发工作了;问题又来了,我们采用直接ip的访问方式就没有问题了,也就是说我们使用192.168.58.130或者192.168.58.131,就没有问题了,就重新访问到u001的web资源,还是通过nginx的解析,但是对应配置的模块中的信息就不会执行了。

问题分析:nginx的功能解析先是正则匹配,符合设定的域名就会调用指定的模块,自己就会把自己圈进去。

------------------------------------------------------------------------------

解决loop方案:u001监听两个端口,配置使用upstream的地方就监听80端口,在upstream的server的列表中访问当前机器的端口为非80,这样就不会掉进loop中。假如u001关机了,切换到u002这时就不能再次访问到u003;所以u002开启upstream,配置类似u001,也同时监听两个端口。所有来自80的请求都需要走upstream模块,重新分配请求的目的地。

-----------------------------------------------------------------------------------

最终方案整理:1、u001和u002在keepalived中,建立主备关系,u001为主;

                        2、u001的nginx的upstream模块监听80端口的请求。分发地址为:u001和u002的非80端口,同时nginx也要同时监听设定的端口。其他服务器的80端口。

                         3、u002的nginx的upstream模块监听80端口的请求。分发地址为:u002的非80端口,同时nginx也要同时监听设定的端口。其他服务器的80端口。

                        4、扩展时主要就是其他的服务器的配置只需简单的监听80即可,同时在u001和u002中的upstream模块加入这个服务器的地址就可配置。

-------------------------------------------------------------------------------

对外仅仅需要提供那个虚拟ip就能达到多台服务器的安全提供服务,只要不是两台主服务器都停机,还是蛮安全的。

其他情况:在u001中 不给u002一点权重很难被访问到,仅仅给u002权重导致其他又不能访问到,只能都加上权重。不知道是不是bug;

提问:这是不是让这三台发挥最大的效果呢?同时保障更安全的工作。


© 著作权归作者所有

共有 人打赏支持
xper
粉丝 2
博文 9
码字总数 14194
作品 0
普陀
程序员
私信 提问
深入浅出Nginx

前言 Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。 架构图 上图基本上说明了当下流行的技术架构,其中Nginx有点入...

张丰哲
2017/09/10
0
0
keepalived+nginx+tomcat的简单部署

keepalived+nginx Keepalived是一个基于VRRP协议来实现的服务高可用方案,也是一种高性能的服务器高可用或热备解决方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat、corosync、p...

听雨x
2017/09/06
0
0
keepalived+nginx前端代理

介绍keepalived的高可用和Nginx的主机反代理 架构图参考博客:centos7 ansible yum安装web软件 [front] 1.1、keepalive主备的配置 先停止服务: # ansible front -i /root/ans/ansible_inven...

youkoudiancom
2017/04/17
0
0
Nginx+Keepalived实现Nginx高可用

在架构设计中,可以利用NGINX的反向代理和负载均衡实现后端应用的高可用性,同时我们还需要考虑Nginx的单点故障。真正做到架构高可用性。 主要考虑以下几点: 1、Nginx服务因为意外现象挂掉 ...

tianya1993
08/05
0
0
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nuc970 uboot nand-boot,kernel, filesystem 烧录位置

一 烧写到Nand Flash **1.1 **相关文件说明 l BSP版本:nuc970bsp-release-20150519.zip l NuWriter版本:2015/04/28-V01,nuvoTon Nu-Writer V1.0 l 烧写文件: u-boot-spl.bin:负责将u-b......

CookieDemo
37分钟前
1
0
python中sort和sorted函数小结

L.sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) 这样看,sorted函数只比sort函数多一个iterable参数,其余没什么不同,iterable是一个迭代......

上官夏洛特
今天
3
0
thinkphp 常用SQL执行语句总结

第一条:Db::tablera('vr_panomas')->where(['delete_time'=>0,'id'=>['in',$pids]])->field(['id'=>'id','post_thumb'=>'thumb','post_title'=>'title','post_tags'=>'tags','post_price'=>......

koothon
今天
3
0
支付宝返回状态resultStatus意思

上一篇集成支付宝的时候,会有一些支付宝返回的resultStatus,具体意思是: 9000 订单支付成功 8000 正在处理中 4000 订单支付失败 6001 用户中途取消 6002 网络连接出错 还有memo,意思就是...

RainOrz
今天
3
0
electron webview 页面加载事件顺序

1.did-start-loading 页面开始加载 2.load-commit 主页面文档加载 3.page-title-updated title 4.dom-ready 主页面 dom 加载完成 5.load-commit frame文档加载 6.did-frame-finish-load fram......

dubox
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部