前情回顾
不知道为什么,公司亚马逊EC2服务器最近常常无缘无故的宕掉。。ssh都进不去,只能通过aws那里重启,由于主网站服务器之前都是单点所以......
正好公司测试用的和其他附属网站用的服务器没有利用起来,这次便拿来做负载均衡和高可用吧!因为几台服务器ip段不一样,还有一台在阿里云的服务器,所以便想到了利用Tengine的nginx_upstream_check_module模块的故障转移来实现高可用。
Tengine nginx_upstream_check_module
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
注意 在编译的时候加入./configure --with-http_upstream_check_module就能使用 nginx_upstream_check_module来实现故障转移了,故障转移是相对于负载均衡来说的:
upstream backend {
server 192.168.0.21:80;
server 192.168.0.22:80;
check interval=3000 rise=2 fall=5 timeout=1000;
}
//它会实时检查两台服务器的健康状态,如果一台realserver宕掉则会将其踢出upstream,所有的请求不转发到这台服务器。当期恢复正常时,将其加入upstream。
for docker
这时候感觉docker的好处便体现出来啦,因为需要重新编译nginx,如果造一个docker在容器内部搭建便不会出现和宿主机上面冲突等问题,当造好之后直接移植到需要的服务器上面就行啦~提供一下自己造的Dockerfile:https://github.com/gengxiankun/docker-build/blob/master/devops-php/tengine/Dockerfile
网友评论