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

  1. #!/bin/bash
  2. #監控本地目錄,有變動則輸出一下
  3. inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib /mnt/server/ | while read file
  4. do
  5. #將本地同步到遠程目錄,這里要根據實際情況修改
  6. rsync -avz --delete /mnt/server/ root@192.168.1.1:/mnt/server/
  7. echo " ${file} was rsynced" >>/tmp/rsync.log 2>&1
  8. 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

  1. ! Configuration File for keepalived
  2. global_defs { #全局配置
  3. router_id lb01 #路由id號,不能重復
  4. }
  5. vrrp_script nfs #vrrp腳本命名
  6. {
  7. script "/etc/keepalived/check_nfs.sh" #要執行的腳本
  8. interval 2 #腳本指定間隔
  9. weight -40 #優先級(如果腳本執行結果為0,並且weight配置的值大於0,則優先級相應的增加,如果腳本執行結果非0,並且weight配置的值小於0,則優先級相應的減少)
  10. }
  11. vrrp_instance VI_1 { #定義一個實例
  12. state MASTER #態參數 master/backup 只是說明,具體根據優先級
  13. interface eth0 #虛IP地址放置的網卡位置
  14. virtual_router_id 51 #同一個集群id一致
  15. priority 100 #優先級決定是主還是備 越大越優先
  16. advert_int 1 #主備通訊時間間隔
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111 #認證號,集群中要一致
  20. }
  21. virtual_ipaddress {
  22. 192.168.1.3 #使用的虛擬ip,要和網段內ip不沖突
  23. }
  24. }

備份nfs配置文件,這是不一樣的

  1. ! Configuration File for keepalived
  2. global_defs { #全局配置
  3. router_id lb02 #路由id號,不能重復
  4. }
  5. vrrp_script nfs #vrrp腳本命名
  6. {
  7. script "/etc/keepalived/check_nfs.sh" #要執行的腳本
  8. interval 2 #腳本指定間隔
  9. weight -40 #優先級(如果腳本執行結果為0,並且weight配置的值大於0,則優先級相應的增加,如果腳本執行結果非0,並且weight配置的值小於0,則優先級相應的減少)
  10. }
  11. vrrp_instance VI_1 { #定義一個實例
  12. state BACKUP #態參數 master/backup 只是說明,具體根據優先級
  13. interface eth0 #虛IP地址放置的網卡位置
  14. virtual_router_id 51 #同一個集群id一致
  15. priority 80 #優先級決定是主還是備 越大越優先
  16. advert_int 1 #主備通訊時間間隔
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111 #認證號,集群中要一致
  20. }
  21. virtual_ipaddress {
  22. 192.168.1.3 #使用的虛擬ip,要和網段內ip不沖突
  23. }
  24. }

3.編寫檢查腳本
vim /etc/keepalived/check_nfs.sh

  1. #!/bin/bash
  2. #nfs服務檢測腳本,服務不存在則返回1
  3. A=`ps -aux | grep '\[nfsd\]' | wc -l`
  4. if [ $A -eq 0 ];then
  5. exit 1 #測試的時候可以加一個echo 1
  6. fi

添加權限
chmod +x /etc/keepalived/check_nfs.sh

4.測試
systemctl start keepalived

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


免責聲明!

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



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