1. 程式人生 > >keepalived+mysql主主實現高可用

keepalived+mysql主主實現高可用

keepalived+mysql

mysql主從配置參考:http://blog.51cto.com/243662875/2126015

主主配置就是互為主從

keepalived下載網址:http://www.keepalived.org/

環境

技術分享圖片

準備應用

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只需要連接到內網。

keepalived+mysql主主實現高可用