keepalived+nginx的代理使用心得
博客专区 > xper 的博客 > 博客详情
keepalived+nginx的代理使用心得
xper 发表于2年前
keepalived+nginx的代理使用心得
  • 发表于 2年前
  • 阅读 41
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

硬件配置:使用虚拟机装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;

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


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 9
码字总数 14194
×
xper
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: