Keepalived +VIP(虛擬IP) 漂移 部署系統高可用 離線部署|故障轉移


目前需要做一個項目需要高可用    項目采用Keepalived+VIP(虛擬IP)進行一個故障轉移。Keepalived和VIP的相關知識就不在這里廢話介紹了  介紹一下當前的高可用環境實現思路。

目前有三台服務器。分別為三台服務器上部署keepalived 進行故障轉移,當用戶訪問虛擬IP時,其keepalived會判斷其優先級,主要根據監控的相關的服務端口  如

nginx 監聽的端口 80

數據庫服務端口  3306 

php-fpm的9000端口   

將優先級的進行虛擬IP(VIP)的地址漂移。使用ip a 可以查看到其綁定的虛擬IP在哪一台服務器上,或通過相關日志進行查看。

服務器相關IP配置

資源 IP 
服務器1 192.168.1.101
服務器1 192.168.1.102
服務器1 192.168.1.103

步驟一    先從部署或交付那邊拿到配置好的虛擬IP    如:192.168.1.86   

步驟二   啟動關鍵的端口服務  如  ngngx php-fpm  mysql    使用lsof -i:80   命令進行查看

步驟三  修改或新增一個keepalived的配置   如  keepalived.conf

下面貼出我的配置文件   

! Configuration File for keepalived

global_defs {
   notification_email {
	yuluolishang@qq.com	
   }
   notification_email_from yuluolishang@yisa.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   script_user root
   enable_script_security
   vrrp_skip_check_adv_addr
   #vrrp_strict
   #vrrp_iptables
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_mysql_port {
       script "</dev/tcp/127.0.0.1/3306" # connects and exits
       interval 1                      # check every second
       weight -20                       # default priority: -20 if connect fails
}

vrrp_script chk_php_port {
       script "</dev/tcp/127.0.0.1/9000" # connects and exits
       interval 1                      # check every second
       weight -20                       # default priority: -20 if connect fails
}

vrrp_script chk_nginx_port {
       script "</dev/tcp/127.0.0.1/80" # connects and exits
       interval 1                      # check every second
       weight -20                       # default priority: -20 if connect fails
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 66
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass Feipeng$
    }
    unicast_src_ip 192.168.1.101
    unicast_peer {
        192.168.1.102
        192.168.1.103
    }
    virtual_ipaddress {
        192.168.1.86/22
    }
    track_script {
       chk_mysql_port
       chk_php_port
       chk_nginx_port
    }
   
}

配置相關說明  :

state BACKUP   三台服務器都被BACKUP 角色

interface   etho   這個為該服務器的網卡名稱

virtual_router_id   虛擬路由  這個三台服務器為同一個  必須同一個

priority   100   優先級  三台服務器需一次填寫100 99 98 

authentication  認證密碼  三台服務器密碼必須設置相同  否則故障轉移不成功。

unicast_src_ip    廣播地址   即本機IP地址  

unicast_peer  廣播接收地址  即另外兩台服務器的IP地址

virtual_ipaddress   虛擬IP(VIP)地址   后面的/22 代表子網掩碼  一般與三台服務器的真實IP在同一網段中。

track_script   里面為各監控的端口腳本名稱   一行寫一個檢測

步驟四   啟動keepalived 進程   啟動故障轉移    本keepalived 為離線部署  離線包目錄結構如下:

啟動命令   /keepalived/sbin/keepalived -f /keepalived/etc/keepalived/keepalived.conf  

/keepalived/sbin/keepalived -f /keepalived/etc/keepalived/keepalived.conf  

步驟五   驗證啟動    

查看keepalived 進程是否有啟動   輸入 ps aux|grep keepalived

ps aux|grep keepalived

會輸出如下:

ps aux|grep keepalived
root     182037  0.0  0.0  44096   888 ?        Ss   17:13   0:00 /keepalived/sbin/keepalived  -f /keepalive/etc/keepalived/keepalived.conf
root     182038  0.1  0.0  44096  1308 ?        S    17:13   0:00 /keepalived/sbin/keepalived  -f /keepalive/etc/keepalived/keepalived.conf
root     182343  0.0  0.0 112812   968 pts/0    S+   17:13   0:00 grep --color=auto keepalive

    輸入ip a 查看當前漂移VIP 綁定情況

步驟六   模擬故障   比如說nginx 掛掉了   

輸入命令   pkill nginx

然后輸入lsof -i:80   此時可以得出  nginx 服務被停掉了  

pkill nginx
lsof -i:80

此時  剛才綁定的VIP的所在服務器上  此VIP不在其服務器了,而是跑到另一台服務器上綁定了VIP虛擬IP 

至此   keepalived 故障轉移部署成功!!

坑:

1.同一組故障轉移集群   virtual_router_id  虛擬路由IP 必須一樣  要不然部署不成功。

2.interface   etho  網卡名稱一定要填寫當前服務器IP的所在網卡名稱

3.若同一個局域網內,有多個keepalived 實例,keepalived兩台機器同時出現vip問題!keepalived默認為廣播,應改為單播


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM