Nginx+keepalived 部署及實驗

keepalived部署及實驗

一、實驗部署所需服務器:
服務器名稱 ip地址 環境
負載均衡(主) 虛擬ip:192.168.1.135 Nginx,keepalived
負載均衡(備) 虛擬ip:192.168.1.135 Nginx,keepalived
Web1 192.168..133 Nginx/Tomcat
Web2 192.168.1.134 Nginx/Tomcat

二、keepalived安裝及配置
1、安裝並啓動keepalived(主、備服務器)
# yum install keepalived –y 安裝
# /etc/init.d/keepalived start 啓動
# ps –ef |grep keep 查看是否啓動成功

2、配置主服務器的keepalived.conf 配置文件

`# vim` /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
notification_email {br/>[email protected]
[email protected]
br/>[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id test01 #id 爲test01,不同的keepalived.conf這個ID要唯一
}

vrrp_instance VI_1 { #實例名字爲VI_1,相同實例的備節點名字要和這相同
state MASTER # 主節點爲 MASTER
interface eth0 # 備節點需與主相同
virtual_router_id 51 # 實例id爲51,keepalived.conf唯一
priority 100 # 備節點數值必須比這個低
advert_int 1
authentication {
auth_type PASS # 主備相同
auth_pass 1111 # 主備相同
}
virtual_ipaddress {
192.168.1.135 #虛擬ip,主備需相同
}
}

測試是否成功 # ip addr|grep 192.168.3.135,若成功則顯示如下信息:

3、配置備服務器的keepalived.conf 配置文件

`# vim /etc/keepalived/keepalived.conf``

! Configuration File for keepalived

global_defs {
notification_email {br/>[email protected]
[email protected]
br/>[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id test02 #名字與主不同
}

vrrp_instance VI_1 {
state BACKUP #備爲BACKUP
interface eth0
virtual_router_id 51 #和主相同
priority 80 #低於主
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.135
}
}

4、配置Web服務器(Nginx),主備配置相同:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;

#keepalive_timeout  0;
keepalive_timeout  65;
#定義web服務器池,包含以下兩個節點
upstream www_server_pools {
            server 192.168.1.133:80 weight=1;
            server 192.168.1.134:80 weight=1;
    }

server {
    listen  192.168.1.135:80;      #監聽vip端口
    server_name  www.test.cc;

    location / {
    proxy_pass http://www_server_pools;   

#訪問www.test.cc的請求發生給www_server_pools裏面的節點
}

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

}

主備配置完以後建議重啓一次,然後啓動nginx和keepalived,並查看監聽是否正確
測試,關掉主nginx後,能正常打開網頁,則配置成功。

三、 主備服務器切換測試
1、停掉主服務器上的keepalived服務或者關閉服務器,並查看vip狀態
ip addr|grep 192.168.1.135,vip消失。
2、切換至備服務器上,查看vip是否出現,ip addr|grep 192.168.1.135,若出現表示ip漂移成功。
注:(該配置只能自動切換服務器down機的情況,若要自動切換nginx服務掛掉,需加腳本及配置)

四、解決高可用服務針對物理服務器的問題:
keepalived只針對服務器及keepalived服務宕機纔會切換,實際工作中有時nginx服務也會出現故障,這時需藉助腳本來實現.

1、若沒有80端口存在,則停止keepalived服務實現釋放本地vip。

#!/bin/sh
while true
do
if [ ‘netstat –lntup|grep nginx|wc –l’ –ne 1]; then
/etc/init.d/keepalived stop
fi
sleep 5
done

2、可以使用keepalived的配置文件來觸發寫好的檢測服務腳本。(略)

五、keepalived腦裂問題
可以配置冗餘心跳線,並做檢測腳本
備節點上執行腳本,若可以ping同主節點並且備節點有vip就報警。

#!/bin/sh
test1ip=192.168.1.130
test1vip=192.168.1.135
while true
do
ping –c 2 –W 3 $test1ip &>/dev/null
if [$? –eq 0 –a ‘ip add|grep “$test1vip”|wc –l’ –eq 1]
then
echo “ha is split brain.waring!!!”
else
echo ”ha is ok!”
fi
sleep 5
done

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章