構建高可用伺服器之三 Keepalive均衡Mysql

來源:互聯網
上載者:User

標籤:mysql   高可用   keepalive   

實驗目的:

   通過Keepalive來構建Mysql的高可用。Mysql已做主從,當一台Mysql宕機的時候不影響對Mysql的調用。

實驗環境:

  兩台Mysql伺服器(基於LAMP且已做主從),兩台Mysql伺服器都通過Apache發布Discuz論壇(discuz調用的是主mysql地址)。

身份            主機名稱      IP地址

主Mysql           master      192.168.1.3

從Myslq           slave        192.168.1.4

LAMP平台請參見<<搭建Discuz論壇的兩種方式>>

Mysql主從參見<<構建Mysql三部曲之三 主從案例>>

實驗步驟:

一、在主mysql上安裝配置keepalive

[[email protected] ~]# bash keepalive_install.sh

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6D/1D/wKiom1VcUVix6gI6AAMDYWrXRzw071.jpg" title="1.png" style="float:none;" alt="wKiom1VcUVix6gI6AAMDYWrXRzw071.jpg" />

“指令碼”內容如下:

[[email protected] ~]# cat keepalive_install.sh#!/bin/bashyum -y  install kernel-devel openssl-devel  popt-devel &&wgethttp://www.keepalived.org/software/keepalived-1.1.15.tar.gz &&tar -zxf keepalived-1.1.15.tar.gz &&cd keepalived-1.1.15 &&./configure--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ &&make && make install &&DIR=/usr/local/cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/  &&cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/&& mkdir -p /etc/keepalived &&cp $DIR/sbin/keepalived/usr/sbin/&&cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ &&/etc/init.d/keepalived restartif [ $? -eq 0 ];then        echo -e ‘\e[32mInstall Keepalive Successfully!\e[0m‘else        echo -e ‘\e[31mInstall Keepalive Failure!\e[0m‘fi

載入ip_vs的核心模組

[[email protected] ~]# modprobe ip_vs[[email protected]~]# modprobe ip_vs_wrr[[email protected]~]# modprobe ip_vs_rr

修改keepalived.conf設定檔如下:

[[email protected] ~]# vim /etc/keepalived/keepalived.conf[[email protected] ~]# cat/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {  notification_email {         [email protected]   }  notification_email_from [email protected]  smtp_server 127.0.0.1  smtp_connect_timeout 30  router_id LVS_DEVEL} vrrp_instance VI_1 {   state MASTER   interface eth0   virtual_router_id 51   priority 100   advert_int 1   authentication {       auth_type PASS       auth_pass 1111    }   virtual_ipaddress {         192.168.1.77    }} virtual_server 192.168.1.77 3306 {   delay_loop 6   lb_algo wrr   lb_kind DR   persistence_timeout 50   protocol TCP    real_server 192.168.1.3 3306 {       weight 1         notify_down/data/sh/ keepalive_stop.sh       TCP_CHECK {           connect_timeout 3           nb_get_retry 3           delay_before_retry 3             connect_port 3306       }    }}
[[email protected] ~]# mkdir -p /data/sh[[email protected] ~]# vim/data/sh/keepalive_stop.sh[[email protected] ~]# chmod +x /data/sh/keepalive_stop.sh[[email protected] ~]# /etc/init.d/keepalivedreloadReloading keepalived:                                      [  OK  ][[email protected] ~]# cat/data/sh/keepalive_stop.sh#!/bin/bash/etc/init.d/keepalived stop[[email protected] ~]#


二、在從mysql上安裝配置keepalive

[[email protected] ~]# bash keepalive_install.sh

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6D/1D/wKiom1VcUViQFeiwAAMAvbyK6dM432.jpg" title="2.png" style="float:none;" alt="wKiom1VcUViQFeiwAAMAvbyK6dM432.jpg" />

“指令碼”內容如下,同master上執行的指令碼一致(非嚴格意義上的指令碼,安裝命令放一起而已)。

[[email protected] ~]# cat keepalive_install.sh#!/bin/bashyum -y install  kernel-developenssl-devel  popt-devel &&wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz&&tar -zxf keepalived-1.1.15.tar.gz &&cd keepalived-1.1.15 &&./configure--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ &&make && make install &&DIR=/usr/local/cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/  &&cp $DIR/etc/sysconfig/keepalived/etc/sysconfig/ && mkdir -p /etc/keepalived &&cp $DIR/sbin/keepalived/usr/sbin/&&cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ &&/etc/init.d/keepalived restartif [ $? -eq 0 ];then        echo -e ‘\e[32mInstall Keepalive Successfully!\e[0m‘else        echo -e ‘\e[31mInstall Keepalive Failure!\e[0m‘fi[[email protected] ~]#

載入ip_vs的核心模組

[[email protected] ~]# modprobe ip_vs[[email protected] ~]# modprobe ip_vs_wrr[[email protected] ~]# modprobe ip_vs_rr

修改keepalived.conf設定檔如下

[[email protected] ~]# vim/etc/keepalived/keepalived.conf[[email protected] ~]# cat/etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {  notification_email {         [email protected]   }  notification_email_from [email protected]  smtp_server 127.0.0.1  smtp_connect_timeout 30  router_id LVS_DEVEL} vrrp_instance VI_1 {   state BACKUP    !此處同master不一樣   interface eth0   virtual_router_id 51   priority 90     !優先順序比master上低   advert_int 1    authentication{       auth_type PASS       auth_pass 1111    }   virtual_ipaddress {         192.168.1.77    }} virtual_server 192.168.1.77 3306 {   delay_loop 6   lb_algo wrr   lb_kind DR   nat_mask 255.255.255.0   persistence_timeout 50    protocol TCP    real_server 192.168.1.4 3306 { !Slave上的IP       weight 1         notify_down/data/sh/keepalive_stop.sh       TCP_CHECK {           connect_timeout 3           nb_get_retry 3           delay_before_retry 3             connect_port 3306       }    }}
[[email protected] ~]#[email protected] ~]# mkdir -p /data/sh[[email protected] ~]# vim/data/sh/keepalive_stop.sh[[email protected] ~]# chmod +x/data/sh/keepalive_stop.sh[[email protected] ~]# /etc/init.d/keepalivedreloadReloading keepalived:                                      [  OK  ][[email protected] ~]# cat/data/sh/keepalive_stop.sh#!/bin/bash/etc/init.d/keepalived stop[[email protected] ~]#

三、修改Discuz論壇資料庫連接IP為VIP

直接存取master上的192.168.1.3論壇是可以訪問的,且直接存取slave上的192.168.1.4論壇也是可以訪問的,現在我們直接存取VIP(虛擬IP) 192.168.1.77依舊可以訪問論壇。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6D/17/wKioL1VcUtPSWZQ7AAM64OwyBqg115.jpg" title="3.png" style="float:none;" alt="wKioL1VcUtPSWZQ7AAM64OwyBqg115.jpg" />

這個時候因為discuz調用的是master上的資料庫IP,所以我們應該讓其調用VIP     192.168.1.77,這樣才能保證在主掛的時候自動切換到從上。

在master

[[email protected] ~]#sed -i ‘s/192.168.1.3/192.168.1.77/‘/usr/local/apache/htdocs/config/config_global.php[[email protected] ~]#/usr/local/apache/bin/apachectl restart

在slave

[[email protected] ~]#sed -i ‘s/192.168.1.3/192.168.1.77/‘/usr/local/apache/htdocs/config/config_global.php[[email protected] ~]#/usr/local/apache/bin/apachectl restart


四、測試

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/6D/1D/wKiom1VcUVmSIFOeAAE085AoVaU398.jpg" title="4.png" style="float:none;" alt="wKiom1VcUVmSIFOeAAE085AoVaU398.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6D/17/wKioL1VcUtPDmo-JAADg29wc5rc322.jpg" title="5.png" style="float:none;" alt="wKioL1VcUtPDmo-JAADg29wc5rc322.jpg" />

上邊兩個圖很明顯可以看出此時VIP在master上。

手動類比master上的mysql關閉

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/6D/1D/wKiom1VcUVqjIT_uAAMB8Um51w4975.jpg" title="6.png" style="float:none;" alt="wKiom1VcUVqjIT_uAAMB8Um51w4975.jpg" />


VIP自動漂到slave上

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6D/17/wKioL1VcUtSyGjSvAAEx6to-bjA380.jpg" title="7.png" style="float:none;" alt="wKioL1VcUtSyGjSvAAEx6to-bjA380.jpg" />


論壇依舊可以訪問

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/6D/1D/wKiom1VcUVvAkEFKAAI_A0bWLEc647.jpg" style="float:none;" title="8.png" alt="wKiom1VcUVvAkEFKAAI_A0bWLEc647.jpg" />



本文出自 “一步步踏入Linux世界” 部落格,請務必保留此出處http://linuxnote.blog.51cto.com/9876511/1653242

構建高可用伺服器之三 Keepalive均衡Mysql

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.