keepalived+mysql主主實現高可用


mysql主從配置參考我的上篇博客

主主配置就是互為主從

環境

#准備應用

keepalived-2.0.2.tar.gz
openssl-devel-1.0.2k-12.el7.x86_64.rpm

#安裝

rpm -ivh openssl-devel-1.0.2k-12.el7.x86_64.rpm
tar -zxvf keepalived-2.0.2.tar.gz
./configure --prefix=/usr/local/keepalived
make && make install

#整理文件

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ 
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p /etc/keepalived
cd /etc/keepalived

#配置主keepalived

vim keepalived.conf
global_defs {
notification_email {
        }
}

vrrp_instance VI_1 {
        state MASTER      #備服務器上改為 BACKUP
        interface ens33     #網卡
        virtual_router_id 11
        priority 100            #備用服務器上改為99
        advert_int 1
        authentication {
        auth_type PASS
        auth_pass 1111
        }
        virtual_ipaddress {
                    192.168.10.11         #VIP
        }
}

virtual_server 192.168.10.132 3306 {
    delay_loop 6         #每隔6秒檢查一次real_server狀態
    lb_algo rr             #負載調度算法rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind NAT       #負載均衡轉發規則NAT|DR|RUN
    nat_mask 255.255.255.0
    persistence_timeout 50           #回話保持時間
    protocol TCP
    real_server 192.168.10.132 3306 {
        weight 2
        notify_down "/etc/keepalived/mysql.sh"   #新建這個mysql.sh文件,輸入 pkill keepalived
        TCP_CHECK {
            connect_timeout 3
            connect_port 3306
        }
    }
}

#備keepalived配置

vim keepalived.conf
global_defs {
notification_email {
        }
}

vrrp_instance VI_1 {
        state BACKUO      #主服務器上改為 master
        interface ens33     #網卡
        virtual_router_id 11
        priority 99        #主服務器設置比備服務器數大
        advert_int 1
        authentication {
        auth_type PASS
        auth_pass 1111
        }
        virtual_ipaddress {
            192.168.10.11            #VIP
        }
}

virtual_server 192.168.10.200 3306 {
    delay_loop 6       #每隔6秒檢查一次real_server狀態
    lb_algo rr 
    lb_kind NAT
    nat_mask 255.255.255.0
    persistence_timeout 50              #回話保持時間
    protocol TCP
    real_server 192.168.10.200 3306 {
        weight 1
        notify_down "/etc/keepalived/mysql.sh"   #新建這個mysql.sh文件,輸入 pkill keepalived
        TCP_CHECK { 
            connect_timeout 3
            connect_port 3306
        }
    }
}

#創建mysql檢測腳本

vim mysql.sh

#!/bin/bash

pkill keepalived         #檢測到mysql關閉后自動關閉keepalived

以上keepalived+mysql配置完成。可以通過關閉主的mysql查看VIP是否漂移到備,關閉主的keepalived查看VIP是否漂移到備,關閉主VIP機器是否漂移到備。


關於keepalived算法說明

rr 輪詢算法,它將請求依次分配給不同的rs節點,也就是RS節點中均攤分配。這種算法簡單,但只適合於RS節點處理性能差不多的情況 wrr 加權輪訓調度,它將依據不同RS的權值分配任務。權值較高的RS將優先獲得任務,並且分配到的連接數將比權值低的RS更多。相同權值的RS得到相同數目的連接數。 Wlc 加權最小連接數調度,假設各台RS的全職依次為Wi,當前tcp連接數依次為Ti,依次去Ti/Wi為最小的RS作為下一個分配的RS Dh 目的地址哈希調度(destination hashing)以目的地址為關鍵字查找一個靜態hash表來獲得需要的RS SH 源地址哈希調度(source hashing)以源地址為關鍵字查找一個靜態hash表來獲得需要的RS Lc 最小連接數調度(least-connection),IPVS表存儲了所有活動的連接。LB會比較將連接請求發送到當前連接最少的RS. Lblc 基於地址的最小連接數調度(locality-based least-connection):將來自同一個目的地址的請求分配給同一台RS,此時這台服務器是尚未滿負荷的。否則就將這個請求分配給連接數最小的RS,並以它作為下一次分配的首先考慮。

LVS調度算法的生產環境選型:
1、一般的網絡服務,如http,mail,mysql等常用的LVS調度算法為:
        a.基本輪詢調度rr
        b.加權最小連接調度wlc
        c.加權輪詢調度wrc
2、基於局部性的最小連接lblc和帶復制的給予局部性最小連接lblcr主要適用於web cache和DB cache
3、源地址散列調度SH和目標地址散列調度DH可以結合使用在防火牆集群中,可以保證整個系統的出入口唯一。

實際適用中這些算法的適用范圍很多,工作中最好參考內核中的連接調度算法的實現原理,然后根據具體的業務需求合理的選型。

負載均衡轉發工作模式 1、DR模式: 通過改寫請求報文的目標MAC地址,將請求發送給真實服務器,而真實服務器將相應后的處理結果直接返還給客戶端用戶。極大地提高集群的伸縮性,但LB與RS必須在同一局域網環境。 2、NAT模式: 通過網絡地址轉換,LB重寫請求報文的目標地址,根據預設的調度算法,將請求分派給后端的真實服務器,真實服務器的響應報文處理之后,返回時必須通過LB,經過LB時報文的源地址被重寫,再返回給客戶。 3、隧道模式: LB把請求的報文通過IP隧道轉發至真實服務器,而真實服務器將響應處理后直接返回給客戶端用戶。 4、FULLNAT模式: 數據包進入時,除了做DNAT,還做SNAT,從而實現LVS-RealServer間可以跨vlan通訊,RealServer只需要連接到內網。


免責聲明!

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



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