高可用——Keepalived安裝部署使用詳解


關注微信公眾號:CodingTechWork,一起學習進步。
在這里插入圖片描述

keepalived介紹

  keepalived是基於VRRP(Virtual Router Redundancy Protocol ,虛擬路由器冗余協議)協議實現的LVS(LinuxVirtual Server ,Linux虛擬服務器)服務高可用方案。主要提供了負載均衡和高可用功能,用來避免單點故障。負載均衡是通過linux的IPVS(ip虛擬服務器)實現,高可用通過VRRP實現多機故障轉移。
  keepalived一般是2個節點運行keepalived,一台是主節點(MASTER),一台是備節點(BACKUP)對外表現都是一個虛擬IP,主節點會發送特定的消息給備節點,如果備節點收不到這個特定消息時,說明主節點就宕機了,此時備節點就會接管虛擬IP進行服務提供,這就實現了高可用。

keepalived使用架構圖

在這里插入圖片描述
將keepalived和nginx部署在一台服務器。

keepalived高可用故障切換轉移

  keepalived是基於VRRP協議來實現高可用的,有兩種模式,一種是搶占模式(默認使用),另一種是非搶占模式,需配置nopreempt,在后面的keepalived配置文件詳解中我們會講到。當使用搶占模式的時候,這是一種競選機制進行通信,主節點優先級大於備節點優先級。當主節點宕機的時候,可以切到備節點進行提供服務。

搶占模式原理如下

  1. keepalived正常工作的時候,MASTER主節點會向BACKUP備節點不斷的發送特定消息(多播心跳消息),就是一種健康檢查機制,告訴備節點“我還活着,虛擬IP我來管就行了!”。
  2. 當主節點發生故障出現宕機情況的時候,無法向備節點發送心跳信息,備節點無法收到主節點的健康檢查心跳信息,這個時候,備節點終於轉正了,機會來了,就接管虛擬IP進行服務提供。
  3. 當主節點故障恢復后,又不斷的發送心跳給備節點,告知“我現在活着呢,我來管虛擬IP”,備節點就會釋放主節點宕機時所接管的IP資源以及服務,默默的做回一個備胎

keepalived安裝部署

yum安裝keepalived

$ yum install -y keepalived
在這里插入圖片描述

查看keepalived版本

[root@keepalived /etc/keepalived]#  keepalived -v
Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2

Copyright(C) 2001-2017 Alexandre Cassen, <acassen@gmail.com>

Build options:  PIPE2 LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_PREF FRA_OIFNAME FRA_SUPPRESS_PREFIXLEN FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK LIBIPTC LIBIPSET_DYNAMIC LVS LIBIPVS_NETLINK VRRP VRRP_AUTH VRRP_VMAC SOCK_NONBLOCK SOCK_CLOEXEC FIB_ROUTING INET6_ADDR_GEN_MODE SNMP_V3_FOR_V2 SNMP SNMP_KEEPALIVED SNMP_CHECKER SNMP_RFC SNMP_RFCV2 SNMP_RFCV3 SO_MARK

更改keepalived配置

$ cd /etc/keepalived
$ vim keepalived.conf
主要修改分配的虛擬ip地址等配置。

啟動keepalived

$ systemctl start keepalived.service 或者 $ service keepalived start
其他相關命令
1)重啟:
$ systemctl restart keepalived.service
2)停止:
$ systemctl stop keepalived.service
3)狀態:
$ systemctl status keepalived.service
4)設置開機啟動:
$ chkconfig keepalived on

查看keepalived狀態

$ systemctl status keepalived.service
在這里插入圖片描述

查看keepalived進程

$ ps -ef | grep keepalived
在這里插入圖片描述

查看ip列表

$ ip add show
在這里插入圖片描述

訪問

配置好keepalived啟動后,我們就可以通過10.139.1.1這個VIP進行服務的訪問。

keepalived高可用配置文件詳解

主節點

! Configuration File for keepalived

global_defs {
   # notification_email { # 郵件通知,一般不用
   #   test1@163.com
   #   test2@163.com
   # }
   # notification_email_from test@163.com
   router_id hostname1 # 標識本節點的字符串,設置為hostname即可
}

vrrp_instance VI_1 {
    state MASTER	# 標識主節點服務(只有MASTER和BACKUP兩種,大寫)
    interface eth0	# VIP板頂的網卡接口
    virtual_router_id 51	# 虛擬路由id,和備節點保持一致
    priority 100	# 優先級,高於備節點的即可。
    # nopreempt		# 禁止MASTER宕機恢復后搶占服務
    # smtp_alert		# 激活故障時發送郵件告警
    mcast_src_ip 10.139.1.10	# 本機IP地址
    advert_int 1	# MASTER和BACKUP節點之間的同步檢查時間間隔,單位為秒
    authentication {	# 驗證類型和驗證密碼
        auth_type PASS	# PAAS(默認),HA
        auth_pass 1111	# MASTER和BACKUP使用相同明文才可以互通
    }
    virtual_ipaddress {	# 虛擬IP地址池,可以多個IP
        10.139.1.1 # 虛擬IP1(VIP)
        10.139.1.2 # 虛擬IP2(VIP)
    }
}

備節點

除了注釋#以外,其他都和主節點保持一致。

! Configuration File for keepalived

global_defs {
   router_id hostname2 # 標識本節點的字符串,設置為hostname即可
}

vrrp_instance VI_1 {
    state BACKUP	# 標識主節點服務(只有MASTER和BACKUP兩種,大寫)
    interface eth0	
    virtual_router_id 51	
    priority 99	# 優先級,高於備節點的即可。
    mcast_src_ip 10.139.1.11	# 本機IP地址
    advert_int 1	
    authentication {	
        auth_type PASS	
        auth_pass 1111	
    }
    virtual_ipaddress {	
        10.139.1.1
        10.139.1.2 
    }
}


免責聲明!

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



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