GlusterFS高可用--IP Failover(五)

glusterfs高可用--IP Failover

    IP Failover原理類似於雙網卡的bond、應用的負載IP。

    1)通過ctdb實現vip訪問卷

    2)vip訪問卷的方式:不適合分佈式,只適用於複製式

    3)在分佈式環境中測試,同時創建多個文件時,

        由於glusterfs volume中故障節點的目錄未刪除,依然會往故障節點分佈數據,

        然而節點已經故障無法寫入,這時會報錯,數據丟失。

上草圖~

   image.png

這裏我們使用CTDB(cluster trivial database)實現---屬於samba裏面的東西

1、安裝CTDB包(node1、node2都安裝)

    # yum -y install ctdb

2、配置CTDB(指定給哪個卷配置CTDB)

    # cd /var/lib/glusterd/hooks/1/start/post/

    # vim S29CTDBsetup.sh

        META="v1"    #也可以寫all,所有的卷

    # cd /var/lib/glusterd/hooks/1/stop/pre

    # vim S29CTDB-teardown.sh

        META="v1"    #也可以寫all,所有的卷

3、在/etc/ctdb目錄下創建配置文件

     nodes:組成卷的所有節點IP地址

     public_addresses:設置VIP地址,指定關聯節點的網卡

        # cd /etc/ctdb

        # echo 192.168.122.101 > nodes

        # echo 192.168.122.102 >> nodes

        # echo "192.168.122.210/24 eth0" > public_addresses  #指定VIP地址;關聯節點上的哪個網卡

    # systemctl start ctdb

    # systemctl enable ctdb

    日誌文件:/var/log/log.ctdb

    節點1上查看VIP信息

    # ctdb -v ip 

        Public IPs on node 0

        192.168.122.210 node[0] active[eth0] available[eth0] configured[eth0]

    節點2上查看VIP信息

    # ctdb -v ip 

        Public IPs on node 1

        192.168.122.210 node[0] active[] available[eth0] configured[eth0]

4、安裝samba包

    # yum -y install samba

    # vim /etc/samba/smb.conf

        workgroup = MYGROUP

        server string = Samba Server Version %v

        clustering = yes     #增加這行

5、停止卷    

    # gluster volume stop v1

6、關閉stat-prefetch預取功能

    # gluster volume set v1 stat-prefetch off

7、開啓非安全訪問模式

    # gluster volume set v1 server.allow-insecure on 

8、啓動samba、設置開機自啓

    # systemctl restart smb

    # systemctl enable smb

9、啓動卷

    # gluster volume start v1

    # gluster volume info v1

        Volume Name: v1

        Type: Distribute

        Status: Started

        Brick1: node1:/xx/data

        Brick2: node2:/yy/data

        Options Reconfigured:

        server.allow-insecure: on

        performance.stat-prefetch: off

        performance.readdir-ahead: on

10、客戶端掛載測試

    # showmount -e 192.168.122.210

        Export list for 192.168.122.210:

        /v1 *

    # mount 192.168.122.210:/v1 /mnt

    # touch /mnt/aa{1..10}

    節點1上查看

    # ls /xx/data/

        aa1  aa3  aa4  aa8

    節點2上查看

    # ls /yy/data/

        aa10  aa2  aa5  aa6  aa7  aa9  lockfile

11、模擬node1故障

    # shutdown -h now

    注意:節點故障時,會有個切換過程,會出現閃斷

    節點2上查看VIP信息

    # ctdb -v ip

        Public IPs on node 1

        192.168.122.210 node[1] active[eth0] available[eth0] configured[eth0]

    節點2上查看數據(node1中的數據不會遷移,數據丟失)

    # ls /yy/data/

        aa10  aa2  aa5  aa6  aa7  aa9  lockfile

    客戶端測試:繼續寫入創建單個文件時正常,同時創建多個文件時報錯

    # touch /mnt/bb

    # touch /mnt/cc

    # touch /mnt/dd{1..10}     #部分文件寫入報錯,丟失

       touch: 無法創建"/mnt/dd3": 輸入/輸出錯誤

       touch: 無法創建"/mnt/dd5": 輸入/輸出錯誤

       touch: 無法創建"/mnt/dd6": 輸入/輸出錯誤

       touch: 無法創建"/mnt/dd7": 輸入/輸出錯誤

    結論:

        由於gluster volume未刪除故障節點的目錄,

        在多個文件同時寫入時,依然會使用分佈的方式,

        而此時故障節點的目錄已經不能訪問了,所以分配給故障節點的文件報錯,丟失。

        

        這種vip訪問卷的方式,不適用於分佈式環境,只適用於複製式。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章