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