文档章节

keepalived+nginx的代理使用心得

xper
 xper
发布于 2015/10/14 16:01
字数 967
阅读 43
收藏 1
点赞 0
评论 0

硬件配置:使用虚拟机装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
keepalived+nginx的高可用

keepalived+nginx的高可用 ######### nginx+keepalived环境: master:10.10.54.61(vip:10.10.54.69) backup:10.10.54.64(vip:10.10.54.69) realserver:10.10.54.63 realserver:10.10.54.67......

浮云飘飘
2014/03/16
0
3
keepalived+nginx集群

环境: 系统:centos7 ip:172.16.22.221 test221 master ip:172.16.22.222 test222 backup VIP:172.16.22.219 同时安装keepalived 都安装nginx,这里已经编译安装过了 如果没有可以使用yum快...

喵来个鱼
03/26
0
0
利用keepalived实现nginx调度器高可用(一)

利用keepalived实现nginx调度器高可用 声明:提供四台主机,其中两台nginx做前端调度器(一台做主调度器,一台做备用调度器), 另外两台主机做web服务器向外提供http服务; 框架如图: 1.在...

晴空ytc
06/15
0
0
keepalived 实用简介

带着问题去学习: 1. keepalived应该怎么部署,部署在几台服务器上面 ? 2. 如何配置keepalived? 答: 第一个问题,是我开始查找资料时,找了很久也没弄明白的一个问题,也是写这篇文字的初衷...

苗永超
2015/10/08
100
0
Spring中引入增强(IntroductionAdvice)的底层实现原理

作为一名程序员,舆论一直在告诫我,要有自己的博客,要记录并懂得和别人分享你的技术心得。然而,遗憾的是,每当我有所收获,并为之兴奋,准备下笔要和别人分享之时,我蓦然发现,已经有N位...

祖大俊
2016/04/21
1K
4
squid开多端口代理的心得

利用squid开二级代理很方便,就是在配置文件上做点文章, 它给的那个default的配置文件看起来就头大。一般都是重新写一个。 给A校区的兄弟们开了一个代理。用的是B校区的动态ip做的父代理。 ...

红薯
2009/05/05
1K
0
通过ansible部署高可用LNAMMKP架构

通过ansible部署高可用LNAMMKP架构 主/备模式高可用keepalived+{nginx(proxy)|lvs} 两台主机:httpd+php+Discuz!+phpMyAdmin 一台主机:memcached用来缓存php的session; 一台主机:mysql-s...

Runs_
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式 Spring5 beans 接口实例化 代理Bean操作 ...

小致dad
11分钟前
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
9
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
202
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部