手机&&PC

技术分享

 

说明:今天要说的内容是nginx+keeplived 反向代理层

 

为什么是nginx+keeplived 反向代理而不用Heartbeat+drbd.

keeplived 用多与前端负载,heartbeat+drbd的方式多用于后端的负载

 

1 用户层: 说一下 用户通过安卓手机 苹果手机 与电脑 访问相同的网站,但是看到的内容不同(专门针对手机,PC设计不同的WEB页面),保障用户访问页面最优

2 反向代理层:后端域名有多个,业务有多个。用户反问到反向代理 只会交给主keeplived,就会造成备keeplived资源浪费,来解决一下这个问题

3 闹裂:预防的几点要素,解决方案

4 单数据中心;多数据中心;阿里云   展望公司服务部署

 

先来说第一个问题,在配置文件里做了一个if判断,通过数据包头部,proxy_pass 给不同的服务器

server {
       listen       80;
       server_name  blog.etiantian.org;
       location / {
        if ($http_user_agent ~* "android")
          {
            proxy_pass http://android_pools;
          }
        if ($http_user_agent ~* "iphone")
          {
            proxy_pass http://iphone_pools;
            }
        proxy_pass http://pc_pools;
        include extra/proxy.conf;
       }
        access_log off;
     }

 

第二个问题,解决keeplived 的浪费资源的问题。解决这个问题,首先是思路问题。

本来打算扣字的,画图了,一图胜千言

技术分享

 

这里就不粘配置文件了。

 

第三个问题  闹裂                           参照小米公司  珊瑚山庄

生产应用中发生,不过是没有实现预防罢了

导致闹裂的原因:

1 高可用服务器之前心跳线链路故障,导致无法互相检查心跳

2 高可用服务器上开启防火墙,阻挡了心跳检测

3  高可用服务器上网卡地址等信息配置不正常,导致发送心跳失败

4 其他服务器配置不当原因,如心跳方式不同,心跳广播冲突,软件BUG等

 

通俗的说:另一个人以为你挂了,结果只是网络延迟等其他原因,没有检测到你,这时候就接管你的工作。

既然说到了,会有一个延迟时间的替换,那么就可以手动修改参数 延迟等待时间(主挂掉,备5分钟在替换主干活)

当然,一般不用修改延迟时间,看业务在什么级别了。

 

放置闹裂的方案:

1 加冗余线路

2 检测到闹裂时,强行关闭心跳检测(远程关闭主节点,控制电源电路fence)

3 做好闹裂的监控报警

4 报警后,备节点在接管时设置比较长时间去接管,给运维人员足够的时间去处理(人为处理)

5 启动磁盘锁,正在服务的一方锁住磁盘,闹裂发生时,让对方完全抢不走“共享磁盘资源”

 

来说最后一个问题。单数据中心,多数据中心   阿里云业务

 

单数据中心  :

存在单点,业务好坏,都看供应商给你的一根网线。出现机房断电,意外故障,机房事故,务必要承受业务停止响应的情况。

1 网络故障:用户暂停机房所有访问。

2 机器意外故障:被淹,意外被其他乙方公司勿操作

3 数据被甲方,或乙方U盘拷贝

多数据中心 :

双点业务负载均衡,自己架设DNS 服务器,在用户访问的同时加了一层

暂时没有接触过多数据中心 公司。都是业务存在单数据中心,可能在这里经验有限

1 用户联通,移动,电信,访问DNS 在通过DNS 转发到 不同数据中心数据(维护成本)

阿里云业务:

把公司业务放在另一家公司去允许,从安全等角度上是考虑的一点

价格,短时间内看,阿里云 在中小公司使用情况来说 没有出现问题

如 阿里提升价格,等大规模宕机  情况无法预测 

 

虽都可以通过备份机制 来把单数据中心,阿里云应用 备份至线下服务器,但其中并不能保证数据完整性。

 

说了那么多,虽然不是很专业。多写 多说 就专业了。

本文出自 “晴空” 博客,谢绝转载!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。