keepalived+mysql主主實現高可用

mysql主從配置參考個人上篇博客mysql

主主配置就是互爲主從web

環境算法

keepalived+mysql主主實現高可用

準備應用sql

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

安裝vim

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

配置主keepalivedbash

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調度算法的生產環境選型:
一、通常的網絡服務,如http,mail,mysql等經常使用的LVS調度算法爲:
        a.基本輪詢調度rr
        b.加權最小鏈接調度wlc
        c.加權輪詢調度wrc
二、基於局部性的最小鏈接lblc和帶複製的給予局部性最小鏈接lblcr主要適用於web cache和DB cache
三、源地址散列調度SH和目標地址散列調度DH能夠結合使用在防火牆集羣中,能夠保證整個系統的出入口惟一。

實際適用中這些算法的適用範圍不少,工做中最好參考內核中的鏈接調度算法的實現原理,而後根據具體的業務需求合理的選型。

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

相關文章
相關標籤/搜索