前情回顧
不知道為什么,公司亞馬遜EC2服務(wù)器最近常常無緣無故的宕掉。。ssh都進(jìn)不去,只能通過aws那里重啟,由于主網(wǎng)站服務(wù)器之前都是單點所以......
正好公司測試用的和其他附屬網(wǎng)站用的服務(wù)器沒有利用起來,這次便拿來做負(fù)載均衡和高可用吧!因為幾臺服務(wù)器ip段不一樣,還有一臺在阿里云的服務(wù)器,所以便想到了利用Tengine的nginx_upstream_check_module模塊的故障轉(zhuǎn)移來實現(xiàn)高可用。
Tengine nginx_upstream_check_module
Tengine是由淘寶網(wǎng)發(fā)起的Web服務(wù)器項目。它在Nginx的基礎(chǔ)上,針對大訪問量網(wǎng)站的需求,添加了很多高級功能和特性。Tengine的性能和穩(wěn)定性已經(jīng)在大型的網(wǎng)站如淘寶網(wǎng),天貓商城等得到了很好的檢驗。它的最終目標(biāo)是打造一個高效、穩(wěn)定、安全、易用的Web平臺。
注意 在編譯的時候加入./configure --with-http_upstream_check_module就能使用 nginx_upstream_check_module來實現(xiàn)故障轉(zhuǎn)移了,故障轉(zhuǎn)移是相對于負(fù)載均衡來說的:
upstream backend {
server 192.168.0.21:80;
server 192.168.0.22:80;
check interval=3000 rise=2 fall=5 timeout=1000;
}
//它會實時檢查兩臺服務(wù)器的健康狀態(tài),如果一臺realserver宕掉則會將其踢出upstream,所有的請求不轉(zhuǎn)發(fā)到這臺服務(wù)器。當(dāng)期恢復(fù)正常時,將其加入upstream。
for docker
這時候感覺docker的好處便體現(xiàn)出來啦,因為需要重新編譯nginx,如果造一個docker在容器內(nèi)部搭建便不會出現(xiàn)和宿主機上面沖突等問題,當(dāng)造好之后直接移植到需要的服務(wù)器上面就行啦~提供一下自己造的Dockerfile:https://github.com/gengxiankun/docker-build/blob/master/devops-php/tengine/Dockerfile