1. 程式人生 > >MySQL 高可用:mysql+Lvs+Keepalived 負載均衡及故障轉移

MySQL 高可用:mysql+Lvs+Keepalived 負載均衡及故障轉移

ica 目錄 details software fwm 多個 優先級 sql 服務器 規則

轉自

MySQL 高可用:mysql+Lvs+Keepalived 負載均衡及故障轉移 - KK ——專註數據 - 博客頻道 - CSDN.NET
http://blog.csdn.net/kk185800961/article/details/51115264#

系統信息:  
mysql主庫 192.168.1.152   CentOS 5.6  mysql 5.6.22   
mysql從庫 192.168.1.153   CentOS 5.6  mysql 5.6.22   
VIP         192.168.1.150  


mysql 主主同步都設置 auto-increment-offset,auto-increment-increment ,以避免自增列沖突。

參考:MySQL 高可用:主主復制(雙主復制)

LVS 下載:
http://www.linuxvirtualserver.org/software/
http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz


Keepalived 下載:
http://www.keepalived.org/software/

http://www.keepalived.org/software/keepalived-1.2.19.tar.gz

yum -y install gcc gcc-c++ gcc-g77 ncurses-devel bison libaio-devel  
cmake libnl
* libpopt* popt-static openssl-devel



# LVS 安裝配置:(yum -y install ipvsadm)

cd /usr/local/src  
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz  
tar zxvf ipvsadm-1.24.tar.gz  
cd ipvsadm-1.24  
ln -s /usr/src/kernels/2.6.18-402.el5-i686/ /usr/src/linux  #找自己的目錄看看/usr/src/kernels  
make 
&& make install


# Keepalived 安裝配置

cd /usr/local/src  
wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz  
tar zxvf keepalived-1.2.19.tar.gz  
cd keepalived-1.2.19  
./configure --prefix=/usr/local/keepalived --disable-fwmark  
make && make install  
  
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/  
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/  
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/  
  
mkdir -p /etc/keepalived/  
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ 


#編輯或者新建(主備除兩地方,其他一樣.備庫改為 :state BACKUP ,priority 50)

vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived  
  
global_defs {               #全局標識模塊  
   notification_email {     #定義郵件通知  
     test@163.com           #目標郵箱  
   }  
   notification_email_from test@163.com #發送郵箱  
   smtp_server 127.0.0.1    #發送郵箱的smtp服務器  
   smtp_connect_timeout 30  #smtp服務器連接超時時間  
   router_id LVS_DEVEL  
}  
  
vrrp_instance VI_1 {  
    state MASTER            #本實例啟動狀態:MASTER/BACKUP  
    interface eth0          #監控的網絡接口  
    virtual_router_id 51    #vrrp實例(同一個組主備服務器設置一樣)  
    priority 100            #優先級高的為master,不能超過255。(BACKUP可設置為50)  
    advert_int 1            #均衡器檢測間隔1秒(服務器設置都一樣)  
    authentication {        #驗證類型及密碼(服務器設置都一樣)  
        auth_type PASS      #認證方式,PASS或AH  
        auth_pass 123456    #認證密碼  
    }  
    virtual_ipaddress {     #虛擬ip地址virtual_ipaddress,可以定義多個  
        192.168.1.150  
    }  
}  
  
virtual_server 192.168.1.150 3306 { #定義虛擬服務器,與上面的virtual_server一樣  
    delay_loop 6            #健康檢查時間間隔,6秒  
    lb_algo rr              #負載均衡調度算法:rr|wrr|lc|wlc|sh|dh|lblc  
    lb_kind NAT             #負載均衡轉發規則:NAT|DR|TUN  
    nat_mask 255.255.255.0  
    persistence_timeout 50  #回話保持時間50秒,動態服務建議開啟  
    protocol TCP            #轉發協議protocol,一般有tcp和udp兩種  
  
    #後端真實服務器,有幾臺就設置幾個  
    real_server 192.168.1.152 3306 {  
        weight 1            #權重越大負載分越大,0表示失效  
        SSL_GET {           #健康檢查方式:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK  
            connect_timeout 3  
            nb_get_retry 3  
            delay_before_retry 3  
        }  
    }  
    real_server 192.168.1.153 3306 {  
        weight 1  
        SSL_GET {  
            connect_timeout 3  
            nb_get_retry 3  
            delay_before_retry 3  
        }  
    }  
}  

#啟動 keepalived 服務  
/etc/rc.d/init.d/keepalived start  
  
#添加到rc.local自啟動中  
echo "/etc/rc.d/init.d/keepalived start" >> /etc/rc.local

#152服務器IP  
[[email protected] keepalived]# ip a  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue   
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  
    inet 127.0.0.1/8 scope host lo  
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000  
    link/ether 00:0c:29:3b:c4:a5 brd ff:ff:ff:ff:ff:ff  
    inet 192.168.1.152/24 brd 192.168.1.255 scope global eth0  
    inet 192.168.1.150/32 scope global eth0  

#現在在第三臺mysql服務器中連接VIP測試  
  
#ping VIP 正常  
ping 192.168.1.150  
  
#連接到 VIP 正常  
mysql -umysqlproxy -pmysqlproxy -h192.168.1.150 --port3306  
  
#到 mysql 服務器 152153 查看進程,查看用戶 mysqlproxy 連接到哪臺服務器  
mysql> show processlist;  
  
#停止 mysqlproxy 所在的服務器keepalived 服務  
/etc/rc.d/init.d/keepalived stop  
  
此時在150 連接的mysql切換到另一臺服務器的mysql數據庫了。  
  
  
/etc/rc.d/init.d/keepalived start 


末尾有些測試還沒有規範,僅供參考。

更多參考:

MySQL 高可用:主主復制(雙主復制)

ipvsadm 安裝配置

mysql高可用探究(二)Lvs+Keepalived+Mysql單點寫入主主同步高可用方案

Lvs+keepalived+mysql 雙主

keepalived配置主從備份

Linux下Keepalived 安裝與配置

CentOS 5.9下安裝配置keepalived

keepalived.conf內容說明

MySQL 高可用:mysql+Lvs+Keepalived 負載均衡及故障轉移