keepalived配置虛擬ip(vip)實現雙機熱備以及自動切換主備


背景:為什么做這個事情,寫這個文章

我們項目的域名指向的是172.22.90.239,但實際上我們沒這台機器,這是個虛擬ip,只有172.22.90.230,請求239為什么實際指向的是230機器?

和之前的運維溝通過,他們也不記得了。幾年前的老運維做的。只聽他們口中說出一名詞:keepalived&VIP,百度了一波學習。

實操過程

物理機准備:172.22.90.171和172.22.90.170兩台

1.安裝keepalived(兩台都要裝):

yum install keepalived

2.修改配置文件,刪除掉/etc/keepalived/keepalived.conf,然后重新創建一個/etc/keepalived/keepalived.conf

vi /etc/keepalived/keepalived.conf

172.22.90.171配置:

global_defs {
notification_email {
    rdg_datahub@xxx.com #故障聯系人
 }
 
notification_email_from  rdg_datahub@xxx.com  #故障發送人
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_MASTER     #BACKUP上修改為LVS_BACKUP
 }
 

vrrp_script chk_nginx {
     script "/etc/keepalived/nginx_check.sh"    # 檢測nginx狀態的腳本路徑
     interval 1                    # 檢測時間間隔1s
     weight -2                   # 如果腳本的條件成立,權重-2
  }

  vrrp_instance VI_1 {
      state MASTER                # 服務狀態;MASTER(工作狀態)BACKUP(備用狀態)
      interface bond0              # VIP綁定網卡
      virtual_router_id 74        # 虛擬路由ID,主、備節點必須一致
      mcast_src_ip 172.22.90.171  # 本機IP
      nopreempt                   # 優先級高的設置,解決異常回復后再次搶占的問題
      priority 100                # 優先級;取值范圍:0~254;MASTER > BACKUP
      advert_int 1                # 組播信息發送間隔,主、備節點必須一致,默認1s
      authentication {            # 驗證信息;主、備節點必須一致
          auth_type PASS          # VRRP驗證類型,PASS、AH兩種
          auth_pass 1111          # VRRP驗證密碼,在同一個vrrp_instance下,主、從必須使用相同的密碼才能正常通信
      }
       track_script {             # 將track_script塊加入instance配置塊
          chk_nginx               # 執行Nginx監控的服務
      }
      virtual_ipaddress {         # 虛擬IP池,主、備節點必須一致,可以定義多個VIP
          172.22.90.237           # 虛擬IP
      }
  }

172.22.90.170配置:

global_defs {
notification_email {
    rdg_datahub@xxx.com #故障聯系人
 }
 
notification_email_from  rdg_datahub@xxx.com  #故障發送人
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_BACKUP     #BACKUP上修改為LVS_BACKUP
 }
 

vrrp_script chk_nginx {
     script "/etc/keepalived/nginx_check.sh"    # 檢測nginx狀態的腳本路徑
     interval 1                    # 檢測時間間隔1s
     weight -2                   # 如果腳本的條件成立,權重-2
  }

  vrrp_instance VI_1 {
      state BACKUP                # 服務狀態;MASTER(工作狀態)BACKUP(備用狀態)
      interface bond0              # VIP綁定網卡,先ifconfig查看下當前使用的網卡
      virtual_router_id 74        # 虛擬路由ID,主、備節點必須一致,表示在一個集群內
      mcast_src_ip 172.22.90.170  # 本機IP
      nopreempt                   # 優先級高的設置,解決異常回復后再次搶占的問題
      priority 90                # 優先級;取值范圍:0~254;MASTER > BACKUP,如果都是BACKUP,那就是數值大的是主
      advert_int 1                # 組播信息發送間隔,主、備節點必須一致,默認1s
      authentication {            # 驗證信息;主、備節點必須一致
          auth_type PASS          # VRRP驗證類型,PASS、AH兩種
          auth_pass 1111          # VRRP驗證密碼,在同一個vrrp_instance下,主、從必須使用相同的密碼才能正常通信
      }
       track_script {             # 將track_script塊加入instance配置塊
          chk_nginx               # 執行Nginx監控的服務
      }
      virtual_ipaddress {         # 虛擬IP池,主、備節點必須一致,可以定義多個VIP
          172.22.90.237           # 虛擬IP
      }
  }

3.修改好配置文件之后,重啟兩台機器的keepalived:

systemctl restart keepalived

4、最后可以測試一波

停掉主的keepalived服務:systemctl stop keepalived 切關閉nginx測試一波

最后再強調一點:如果域名綁定的是一個nginx,單點故障不安全,可以用keepalived做高可用,綁定2台機器。

備注:centos6機器不支持systemctl 、可以使用/etc/init.d/keepalived restart

結束!


免責聲明!

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



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