LVS+Keepalived群集

ㅤChen發表於2020-12-13

Keepalived案例分析

企業應用中,單臺伺服器承擔應用存在單點故障的危險
單點故障一旦發生,企業服務將發生中斷,造成極大的危害

Keeppalived工具介紹

專為LVS和HA設計的一款健康檢查工具

支援故障自動切換(Failover)
支援節點健康狀態查詢(Health Checking)
官方網站:http://www.keepalived.org/

Keepalived實現原理剖析

Keppalived採用VRRP熱備份協議實現Linux伺服器的多機熱備功能

VRRP (虛擬路由冗餘協議)是針對路由器的一種備份解決方案

由多臺路由組成一個熱備組,通過共同的虛擬IP地址對外提供服務
每個熱備組內同時只有一臺主路由器提供服務,其他路由器處於冗餘狀態
若當前線上的路由器失效,則其路由器會根據設定的優先順序自動接替虛擬IP地址,繼續提供服務

Keepalived案例講解

Keepalived可實現多機熱備,每個熱備組可有多臺伺服器
雙機熱備的故障切換是由虛擬IP地址的漂移來實現,適用於各種應用伺服器
實現基於Web服務的雙擊熱備

漂移地址:192.168.10.72
主、備伺服器:192.168.10.73、192.168.10.74
提供的應用服務:Web

Keepalived安裝與啟動

在LVS群集環境中應用時,也需用到ipvsadm管理工具
YUM安裝Keepalived
啟用Keepalived服務

配置Keepalived master伺服器

Keepalived配置目錄位於/etc/keepalived/
Keepalived.conf是主配置檔案

global_defs {...}區段指定全域性引數
vrrp_instance例項名稱{...}區段指定VRRP熱備引數
註釋文字以"!"符號開頭
目錄samples,提供了許多配置樣例作為參考

常用配置選項
router_id HA_TEST_R1:本路由器(伺服器)的名稱
vrrp_instance VI_1:定義VRRP熱備例項
state MASTER:熱備狀態,MASTER表示主伺服器
interface ens33:承載VIP地址的物理介面
virtual_router_id 1:虛擬路由器的ID號,每個熱備組保持一致
priority 100:優先順序,數值越大優先順序越高
advert_int 1:通告間隔秒數(心跳頻率)
auth_type PASS:認證型別
auth_pass 123456:密碼字串
virtual_ipaddress{vip}:指定漂移地址(VIP),可以有多個

配置Keepalived slave伺服器

Keepalived備份伺服器的配置與master的配置有三個選項不同

router_id:設為自有名稱
state:設為BACKUP
priority:值低於主伺服器

其他選項與master相同

Keepalived雙機熱備效果測試

測試雙機熱備的效果

	主、備機均啟用Web服務,設定不同的內容
	先後禁用、啟用主伺服器的網路卡

執行的測試

	測試1:使用ping檢測192.168.10.72的連通性
	測試2:訪問http://192.168.10.72,確認可用性及內容變化
	測試3:檢視日誌檔案/var/log/messages中的變化

部署LVS-keepalived

部署環境

192.168.1.10 lvs01+keepalive(主)	virtual-ip 20.0.0.200
192.168.1.11 lvs02+keepalive(備)	virtual-ip 20.0.0.200
192.168.1.12 web1
192.168.1.13 web2
192.168.1.15 nfs

配置NFS儲存伺服器

安裝nfs-utils、rpcbind

在這裡插入圖片描述

建立兩個網頁

mkdir /opt/web1
mkdir /opt/web2
echo "<h1>this is web1</h1>" > /opt/web1/index.html
echo "<h1>this is web2</h1>" > /opt/web2/index.html

配置檔案、開啟服務

vi /etc/exports
systemctl restart rpcbind
systemctl restart nfs

在這裡插入圖片描述

檢視共享情況

showmount -e

web1 和web2 同樣操作

安裝httpd

在這裡插入圖片描述

掛載nfs儲存伺服器

mount 192.168.1.15:/opt/web1 /var/www/html/

啟動服務

systemctl start httpd

測試網頁

curl http://localhost

在這裡插入圖片描述

web1

vi web1.sh
sh web1.sh 

指令碼內容

#!/bin/bash
# lvs web1                
ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up    
route add -host 192.168.1.200 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null

在這裡插入圖片描述

檢視虛擬介面、路由

ifconfig
route -n

在這裡插入圖片描述
在這裡插入圖片描述

web2

vi web2.sh
sh web2.sh

指令碼內容

#!/bin/bash
# lvs web2                
ifconfig lo:0 192.168.1.200 broadcast 192.168.1.200 netmask 255.255.255.255 up    
route add -host 192.168.1.200 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null

在這裡插入圖片描述
檢視虛擬介面、路由

ifconfig
route -n

在這裡插入圖片描述
在這裡插入圖片描述

LVS1
手動載入ip_vs模組
檢視
在這裡插入圖片描述
新增keepalived-2.0.13.tar.gz

在這裡插入圖片描述

安裝依賴包

yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

解壓壓縮包

yum -y install ipvsadm
tar zxvf keepalived-2.0.13.tar.gz

開始配置

cd keepalived-2.0.13/
./configure --prefix=/

make && make install
cd keepalived/etc/init.d/
加入系統管理服務
cp keepalived /etc/init.d/
cd
設為開機自啟
systemctl enable keepalived.service
編輯配置
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_01
   }

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 110
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 6666
    }
    virtual_ipaddress {
        192.168.1.200
    }
}

virtual_server 192.168.1.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 6
    protocol TCP

    real_server 192.168.1.12 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.1.13 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get retry 3
            delay_before_retry 3
        }
    }
}

在這裡插入圖片描述
重新載入服務

systemctl daemon-reload

開啟Keepalived

systemctl start keepalived.service

在這裡插入圖片描述

LVS2
手動載入ip_vs模組

modprobe ip_vs

檢視

cat /proc/net/ip_vs
yum -y install ipvsadm

在這裡插入圖片描述

上傳 解壓

tar zxvf keepalived-2.0.13.tar.gz
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
cd keepalived-2.0.13/
./configure --prefix=/
make && make install
cp keepalived/etc/init.d/keepalived /etc/init.d/
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_02
   }

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 105
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 6666
    }
    virtual_ipaddress {
        192.168.1.200
    }
}

virtual_server 192.168.1.200 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 6
    protocol TCP

    real_server 192.168.1.12 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.1.13 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get retry 3
            delay_before_retry 3
        }
    }
}
systemctl start keepalived.service
systemctl status keepalived.service
ipaddr
發現無虛擬地址資訊,主備排程器之間存在差異

在這裡插入圖片描述
ipvsadm -Ln 檢視排程資訊

在這裡插入圖片描述

訪問瀏覽器

http://192.168.1.200

在這裡插入圖片描述

ipvsadm -Ln 檢視連線情況
ipvsadm -Lnc 檢視排程情況
在這裡插入圖片描述

在這裡插入圖片描述
測試主備自動轉換功能
在lvs1上 關掉服務
systemctl stop keepalived.service
ip addr
虛擬地址沒了
在這裡插入圖片描述

在這裡插入圖片描述

再次訪問

在這裡插入圖片描述
在這裡插入圖片描述

ipvsadm -Lnc

在這裡插入圖片描述

在web2上
關閉服務

systemctl stop httpd

在lvs02上
檢視
在這裡插入圖片描述
訪問瀏覽器

http://192.168.1.200   只會有web1

在這裡插入圖片描述
在這裡插入圖片描述

在lvs1上重啟服務

systemctl start keepalived.service
ip addr

在這裡插入圖片描述

相關文章