1. 程式人生 > 其它 >keepalived配置nfs高可用

keepalived配置nfs高可用

目錄

一.簡介

NFS是單點的,如果一個節點出現問題,那使用它掛載服務的都將出現問題。所以需要高可用,掛掉一臺不影響。
採用keepalived+rsync+inotify-tools

環境:ubuntu16.4
nfs1 192.168.1.1 /mnt/server
nfs2 192.168.1.2 /mnt/server

虛擬地址 192.168.1.3

二.操作

基本配置

1.機器之間新增信任關係免密碼登入,安裝nfs

2.有三項輸出,則表示預設支援inotify,可以安裝inotify-tools工具.
ll /proc/sys/fs/inotify

-rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches

同步配置(2臺伺服器均操作)

1.編寫指令碼
vim sync_nfs.sh

#!/bin/bash

#監控本地目錄,有變動則輸出一下
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib /mnt/server/ |  while read file
do
	#將本地同步到遠端目錄,這裡要根據實際情況修改
    rsync -avz --delete  /mnt/server/ [email protected]:/mnt/server/
    echo "  ${file} was rsynced" >>/tmp/rsync.log 2>&1
done

2.新增許可權並執行
chmod +x sync_nfs.sh
nohup inotify_bak.sh &

3.檢視日誌
tail -f /tmp/rsync.log

4.提示
如果是主備模式,則一個指令碼直接同步即可,如果是雙方做備份,則要寫2個指令碼進行互相同步

主備切換(均操作)

1.安裝keepalived
apt-get install keepalived -y

2.編寫檔案,預設可能沒有配置檔案,直接新建即可
vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs { #全域性配置
   router_id lb01 #路由id號,不能重複
}

vrrp_script nfs  #vrrp指令碼命名
{
    script "/etc/keepalived/check_nfs.sh" #要執行的指令碼
    interval 2 #指令碼指定間隔
    weight -40   #優先順序(如果指令碼執行結果為0,並且weight配置的值大於0,則優先順序相應的增加,如果指令碼執行結果非0,並且weight配置的值小於0,則優先順序相應的減少)
}

vrrp_instance VI_1 { #定義一個例項
    state MASTER #態引數 master/backup 只是說明,具體根據優先順序
    interface eth0 #虛IP地址放置的網絡卡位置
    virtual_router_id 51 #同一個叢集id一致
    priority 100 #優先順序決定是主還是備    越大越優先
    advert_int 1 #主備通訊時間間隔
    authentication {
        auth_type PASS
        auth_pass 1111 #認證號,叢集中要一致
    }
    virtual_ipaddress {
        192.168.1.3 #使用的虛擬ip,要和網段內ip不衝突
    }
}

備份nfs配置檔案,這是不一樣的

! Configuration File for keepalived

global_defs { #全域性配置
   router_id lb02 #路由id號,不能重複
}

vrrp_script nfs  #vrrp指令碼命名
{
    script "/etc/keepalived/check_nfs.sh" #要執行的指令碼
    interval 2 #指令碼指定間隔
    weight -40   #優先順序(如果指令碼執行結果為0,並且weight配置的值大於0,則優先順序相應的增加,如果指令碼執行結果非0,並且weight配置的值小於0,則優先順序相應的減少)
}

vrrp_instance VI_1 { #定義一個例項
    state BACKUP #態引數 master/backup 只是說明,具體根據優先順序
    interface eth0 #虛IP地址放置的網絡卡位置
    virtual_router_id 51 #同一個叢集id一致
    priority 80 #優先順序決定是主還是備    越大越優先
    advert_int 1 #主備通訊時間間隔
    authentication {
        auth_type PASS
        auth_pass 1111 #認證號,叢集中要一致
    }
    virtual_ipaddress {
        192.168.1.3 #使用的虛擬ip,要和網段內ip不衝突
    }
}

3.編寫檢查指令碼
vim /etc/keepalived/check_nfs.sh

#!/bin/bash
#nfs服務檢測指令碼,服務不存在則返回1

A=`ps -aux | grep '\[nfsd\]' | wc -l`
if [ $A -eq 0 ];then
	exit 1 #測試的時候可以加一個echo 1
fi

新增許可權
chmod +x /etc/keepalived/check_nfs.sh

4.測試
systemctl start keepalived

檢視是否有配置的虛擬ip,ping一下試試,只會在主上面出現
ip addr

本文版權歸作者所有,歡迎轉載,請務必新增原文連結。