文档章节

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
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

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

em_aaron
2018/07/22
0
0
Nginx+Keepalived实现Nginx高可用

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

tianya1993
2018/08/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tac 与cat

tac从后往前看文件,结合grep使用

writeademo
今天
2
0
表单中readonly和dsabled的区别

这两种写法都会使显示出来的文本框不能输入文字, 但disabled会使文本框变灰,而且通过通过表单提交时,获取不到文本框中的value值(如果有的话), 而readonly只是使文本框不能输入,外观没...

少年已不再年少
今天
2
0
SpringBoot上传图片操作

首先有个上传文件的工具类 /** * 文件上传 * @param file * @param filePath * @param fileName * @throws Exception */public static void uploadFile(byte[] file, String ...

_liucui_
今天
6
0
DrawerLayout

public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener,OnFragmentInteractionListener{ public NavigationView navView; ......

安卓工程师王恒
今天
2
0
python精简笔记

python精简笔记-字符串基本用法 字符串常见用法: * encode() # 编码成bytes类型 * find() # 查找子串 * index() # 获取下标 * replace() # 替换子串 * len(string) # 返回字符串长度,...

平头哥-Enjoystudy
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部