最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用

這篇文章主要為大家展示了“如何搭建Heartbeat+DRBD+MySQL+Lvs+Keepalived高可用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用”這篇文章吧。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供西豐網(wǎng)站建設(shè)、西豐做網(wǎng)站、西豐網(wǎng)站設(shè)計(jì)、西豐網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、西豐企業(yè)網(wǎng)站模板建站服務(wù),十多年西豐做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

 環(huán)境介紹:

主節(jié)點(diǎn)mysql1:192.168.9.25 

主節(jié)點(diǎn)mysql2:192.168.9.26

Heartbeat的寫的VIP:192.168.9.231

LVS1:192.168.9.27

LVS2:192.168.9.28

keepalived 分發(fā)的VIP:192.168.9.230

要分發(fā)的mysql1: 192.168.9.29

要分發(fā)的mysql2:192.168.9.30

整體安裝注意:1,drbd的兩個(gè)節(jié)點(diǎn),同一時(shí)期只有那個(gè)主節(jié)點(diǎn)能掛載盤DRBD的那個(gè)盤,2,把MySQL的數(shù)據(jù)文件,日志文件,臨時(shí)文件目錄要寫到DRBD那個(gè)盤也就是datadir ,tmpdir ,log_error, log-bin 這幾個(gè)參數(shù)。3,關(guān)于MySQL的配置文件(/etc/my.cnf)

也應(yīng)該放到drdb的那個(gè)盤上,并且把主節(jié)點(diǎn)和從節(jié)點(diǎn)上/etc目錄下的my.cnf刪掉,但是必須要建立軟連接,到/etc/my.cnf。4,lvs+keepalived 架構(gòu)中,lvs實(shí)現(xiàn)分發(fā),keepalived實(shí)現(xiàn)lvs的高可用,keepalived配置里vip,作為分發(fā)的vip.

 

 

heartbeat+drbd搭建流程:
    如果主服務(wù)器宕機(jī),造成的損失是不可估量的。要保證主服務(wù)器不間斷服務(wù),就需要對(duì)服務(wù)器實(shí)現(xiàn)冗余。在眾多的實(shí)現(xiàn)服務(wù)器冗余的解決方案中,heartbeat為我們提供了廉價(jià)的、可伸縮的高可用集群方案。我們通過heartbeat+drbd在Linux下創(chuàng)建一個(gè)高可用(HA)的集群服務(wù)器。
         DRBD是一種塊設(shè)備,可以被用于高可用(HA)之中。它類似于一個(gè)網(wǎng)絡(luò)RAID-1功能。當(dāng)你將數(shù)據(jù)寫入本地文件系統(tǒng)時(shí),數(shù)據(jù)還將會(huì)被發(fā)送到網(wǎng)絡(luò)中另一臺(tái)主機(jī)上。以相同的形式記錄在一個(gè)文件系統(tǒng)中。本地(主節(jié)點(diǎn))與遠(yuǎn)程主機(jī)(備節(jié)點(diǎn))的數(shù)據(jù)可以保證實(shí)時(shí)同步。當(dāng)本地系統(tǒng)出現(xiàn)故障時(shí),遠(yuǎn)程主機(jī)上還會(huì)保留有一份相同的數(shù)據(jù),可以繼續(xù)使用。在高可用(HA)中使用DRBD功能,可以代替使用一個(gè)共享盤陣。因?yàn)閿?shù)據(jù)同時(shí)存在于本地主機(jī)和遠(yuǎn)程主機(jī)上。切換時(shí),遠(yuǎn)程主機(jī)只要使用它上面的那份備份數(shù)據(jù),就可以繼續(xù)進(jìn)行服務(wù)了

   heartbeat 實(shí)現(xiàn)當(dāng)本地節(jié)點(diǎn)出問題后,自動(dòng)檢測(cè)出來,并且完成主備切換,實(shí)現(xiàn)高可用,

 區(qū)別于MHA: mha 中從change 的時(shí)候指向的是真的IP。而DRBD指向的vip

1,DRBD的部署(兩個(gè)主節(jié)點(diǎn)都要部署)

DRBD的安裝,centOS6.5自帶的yum沒有drbd和Heartbeat的包,需要更新yum源,再安裝,步驟如下:
[root@master2 ~]# yum install kernel-devel  ##升級(jí)內(nèi)核
[root@master2 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm   ## centOS6的第三方工具包集
[root@master2 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-5-5.el5.elrepo.noarch.rpm如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用  ## centOS5的第三方工具包集
[root@master2 ~]# yum -y install drbd83-utils kmod-drbd83
[root@master2 ~]# modprobe drbd         #加載DRBD。執(zhí)行該命令如果報(bào)錯(cuò),將系統(tǒng)重啟后再執(zhí)行。
[root@master2 ~]#  lsmod |grep drbd

drbd                  332493  4       #顯示此條信息,說明drbd加載成功

2,DRBD的配置

配置之前需要先使用fdisk -l或df -v看下系統(tǒng)的分區(qū)情況,這里用到系統(tǒng)現(xiàn)有的/dev/sdb分區(qū)做為drbd的配置。

2 . 對(duì)于DRBD的配置,配置/etc/drbd.conf和hosts文件,dbserver1和dbserver2的hosts添加的內(nèi)容如下:

[root@master1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.9.25    master1
192.168.9.26    master2

3.  #配置/etc/sysconfig/network文件,該文件兩邊配置

[root@master1 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=master1 、master2

4.  /etc/drbd.conf文件的內(nèi)容如下(dbserver1和dbserver2的配置一樣):

[root@master1 ~]# cat  /etc/drbd.conf               ##注意真正配置的時(shí)候,要把##注釋的東西刪掉。

# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

#include "drbd.d/global_common.conf";

#include "drbd.d/*.res";

global { usage-count yes; }

common { syncer { rate 10M; } }                 ###設(shè)置主,備節(jié)點(diǎn)同步的的網(wǎng)絡(luò)速率最大值,單位是字節(jié)

resource r1 {                                 

        protocol C;                          ##使用drbd的第三種同步協(xié)議,表示收到遠(yuǎn)程主機(jī)的寫入確認(rèn)后認(rèn)為寫入完成

        startup {

        }

 disk {

                on-io-error detach;

               # size 1G;

                     }

 net {

        }

   on mysql_master1 {

                device /dev/drbd0;

                disk /dev/sdb;  #這里磁盤或分區(qū)兩邊最好一樣,也可以用邏輯分區(qū)

                address 192.168.9.25:7888; 

                meta-disk internal;

        }

   on mysql_master2 {

                device /dev/drbd0;

                disk /dev/sdb;     

                address 192.168.9.26:7888;   #端口和上面一樣都設(shè)置成7888就可以

                meta-disk internal;

        }

}

5 .

 先執(zhí)行dd測(cè)試命令,覆蓋文件系統(tǒng)中 的設(shè)備塊信息,不然的話,在第6步創(chuàng)建資源的時(shí)候會(huì)報(bào)錯(cuò)  

Dd  if=/dev/zero of=/dev/sdb  bs=1M count=100

6.  配置好drbd以后,就需要使用命令在dbserver1和dbserver2上創(chuàng)建drbd元數(shù)據(jù)庫信息,使用如下命令

drbdadm create-md r1 , r1為配置文件中resource后面定義的資源名,如下顯示建立資源成功,執(zhí)行命令時(shí)配置文件中的disk /dev/sdb的硬盤處在不掛載的情況,才行,兩臺(tái)機(jī)器都不掛載。

[root@master1 ~]# drbdadm create-md r1       

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.

Success

6 . DRBD的啟動(dòng)和停止

[root@master1 ~]# /etc/rc.d/init.d/drbd start    #啟動(dòng)drbd

[root@master1 ~]# /etc/rc.d/init.d/drbd stop    #停止drbd

[root@master1 ~]# /etc/rc.d/init.d/drbd restart  #重啟drbd

7 . 查看DRBD狀態(tài)

watch -n 1 cat /proc/drbd

/etc/init.d/drbd status

8 . 設(shè)置當(dāng)前節(jié)點(diǎn)為主節(jié)點(diǎn),并進(jìn)行格式化和掛載  注意只有主節(jié)點(diǎn)能掛載,

[root@master1 ~]#drbdadm  primary all  

如果上條命令不成功,則執(zhí)行下面命令。

[root@master1 ~]# drbdadm -- --overwrite-data-of-peer primary all

[root@master1 ~]# mkfs.ext3  /dev/drbd0        ##這個(gè)也就是/dev/sdb

[root@master1 ~]# mkdir  -p /mysql/data       ##創(chuàng)建drbd那個(gè)盤的掛載點(diǎn)

[root@master1 ~]# mount /dev/drbd0  /mysql/data

主drbd掛載后可以往drbd目錄也就是/mysql/data目錄寫數(shù)據(jù),然后主備切換,如果數(shù)據(jù)同步,表明drbd搭建成功。

主切換成從,需要先卸載文件系統(tǒng),再執(zhí)行降級(jí)為從的命令:

[root@master1 ~]#umount /dev/drbd0

[root@master1 ~]#drbdadm secondary all

從切換成主,要先執(zhí)行升級(jí)成主的命令然后掛在文件系統(tǒng):

[root@master1 ~]#drbdadm  primary all 如果不成功drbdsetup /dev/drbd0 primary -o

[root@master1 ~]#mount /dev/drbd0  /mysql/data  

 9,如下可以判斷出是master1是Primary狀態(tài)。  

[root@master1 ~]# more  /proc/drbd   | grep ro 

0 : cs : Connected ro : Primary/Secondary  ds:UpToDate/UpToDate C r------


DRBD上Mysql的遷移  (這個(gè)步驟的目的就是要把保證數(shù)據(jù)目錄,日志目錄,臨時(shí)文件目錄在drbd那個(gè)目錄下)

 1. 將數(shù)據(jù)目錄指定到drbd掛載的mysql目錄中并將my.cnf配置文件放到mysql中即可

 

  1.  關(guān)閉dbserver1和dbserver2的mysql

    /etc/rc.d/init.d/mysqld stop

b)  在dbserver1上創(chuàng)建存放數(shù)據(jù)庫數(shù)據(jù)的目錄及日志的目錄

mkdir  -p /mysql/data  /mysql/log  /mysql/tmp 

c) 修改mysql目錄的屬主

chown -R  mysql:mysql  /mysql

d)   在dbserver1將配置文件移動(dòng)到mysql目錄中:

mv /etc/my.cnf  /mysql

刪除dbserver2上的/etc/my.cnf,rm -f /etc/my.cnf

在dbserver1和dbserver2上執(zhí)行如下命令創(chuàng)建軟鏈接,需要寫全路徑

ln -s /mysql/my.cnf   /etc/my.cnf   

e)         修改/etc/my.cnf的數(shù)據(jù)目錄指向/mysql/data

f)         將原來的mysql數(shù)據(jù)文件移動(dòng)到/mysql/data

g)  啟動(dòng)mysql,如果沒有移動(dòng)數(shù)據(jù)目錄內(nèi)容,需要將mysql重新初始化再啟動(dòng)mysql

初始化過程:{(1)進(jìn)入./mysql/bin目錄下,執(zhí)行腳本./mysql_install_db;  
(2)執(zhí)行完(1)后,此時(shí)會(huì)在./mysql/var目錄下創(chuàng)建兩個(gè)目錄文件mysql、test;
(3)修改mysql、test兩個(gè)目錄及目錄下所有文件的權(quán)限:chown mysql:mysql -R mysql test}

  1. Mysql-master1 上主配文件/etc/my.cnf配置如下,當(dāng)然master2和master1用的是同一個(gè)配置文件,不需要配置。

 [root@mysql_master1 ~]# cat /etc/my.cnf

[mysql]

default-character-set=utf8

[mysqld]

user=mysql

pid-file=/var/run/mysql/mysql.pid

#socket=/var/run/mysql/mysql.sock

socket=/tmp/mysql.sock

basedir=/usr/local/mysql

datadir=/mysql/data

tmpdir=/mysql/tmp

max_connections = 2000   #定義最大連接數(shù)

server-id=3 #每個(gè)MySQL server的此選項(xiàng)都必須唯一

 

###begin innodb settiong###

innodb_file_per_table=1

innodb_lock_wait_timeout=500

innodb_buffer_pool_size=512M

###end innodb setting###

 

###key buffer size set###

key-buffer-size=500M

sort_buffer_size=500M

max_user_connections=1000

table-cache=5000

query_cache_size=500M

###key buffer size set###

 

###begin bin log###

log-bin=/mysql/log/binlog

log-bin-index=/mysql/log/binlog.index

expire-logs-days=90

###end bin log###

 

###begin general log###

#general_log=1

#general_log_file=/mysql/log/record.log

###end general log###

 

###begin error log###

log_error=/mysql/log/error.log

###end error log###

 

###begin skip name resolve###

###end skip name resolve###

 

###being slow query log###

slow_query_log=1

long_query_time=60

slow_query_log_file=/mysql/log/slow.log

###end slow query log###

 3. Mysql的主從配置

  在mysql主上創(chuàng)建復(fù)制賬號(hào)

  mysql> create user repl identified by ‘%#7a@H)’;

  為從mysql授權(quán)

 mysql> GRANT replication slave ON *.* TO 'repl'@'%' ;

 mysql> Flush privileges; 

 4. Mysql從/etc/my.cnf配置

 [root@localhost ~]# cat /etc/my.cnf

[mysql]

default-character-set=utf8

[mysqld]

user=mysql

pid-file=/var/run/mysql/mysql.pid

#socket=/var/run/mysql/mysql.sock

socket=/tmp/mysql.sock

basedir=/usr/local/mysql

datadir=/wgz/mysql/data

tmpdir=/wgz/mysql/tmp

max_connections = 2000   #定義最大連接數(shù)

server-id=12 #每個(gè)MySQL server的此選項(xiàng)都必須唯一

read_only=1   #設(shè)置只讀

###begin innodb settiong###

innodb_file_per_table=1

innodb_lock_wait_timeout=500

innodb_buffer_pool_size=512M

###end innodb setting###

 

###key buffer size set###

key-buffer-size=500M

sort_buffer_size=500M

max_user_connections=1000

table-cache=5000

query_cache_size=500M

###key buffer size set###

 

###begin bin log###

log-bin=/wgz/mysql/log/binlog

log-bin-index=/wgz/mysql/log/binlog.index

expire-logs-days=90

###end bin log###

 

###begin general log###

#general_log=1

#general_log_file=/wgz/mysql/log/record.log

###end general log###

 

###begin error log###

log_error=/wgz/mysql/log/error.log

###end error log###

 

###begin skip name resolve###

###end skip name resolve###

 

###being slow query log###

slow_query_log=1

long_query_time=60

slow_query_log_file=/wgz/mysql/log/slow.log

###end slow query log###

5.在mysql從上做指向主的操作

mysql>change master to master_host='192.168.15.47', master_port=3306, master_user='repl', master_password='%#7a@H)', master_log_file='binlog.000011',master_log_pos=3234;

啟動(dòng)主從復(fù)制

mysql> start slave;

 #查看同步狀態(tài)

mysql> show slave status \G;

         Slave_IO_Running: Yes

     Slave_SQL_Running: Yes

Slave_IO_Running和Slave_SQL_Running:兩個(gè)顯示Yes說明主從同步成功。

 

Heartbeat的部署  (自動(dòng)完成兩個(gè)主之間的切換)

  1. 安裝heartbeat,需安裝epel擴(kuò)展源

[root@master1 ~]# yum -y install epel-release

[root@master1 ~]# yum  install -y heartbeat

2. .Hearbeat的配置主要包括三個(gè)配置文件,authkeys,ha.cf和haresources的配置,下面就分別來看!

Authkerys密碼認(rèn)證文件的配置,兩臺(tái)機(jī)器配置一樣。

[root@master1 ~]# vim /etc/ha.d/authkeys

auth 1

1 crc

[root@master1 ~]# chmod 600 /etc/ha.d/authkeys  #配置完成后,修改文件的權(quán)限,否者h(yuǎn)eartbeat啟動(dòng)報(bào)錯(cuò)

  1. ha.cf的配置

Master1(dbserver1)的ha.cf的配置

[root@master1 ~]#  cat  /etc/ha.d/ha.cf

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

warntime 10

initdead 60

udpport 694

ucast eth0 192.168.9.26       #寫對(duì)方的ip

auto_failback off     ##  建議使用off,如果使用on會(huì)導(dǎo)致主備機(jī)之間來回切換,增加成本。

node    master1

node     master2

ping 192.168.15.254             #網(wǎng)關(guān)就行

respawn hacluster /usr/lib64/heartbeat/ipfail

Master2(dbserver2)的ha.cf的配置

[root@master2 ~]# cat  /etc/ha.d/ha.cf

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

warntime 10

initdead 60

udpport 694

ucast eth0 192.168.9.25         #寫對(duì)方的ip

auto_failback on

node    master1

node    master2

ping   192.168.9.254

respawn hacluster /usr/lib64/heartbeat/ipfail

  1. haresources的配置,兩臺(tái)機(jī)器配置完全一樣,mysqld需要做成服務(wù),放在/etc/rc.d/init.d/目錄下,配置配置如下:

[root@master1 ~]#  cat /etc/ha.d/haresources
master1 IPaddr::192.168.9.231/24/eth0:0 drbddisk::r1 Filesystem::/dev/drbd0::/mysql/data::ext3 mysqld

以上/etc/ha.d/haresources配置文件說明:192.168.9.231/24/eth0:0,192.168.9.231/24為mysql高可用的vip,eth0:0:表示vip走eth0:0口,r1:表示上面drbd定義的資源庫,/dev/drbd0:表示以上drbd自己形成的硬盤分區(qū),/mysql/data:表示drbd掛載的目錄,mysqld:表示mysql的服務(wù)。

5 . Heartbeat的管理

配置好heartbeat之后,需要將mysql從自啟動(dòng)服務(wù)器中去掉,因?yàn)橹鱤eartbeat啟動(dòng)的時(shí)候會(huì)掛載drdb文件系統(tǒng)以及啟動(dòng)mysql,切換的時(shí)候會(huì)將主上的mysql停止并卸載文件系統(tǒng),從上會(huì)掛載文件系統(tǒng),并啟動(dòng)mysql。因此需要做如下操作:

[root@master1 ~]#chkconfig mysqld off

[root@master1 ~]#chkconfig --add heartbeat

[root@master1 ~]#chkconfig heartbeat on

[root@master1 ~]#service  heartbeat start    #啟動(dòng)Heartbeat

6. Heartbeat+DRBD+Mysql測(cè)試

用腳本判斷mysql宕后,腳本將 heartbeat服務(wù)stop掉,vip和drbd的分區(qū)掛載自轉(zhuǎn)移到drbd從的上,當(dāng)主mysql修復(fù)啟動(dòng),在將heartbeat服務(wù)啟動(dòng),vip和drbd的分區(qū)掛載又自轉(zhuǎn)移到drbd主的上。

7. 判斷mysql服務(wù)及停止heartbeat服務(wù)腳本,在主的上后臺(tái)執(zhí)行,nohup  /opt/check_mysql_heartbeat.sh &,腳本中的password需要改成當(dāng)前mysql的root密碼。

[root@mysql_master1 opt]# cat check_mysql_heartbeat.sh

#!/bin/bash

trap 'echo  PROGRAM INTERRUPTED; exit 1'  INT

username=root

password=123456

n=0

log='/var/log/mysqlmon.log'

while true

do

    if mysql  -u${username} -p${password} -e "use test"   >&/dev/null

    then

        echo `date +"%Y-%m-%d  %H:%M:%S"`  mysqld is alive!  >> ${log}

        n=0

    else

        echo  "`date +"%Y-%m-%d  %H:%M:%S"`  mysqld  cannot be  connected!"  >> ${log}

        n=$[n + 1]

        if [ $n -eq 3 ]

        then

            /etc/init.d/heartbeat stop

            echo  "`date +"%Y-%m-%d  %H:%M:%S"`  mysqld  switched to backup!" >> ${log}

            echo "`date +"%Y-%m-%d  %H:%M:%S"`  mysqld  switched to backup"

            break

        fi

    fi

    sleep 10

done

 

測(cè)試總結(jié):

判斷腳本放在drbd主的上后臺(tái)執(zhí)行就行,從的上不用,如果主的mysql宕掉后,腳本將heartbeat服務(wù)殺掉,vip和掛載自動(dòng)切換到從上,等主的mysql和heartbeat修復(fù)啟動(dòng)后,vip和掛載又自動(dòng)切換到主。

 

二: lvs+keepalived 安裝部署

試驗(yàn)環(huán)境:

LVS1:192.168.9.27

LVS2:192.168.9.28

keepalived  的VIP:192.168.9.230

要分發(fā)的mysql1: 192.168.9.29

要分發(fā)的mysql2:192.168.9.30

具體安裝步驟:

#下載ipvsadm (也就是LVS程序包)

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

#解壓

[root@lvs-a ~]# tar -zxf ipvsadm-1.24.tar.gz

#進(jìn)入該ipvsadm目錄  

[root@lvs-a ~]# cd /usr/local/ipvsadm-1.24

#安裝開發(fā)包及庫文件

[root@lvs-a ipvsadm-1.24]# # yum install zlib-devel gcc gcc-c++ openssl-devel pcre-devel libtool kernel-devel ncurses-devel -y

#創(chuàng)建內(nèi)核連接

[root@lvs-a ipvsadm-1.24]# ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux  #(2.6.18-194.el5-i686)根據(jù)系統(tǒng)版本修改。

#編譯安裝

[root@lvs-a ipvsadm-1.24]# make;make install

#進(jìn)入目錄

[root@lvs-a ~]# cd  /usr/local/

#下載keepalived

wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz

#解壓

[root@lvs-a ipvsadm-1.24]# tar -zxf keepalived-1.2.12.tar.gz

#進(jìn)入該keepalived目錄

[root@lvs-a ~]cd keepalived-1.2.12

#編譯安裝

[root@lvs-a keepalived-1.2.12]#./configure --prefix=/usr/local/keepalived  #這里編譯完后面顯示三個(gè)yes,說明編譯成功,否則安裝不成功。

#以下為1.2.12版本./configure結(jié)果如下

如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用

#如果為1.1.17版本./configure結(jié)果如下

 

如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用

[root@lvs-a keepalived-1.2.12]#make

[root@lvs-a keepalived-1.2.12]#make install

#復(fù)制啟動(dòng)文件

[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/    ##這樣才能用service keepalived 的命令。

#復(fù)制命令文件

[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

#復(fù)制【配置文件

[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

#新建主配置文件目錄

[root@lvs-a keepalived-1.2.12]#mkdir -p /etc/keepalived

#編輯配置文件LVS1

[root@lvs-a sysconfig]#vim  /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id lvs
}

vrrp_sync_group http {                            #設(shè)置vrrp組,隨便起名字,
group {
           mysql                                             ###隨便起的名字
         }
}

vrrp_instance apache {                          ###定義一個(gè)vrrp實(shí)例
    state MASTER                                     #設(shè)置lvs的狀態(tài), MASTER和BACKUP兩種,必須大寫,主節(jié)點(diǎn)master,從節(jié)點(diǎn)backup
    interface eth0                                      #設(shè)置對(duì)外服務(wù)的接口,也就是/LVS監(jiān)控的網(wǎng)絡(luò)接口
    virtual_router_id 01                             #設(shè)置lvs監(jiān)聽的接口,同一實(shí)例下virtual_router_id必須相同 ,隨便起名字
    priority 500                                          # #設(shè)置優(yōu)先級(jí),數(shù)值越大,優(yōu)先級(jí)越高 ,也就是主節(jié)點(diǎn)的這個(gè)值大
    advert_int 1                                          ## //MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒 

    authentication {                                   #設(shè)置驗(yàn)證類型和密碼
        auth_type PASS                                 
        auth_pass aabb                                ##密碼
    }
    virtual_ipaddress {                          ##設(shè)置keepalived的VIP
        192.168.9.230                           #如果有多個(gè),往下加就行了 

        #192.168.9.231

        #192.168.9.232

   }

}

virtual_server 192.168.9.230 3306 {               ##定義虛擬服務(wù)器 
    delay_loop 6                                              #健康檢查時(shí)間,單位是秒。
    lb_algo rr                                                   #負(fù)載調(diào)度算法,這里設(shè)置為rr,即輪詢算法
    lb_kind DR                                                 #LVS實(shí)現(xiàn)負(fù)載均衡的機(jī)制,可以有NAT、TUN和DR三個(gè)模式可選 
    nat_mask 255.255.255.0                             #可以不填寫這個(gè)參數(shù),
#    persistence_timeout 50
    protocol TCP

    real_server 192.168.9.29 3306 {                      ##要分發(fā)的目標(biāo)服務(wù)器IP,
        weight 1                                                        #設(shè)置權(quán)重,也就是分發(fā)的次數(shù),這里表示每個(gè)分發(fā)一次,
        TCP_CHECK {                                                  #通過tcpcheck判斷RealServer的健康狀態(tài) 
              connect_timeout 3                                     ##連接超時(shí)時(shí)間 

              #nb_get_retry 3                                           #重連次數(shù) ,有默認(rèn)值
              #delay_before_retry 3                                #重連間隔時(shí)間    有默認(rèn)值                       
              connect_port 3306
            }
        }
    real_server 192.168.9.30 3306 {
        weight 1
        TCP_CHECK {
              connect_timeout 3
              connect_port 3306
            }
        }
}

#配置完成重啟keepalived

[root@lvs-a sysconfig]#service keepalived restart

#添加自己的網(wǎng)關(guān)

[root@lvs-a network-scripts]# route add -host 192.168.9.254  dev eth0


 #安裝keepalived同lvs1相同

 #安裝keepalived后配置LVS2,配置如下:

[root@lvs-b ~]# cat /etc/keepalived/keepalived.conf 

! Configuration File for keepalived

global_defs {
   router_id lvs
}

vrrp_sync_group http {
group {
           mysql
         }
}

vrrp_instance apache {
    state BACKUP 
    interface eth0
    virtual_router_id 01
    priority 400
    advert_int 1
 #  nopreempt
    authentication {
        auth_type PASS
        auth_pass aabb
    }
    virtual_ipaddress {
        192.168.9.230
    }
}

virtual_server 192.168.9.230 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
#    persistence_timeout 50
    protocol TCP

    real_server 192.168.9.29 3306 {
        weight 1
        TCP_CHECK {
              connect_timeout 3
              connect_port 3306
            }
        }
    real_server 192.168.9.30 3306 {
        weight 1
        TCP_CHECK {
              connect_timeout 3
              connect_port 3306
            }
        }
}

       

#配置完成重啟keepalived

service keepalived restart

#添加自己的網(wǎng)關(guān)

route add -host 192.168.9.254  dev eth0

#查看

route -n

#查看分發(fā)結(jié)果

Ipvsadm -ln

#清除分發(fā)

Ipvsadm -C

#查看虛擬ip(VIP)

Ip addr

#配置 mysql-realserver1  在192.168.9.29上執(zhí)行:

[root@lvs-a ~]# ifconfig lo:0 192.168.9.230 netmask 255.255.255.0  broadcast 192.168.9.230 up       ##設(shè)置的一個(gè)臨時(shí)的IP

設(shè)置到主機(jī)的路由

[root@lvs-b ~]# route add -host 192.168.9.230 dev lo:0

設(shè)置默認(rèn)路由

[root@lvs-b ~]#route add default gw 192.168.9.137   

保證arp協(xié)議在連接過程中,路由器上,只知道網(wǎng)絡(luò)中192.168.9.230對(duì)應(yīng)的是分發(fā)器

[root@lvs-b ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore           

[root@lvs-b ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#配置 mysql-realserver2  在192.168.9.30上執(zhí)行:

[root@lvs-a ~]# ifconfig lo:0 192.168.9.230 netmask 255.255.255.0  broadcast 192.168.9.230 up 

設(shè)置到主機(jī)的路由

[root@lvs-a ~]#route add -host 192.168.9.230 dev lo:0

設(shè)置默認(rèn)路由

[root@lvs-a ~]#route add default gw 192.168.153.137

保證arp協(xié)議在連接過程中,路由器上,只知道網(wǎng)絡(luò)中192.168.9.230對(duì)應(yīng)的是分發(fā)器

[root@lvs-a ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore           

[root@lvs-a ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#兩臺(tái)mysql-realserver配置完成后啟動(dòng)分別mysql

Service mysqld start

LVS分發(fā)測(cè)試:

1,在  mysql-realserver1(192.168.9.29)  創(chuàng)建一個(gè)名字叫做slave1的數(shù)據(jù)庫:

mysql> create database slave1;

Query OK, 1 row affected (0.00 sec)

2,在mysql-realserver2  (192.168.9.30)上創(chuàng)建一個(gè)名字叫做slave2的數(shù)據(jù)庫:

mysql> create database slave2  ; 

Query OK, 1 row affected (0.00 sec)

3,在一臺(tái)能ping通mysql-realserver1和mysql-realserver2的機(jī)器上執(zhí)行(注意不要在正在用著的lvs機(jī)器上執(zhí)行,例如我現(xiàn)在lvs用著[root@lvs-a ~]#這個(gè)機(jī)器,如果你在這里執(zhí)行他會(huì)報(bào)錯(cuò)

[root@lvs-a ~]#  mysql -uroot -pliuwenhe -h292.168.9.230 -e'show databases';
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.9.230' (111)
You have new mail in /var/spool/mail/root

[root@lvs-b ~]# mysql -uroot -pliuwenhe -h292.168.9.230 -e'show databases';

+--------------------+
| Database           |
+--------------------+
| information_schema | 
| he                 | 
| liuwenhe           | 
| mysql              | 
| performance_schema | 
| slave1             | 
| test               | 
+--------------------+
[root@lvs-b ~]# mysql -uroot -pliuwenhe -h292.168.9.230 -e'show databases';
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| he                 | 
| liuwenhe           | 
| mysql              | 
| performance_schema | 
| slave2             | 
| test               | 
+--------------------+

 

 說明lvs分發(fā)成功。

 

 

 

、故障處理:

當(dāng)主drbd (mysql)宕掉以后恢復(fù)過程:

1. 先恢復(fù)啟動(dòng)主drbd上的mysql服務(wù)

  service mysqld start

2. 確定主drbd的mysql啟動(dòng)后,在啟動(dòng)heartbeat服務(wù),這時(shí)vip和掛載自動(dòng)切換到主drbd

 service heartbeat start

3. 在主drbd上執(zhí)行后臺(tái)腳本

 nohup /opt/check_mysql_heartbeat.sh &

 

 六、參考網(wǎng)址

http://blog.chinaunix.net/uid-20639775-id-3337484.html  #部署主要參考網(wǎng)址

http://www.centoscn.com/CentosServer/cluster/2015/0605/5604.html#安裝drbd網(wǎng)址

http://www.51ou.com/browse/Apache/60681.html  #安裝heartbeat網(wǎng)址

 

 

遷移mysql說明:mysql遷移需要注意的步驟

部署在drbd搭建成后,主從切換drbd同步?jīng)]有問題,將mysql的配置文件移動(dòng)到drbd的掛載目錄下,將drbd從上的配置文件刪除或改名,然后將掛載目錄下的配置文件軟連接到/etc/my.cn,因?yàn)樗麄冇玫耐粋€(gè)配置文件,在掛載目錄下,建立mysql的數(shù)據(jù)目錄和日志目錄,并且修改目錄的屬主mysql,如果原有的mysql有數(shù)據(jù)將數(shù)據(jù)和日志移動(dòng)到新建的目錄下,配置文件也將相應(yīng)的目錄修改,然后重啟mysql,如果不移動(dòng)數(shù)據(jù),數(shù)據(jù)庫需要初始化,然后重啟,這時(shí)可以參照網(wǎng)址上的步驟手動(dòng)切換drbd的主從,看從drbd的mysql是否能正常啟動(dòng),在主上mysql插入的數(shù)據(jù)是否同步,如果同步,然后就可以啟動(dòng)已經(jīng)配置好的heartbeat服務(wù),這時(shí)看當(dāng)前主drbd上掛載和vip是否顯示,在主drbd上執(zhí)行后臺(tái)腳本后,關(guān)閉主drbd上的mysql服務(wù),看從drbd上的mysql是否正常啟動(dòng),以及掛載和vip是否自動(dòng)切換到從上,如果以上三項(xiàng)正常飄移,說明搭建成功。

 

故障處理說明:

   當(dāng)主mysql宕以后,需要修復(fù)時(shí),需要先啟動(dòng)heartbeat,否則drbd不會(huì)飄到主上,自然掛載也不會(huì)切換過來,更別說啟動(dòng)mysql了,mysql主配置文件都在drbd的磁盤上,所以修復(fù)時(shí),啟動(dòng)heartbeat后,看主drbd的mysql是否正常啟動(dòng),如果沒有,解決后再啟動(dòng)。

 

 

 

附錄1

下面是keepalived詳細(xì)配置文件解析:


當(dāng)前文章:如何搭建Heartbeat+DRBD+Mysql+Lvs+Keepalived高可用
URL標(biāo)題:http://fisionsoft.com.cn/article/jihehs.html