Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
´î½¨MySQL¸ß¿ÉÓøºÔؾùºâ¼¯Èº
 
À´Ô´£ºÀ´×ÔÍøÂç ·¢²¼ÓÚ£º 2017-10-31
  3543  次浏览      31
 

ÔĶÁĿ¼

1¡¢¼ò½é

2¡¢»ù±¾»·¾³

3¡¢ÅäÖÃMySQLÖ÷Ö÷¸´ÖÆ

4¡¢Öмä¼þ¼òÊö

4.1¡¢Haproxy½éÉÜ

4.2¡¢keepalived½éÉÜ

5¡¢Öмä¼þµÄ°²×°ÓëÅäÖã¨haproxy¡¢keepalived£©

5.1¡¢°²×°haproxy

1£©¡¢±àÒë°²×°haproxy

2£©¡¢ÌṩÆô¶¯½Å±¾

3£©¡¢ÌṩÅäÖÃÎļþ

4£©¡¢Æô¶¯ÈÕÖ¾

5£©¡¢Æô¶¯haproxy

6£©¡¢²âÊÔhaproxy

5.2¡¢°²×°keepalived

1£©¡¢½â¾öȱÉÙµÄÈí¼þ¿âÎļþ

2£©¡¢±àÒë°²×°keepalivedÈí¼þ

3£©¡¢´´½¨ÅäÖÃÎļþ

4£©¡¢´´½¨½Å±¾Îļþ

6¡¢¹¦ÄܲâÊÔ

6.1¡¢Á÷³Ì¼òÊö

6.2¡¢²âÊÔhaproxy¼àÌýǰ¶Ë¶Ë¿Ú3306

6.3¡¢²âÊԸ߿ÉÓÃ+keepalived²»ÇÀÕ¼vip

6.4¡¢²âÊÔ¸ºÔؾùºâ

7¡¢×ܽáÓ뽨Òé

1¡¢¼ò½é

ʹÓÃMySQLÊ±Ëæ×Åʱ¼äµÄÔö³¤£¬Óû§Á¿ÒÔ¼°Êý¾ÝÁ¿µÄÖð½¥Ôö¼Ó£¬·ÃÎÊÁ¿¸üÊǾçÔö£¬×îÖÕ½«»áʹMySQL´ïµ½Ä³¸öÆ¿¾±£¬ÄÇôMySQLµÄÐÔÄܽ«»á´ó´ó½µµÍ¡£ÕâÒ»½á¹ûÒ²²»ÀûÓÚÈí¼þµÄÍÆ¹ã¡£

ÄÇôÈçºÎ¿ç¹ýÕâ¸öÆ¿¾±£¬Ìá¸ßMySQLµÄ²¢·¢Á¿ÄØ£¿·½·¨Óкܶ࣬·Ö²¼Ê½Êý¾Ý¿â¡¢¶Áд·ÖÀë¡¢¸ß¿ÉÓøºÔؾùºâ¡¢Ôö¼Ó»º´æ·þÎñÆ÷µÈµÈ¡£Ö®Ç°µÄÎÄÕÂÀïÒѾ­½éÉÜÁ˶Áд·ÖÀëµÄ·½°¸ÁË£¬½ÓÏÂÀ´ÎÒ½«½²½âMySQL¸ß¿ÉÓøºÔؾùºâÕâÒ»·½·¨¡£

ÆäÖÐʵÏָ߿ÉÓøºÔؾùºâµÄ·½·¨Óкܶ࣬ÀýÈçLVS+keepalived×éºÏʵÏÖ¡¢haproxy+keepalived×éºÏʵÏֵȵȣ¬ÕâÀïÎÒÃDzÉÓÃhaproxy+keepalived×éºÏʵÏÖMySQL¸ß¿ÉÓøºÔؾùºâÕâÒ»¼¼Êõ¡£

2¡¢»ù±¾»·¾³

ËĄ̈linuxÐéÄâÖ÷»ú

Linux°æ±¾CentOS6.6

MySQL 5.5£¨ÒѰ²×°ºÃ£©

haproxy-1.5.14

keepalived-1.2.19

IP£º192.168.95.11£¨mysql1£©¡¢192.168.95.12£¨mysql2£©¡¢192.168.95.13£¨haproxy+keepalived£©¡¢192.168.95.14£¨haproxy+keepalived£©¡¢192.168.95.55£¨vip£©

3¡¢ÅäÖÃMySQLÖ÷Ö÷¸´ÖÆ

ÏêϸÅäÖò½Öè¿ÉÒԲο¼ÕâÆªÎÄÕ£º

http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label7

ÒÔϼòÒª½éÉÜÒ»ÏÂmysqlµÄÖ÷Ö÷¸´ÖÆ£º

ºÎΪÖ÷Ö÷¸´ÖÆ£¿¾ÍÊÇÁ½¸ömysql¶¼ÄܶÁÄÜд£¬Êý¾Ý¼Ç¼ͨ¹ý¶þ½øÖÆ´«´ï¸ø¶Ô·½´Ó¶ø±£³ÖÊý¾ÝµÄÒ»ÖÂÐÔ¡£

£¨192.168.95.11Ö÷´Ó¸´ÖÆ+192.168.95.12Ö÷´Ó¸´ÖÆ==192.168.95.11¡¢192.168.95.12Ö÷Ö÷¸´ÖÆ£©

Òò´ËÖ÷Ö÷¸´ÖÆÖбØÐëÒª½â¾öµÄÊÂÇé¾ÍÊÇ×ÔÔöÖ÷¼üµÄÎÊÌâ¡£Èç¹ûmysql1Ö÷¼üidÔö¼Óµ½12ÁË£¬´Ëʱ¶þ½øÖÆÊý¾Ý»¹Ã»µ½´ïmysql2£¬ÄÇômysql2Ç¡ºÃÒª²åÈëÊý¾Ý£¬ÄÇôÐÂÊý¾ÝÖ÷¼üidÒ²ÊÇ12£¬ÄDz»¾ÍÊÇÂÒÌ×ÁËô£¡½â¾öÕâÒ»ÎÊÌâÎÒÃÇ¿ÉÒÔÖ±½Ó¸ü¸ÄMySQLÖеÄÅäÖÃÎļþ¼´¿É¡£

1£©¡¢¸ü¸ÄÅäÖÃÎļþ

--192.168.95.11£ºMySQL
server-id=11 #ÈÎÒâ×ÔÈ»Êýn£¬Ö»Òª±£Ö¤Á½Ì¨MySQLÖ÷»ú²»Öظ´¾Í¿ÉÒÔÁË¡£
log-bin=mysql-bin #¿ªÆô¶þ½øÖÆÈÕÖ¾
auto_increment_increment=2 #²½½øÖµauto_imcrement¡£Ò»°ãÓÐn̨Ö÷MySQL¾ÍÌîn
auto_increment_offset=1 #Æðʼֵ¡£Ò»°ãÌîµÚn̨Ö÷MySQL¡£´ËʱΪµÚһ̨Ö÷MySQL
binlog-ignore=mysql #ºöÂÔmysql¿â¡¾ÎÒÒ»°ã¶¼²»Ð´¡¿
binlog-ignore=information_schema #ºöÂÔinformation_schema¿â¡¾ÎÒÒ»°ã¶¼²»Ð´¡¿
replicate-do-db=aa #Ҫͬ²½µÄÊý¾Ý¿â£¬Ä¬ÈÏËùÓпâ
--192.168.95.12£ºMySQL
server-id=12
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=aa

ÅäÖúúóÖØÆôMySQL

2£©¡¢ÅäÖÃ192.168.95.11Ö÷´Ó¸´ÖÆ

1¡¢ÔÚ192.168.95.12Öд´½¨Ò»¸ö192.168.95.11Ö÷»úÖпÉÒԵǼµÄMySQLÓû§

Óû§£ºmysql11

ÃÜÂ룺mysql11

mysql>GRANT REPLICATION SLAVE ON *.* TO ¡®mysql11¡¯@¡¯192.168.95.11¡¯ IDENTIFIED BY ¡¯mysql11¡¯;
mysql>FLUSH PRIVILEGES;

2¡¢²é¿´192.168.95.12¶þ½øÖÆÈÕÖ¾

mysql> show master status;

3¡¢¸æÖª¶þ½øÖÆÎļþÃûÓëλÖÃ

¸´ÖÆ´úÂë
mysql> change master to
-> master_host='192.168.95.11',
-> master_user='mysql11',
->master_password='mysql11',
->master_log_file='mysql-bin.000097',
-> master_log_pos=107;

4¡¢²é¿´½á¹û

mysql> slave start;
mysql> show slave status\G

ÅäÖÃÖ÷´Ó¸´ÖƳɹ¦

3£©¡¢ÅäÖÃ192.168.95.12Ö÷´Ó¸´ÖÆ

ͬÉÏ

ÅäÖÃÖ÷´Ó¸´ÖƳɹ¦¡£

4¡¢Öмä¼þ¼òÊö

4.1¡¢Haproxy½éÉÜ

HaproxyÊÇÒ»¸ö¿ªÔ´µÄ¸ßÐÔÄܵķ´Ïò´úÀí»òÕß˵ÊǸºÔؾùºâ·þÎñÈí¼þÖ®Ò»£¬ËüÖ§³ÖË«»úÈȱ¸¡¢ÐéÄâÖ÷»ú¡¢»ùÓÚTCPºÍHTTPÓ¦ÓôúÀíµÈ¹¦ÄÜ¡£ÆäÅäÖüòµ¥£¬¶øÇÒÓµÓкܺõĶԷþÎñÆ÷½ÚµãµÄ½¡¿µ¼ì²é¹¦ÄÜ£¨Ï൱ÓÚkeepalived½¡¿µ¼ì²é£©£¬µ±Æä´úÀíµÄºó¶Ë·þÎñÆ÷³öÏÖ¹ÊÕÏʱ£¬Haproxy»á×Ô¶¯µÄ½«¸Ã¹ÊÕÏ·þÎñÆ÷Õª³ý£¬µ±·þÎñÆ÷µÄ¹ÊÕϻָ´ºóHaproxy»¹»á×Ô¶¯½«RS·þÎñÆ÷¡£

HAProxyÌØ±ðÊÊÓÃÓÚÄÇЩ¸ºÔØÌØ´óµÄwebÕ¾µã£¬ÕâЩվµãͨ³£ÓÖÐèÒª»á»°±£³Ö»òÆß²ã´¦Àí¡£HAProxyÔËÐÐÔÚµ±Ç°µÄÓ²¼þÉÏ£¬ÍêÈ«¿ÉÒÔÖ§³ÖÊýÒÔÍò¼ÆµÄ²¢·¢Á¬½Ó¡£²¢ÇÒËüµÄÔËÐÐģʽʹµÃËü¿ÉÒԺܼòµ¥°²È«µÄÕûºÏ½øÄúµ±Ç°µÄ¼Ü¹¹ÖУ¬ ͬʱ¿ÉÒÔ±£»¤ÄãµÄweb·þÎñÆ÷²»±»±©Â¶µ½ÍøÂçÉÏ¡£

HaproxyÈí¼þÒýÈëÁËfrontend£¬backendµÄ¹¦ÄÜ£¬frontend£¨acl¹æÔòÆ¥Å䣩¿ÉÒÔ¸ù¾ÝÈÎÒâHTTPÇëÇóÍ·×ö¹æÔòÆ¥Å䣬Ȼºó°ÑÇëÇó¶¨Ïòµ½Ïà¹ØµÄbackend£¨server poolsµÈ´ýǰ¶Ë°ÑÇëÇóת¹ýÀ´µÄ·þÎñÆ÷×飩¡£Í¨¹ýfrontendºÍbackup£¬ÎÒÃÇ¿ÉÒÔºÜÈÝÒ×µÄʵÏÖhaproxyµÄ7²ã´úÀí¹¦ÄÜ£¬haproxyÊÇÒ»¿î²»¿É¶àµÃµÄÓÅÐã´úÀí·þÎñÈí¼þ¡£

4.2¡¢keepalived½éÉÜ

keepalivedÊÇÒÔVRRPЭÒéΪʵÏÖ»ù´¡µÄ£¬VRRPÈ«³ÆVirtual Router Redundancy Protocol£¬¼´ÐéÄâ·ÓÉÈßÓàЭÒé¡£

ÐéÄâ·ÓÉÈßÓàЭÒ飬¿ÉÒÔÈÏΪÊÇʵÏÖ·ÓÉÆ÷¸ß¿ÉÓõÄЭÒ飬¼´½«N̨ÌṩÏàͬ¹¦ÄܵÄ·ÓÉÆ÷×é³ÉÒ»¸ö·ÓÉÆ÷×飬Õâ¸ö×éÀïÃæÓÐÒ»¸ömasterºÍ¶à¸öbackup£¬masterÉÏÃæÓÐÒ»¸ö¶ÔÍâÌṩ·þÎñµÄvip£¨¸Ã·ÓÉÆ÷ËùÔÚ¾ÖÓòÍøÄÚÆäËû»úÆ÷µÄĬÈÏ·ÓÉΪ¸Ãvip£©£¬master»á·¢×é²¥£¬µ±backupÊÕ²»µ½vrrp°üʱ¾ÍÈÏΪmasterå´µôÁË£¬Õâʱ¾ÍÐèÒª¸ù¾ÝVRRPµÄÓÅÏȼ¶À´Ñ¡¾ÙÒ»¸öbackupµ±master¡£ÕâÑùµÄ»°¾Í¿ÉÒÔ±£Ö¤Â·ÓÉÆ÷µÄ¸ß¿ÉÓÃÁË¡£

keepalivedÖ÷ÒªÓÐÈý¸öÄ£¿é£¬·Ö±ðÊÇcore¡¢checkºÍvrrp¡£coreÄ£¿éΪkeepalivedµÄºËÐÄ£¬¸ºÔðÖ÷½ø³ÌµÄÆô¶¯¡¢Î¬»¤ÒÔ¼°È«¾ÖÅäÖÃÎļþµÄ¼ÓÔØºÍ½âÎö¡£check¸ºÔ𽡿µ¼ì²é£¬°üÀ¨³£¼ûµÄ¸÷ÖÖ¼ì²é·½Ê½¡£vrrpÄ£¿éÊÇÀ´ÊµÏÖVRRPЭÒéµÄ¡£

5¡¢Öмä¼þµÄ°²×°ÓëÅäÖã¨haproxy¡¢keepalived£©

°Ù¶ÈÔÆÏÂÔØ£ºhttp://pan.baidu.com/s/1qYoCjDE ÃÜÂ룺7cef

5.1¡¢°²×°haproxy

ÔÚ192.168.95.13¡¢192.168.95.14°²×°haproxy£¨Ò»Ä£Ò»Ñù°²×°£©

1£©¡¢±àÒë°²×°haproxy

# tar -zxvf haproxy-1.5.14.tar.gz
# cd haproxy-1.5.14
# make TARGET=linux26 ARCH=x86_64
# make install SBINDIR=/usr/sbin/ MANDIR=/usr/share/man/ DOCDIR=/usr/share/doc/

×¢Ò⣺

1¡¢ÎªÊ²Ã´²»ÓÃconfigure£¬Çë¿´ÏÂͼ¡£haproxy-1.5.14ÒѾ­´æÔÚMakefileÎļþÁË¡£

2¡¢makeµÄʱºò£¬targetÒÔ¼°archÐèÒª¸ù¾Ý×Ô¼ºµÄlinuxÖ÷»úÉèÖÃ

3¡¢make installµÄʱºòÎÒÔö¼ÓÁËһЩ¶îÍâÑ¡Ïî¡£Õâ¿É¼Ó¿É²»¼ÓÓÉ×Ô¼ºÅäÖ㬲»¼ÓµÄ»°½«»á°´Ä¬ÈÏ·¾¶°²×°£¬Çë¿´ÏÂͼ¡£

2£©¡¢ÌṩÆô¶¯½Å±¾

½«haproxyÕâ¸öÆô¶¯½Å±¾·ÅÔÚ/etc/init.d/Îļþ¼ÐÏ£¬ÒÔ±ãÎÒÃÇ¿ÉÒÔÖ±½ÓserviceÆô¶¯Ëü

¡¾×¢Òâ¡¿£º´ËÆô¶¯½Å±¾½ö½öÊʺÏÎÒÒÔÉϵݲװ·¾¶¡£¼ÙÈô°²×°Â·¾¶²»Í¬£¬ÔòÐèÒª½øÐÐÏàÓ¦µÄÐ޸ķ½¿ÉʹÓá£


¸´ÖÆ´úÂë
#!/bin/sh
#
# haproxy
#
# chkconfig: - 85 15
# description: HAProxy is a free, very fast and reliable solution \
# offering high availability, load balancing, and \
# proxying for TCP and HTTP-based applications
# processname: haproxy
# config: /etc/haproxy/haproxy.cfg
# pidfile: /var/run/haproxy.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

exec="/usr/sbin/haproxy"
prog=$(basename $exec)

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

cfgfile=/etc/haproxy/haproxy.cfg
pidfile=/var/run/haproxy.pid
lockfile=/var/lock/subsys/haproxy

check() {
$exec -c -V -f $cfgfile $OPTIONS
}

start() {
$exec -c -q -f $cfgfile $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors in configuration file, check with $prog check."
return 1
fi

echo -n $"Starting $prog: "
# start it up here, usually something like "daemon $exec"
daemon $exec -D -f $cfgfile -p $pidfile $OPTIONS
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
# stop it here, often "killproc $prog"
killproc $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
$exec -c -q -f $cfgfile $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors in configuration file, check with $prog check."
return 1
fi
stop
start
}

reload() {
$exec -c -q -f $cfgfile $OPTIONS
if [ $? -ne 0 ]; then
echo "Errors in configuration file, check with $prog check."
return 1
fi
echo -n $"Reloading $prog: "
$exec -D -f $cfgfile -p $pidfile $OPTIONS -sf $(cat $pidfile)
retval=$?
echo
return $retval
}

force_reload() {
restart
}

fdr_status() {
status $prog
}

case "$1" in
start|stop|restart|reload)
$1
;;
force-reload)
force_reload
;;
check)
check
;;
status)
fdr_status
;;
condrestart|try-restart)
[ ! -f $lockfile ] || restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
exit 2
esac

#¸øÖ´ÐÐȨÁ¦

#chmod +x /etc/init.d/haproxy

»Øµ½¶¥²¿

3£©¡¢ÌṩÅäÖÃÎļþ

¸ù¾ÝÉÏÃæµÄÆô¶¯½Å±¾½¨Á¢ÏàÓ¦µÄĿ¼ÒÔ¼°ÅäÖÃÎļþ

# mkdir /etc/haproxy
# mkdir /var/lib/haproxy
# useradd -r haproxy #½¨Á¢½Å±¾Æô¶¯Óû§
# vi /etc/haproxy/haproxy.cfg

¡¾ÅäÖÃÎļþ¡¿

#ÕâÀïµÄÅäÖÃÎļþ½ö½öÖ»ÊÇÌù³öÀ´½øÐнâÎö˵Ã÷¡£

#Èç¹ûÐèÒªÕâ¸öÅäÖÃÎļþ×îºÃ½«×¢ÊͽâÎöÈ«²¿É¾³ýµô£¬ÒòΪÎÒÔÚʹÓõĹý³ÌÖУ¬ÕýÊÇÒòΪ´æÔÚ×¢ÊͽâÎö¶øµ¼Ö³ö´í£¬É¾³ýºó¾ÍÄÜÕý³£ÔËÐС£

#¿ÉÒÔÏÂÔØÕâ¸öÅäÖÃÎļþ½øÐÐʹÓã¬ÓëÏÂÃæÌù³öÀ´µÄÅäÖÃÎļþÒ»Ö£¬Ö»ÊDz»´æÔÚ×¢ÊͽâÎö

#°Ù¶ÈÔÆÏÂÔØ¸ÃÅäÖÃÎļþ£¨²»º¬×¢ÊÍ£©£ºÁ´½Ó£ºhttp://pan.baidu.com/s/1gfOMtKB ÃÜÂ룺zl9o

global

log 127.0.0.1 local2 //ÈÕÖ¾¶¨Òå¼¶±ð
chroot /var/lib/haproxy //µ±Ç°¹¤×÷Ŀ¼
pidfile /var/run/haproxy.pid //½ø³Ìid
maxconn 4000 //×î´óÁ¬½ÓÊý
user haproxy //ÔËÐиijÌÐòµÄÓû§
group haproxy
daemon //ºǫ́ÐÎʽÔËÐÐ
stats socket /var/lib/haproxy/stats

defaults
mode tcp //haproxyÔËÐÐģʽ£¨http | tcp | health£©
log global
option dontlognull
option redispatch //serverId¶ÔÓ¦µÄ·þÎñÆ÷¹Òµôºó,Ç¿ÖÆ¶¨Ïòµ½ÆäËû½¡¿µµÄ·þÎñÆ÷
retries 3 //Èý´ÎÁ¬½Óʧ°ÜÔò·þÎñÆ÷²»ÓÃ
timeout http-request 10s
timeout queue 1m
timeout connect 10s //Á¬½Ó³¬Ê±
timeout client 1m //¿Í»§¶Ë³¬Ê±
timeout server 1m //·þÎñÆ÷³¬Ê±
timeout http-keep-alive 10s
timeout check 10s //ÐÄÌø¼ì²â
maxconn 600 //×î´óÁ¬½ÓÊý

listen stats //ÅäÖÃhaproxy״̬ҳ£¨ÓÃÀ´²é¿´µÄÒ³Ãæ£©
mode http
bind :8888
stats enable
stats hide-version //Òþ²Øhaproxy°æ±¾ºÅ
stats uri /haproxyadmin?stats //Ò»»áÓÃÓÚ´ò¿ª×´Ì¬Ò³µÄuri
stats realm Haproxy\ Statistics //ÊäÈëÕË»§ÃÜÂëʱµÄÌáʾÎÄ×Ö
stats auth admin:admin //Óû§Ãû:ÃÜÂë

frontend main
bind 0.0.0.0:3306 //ʹÓÃ3306¶Ë¿Ú¡£¼àÌýǰ¶Ë¶Ë¿Ú¡¾±íʾÈκÎip·ÃÎÊ3306¶Ë¿Ú¶¼»á½«Êý¾ÝÂÖ·¬×ª·¢µ½mysql·þÎñÆ÷Ⱥ×éÖС¿
default_backend mysql //ºó¶Ë·þÎñÆ÷×éÃû

backend mysql
balance leastconn //ʹÓÃ×îÉÙÁ¬½Ó·½Ê½µ÷¶È
server mysql1 192.168.95.11:3306 check port 3306 maxconn 300
server mysql2 192.168.95.12:3306 check port 3306 maxconn 300

4£©¡¢Æô¶¯ÈÕÖ¾

# vi /etc/rsyslog.conf

5£©¡¢Æô¶¯haproxy

#service rsyslog restart

6£©¡¢²âÊÔhaproxy

°²ÕÕÅäÖÃÎļþ½øÐÐÏàÓ¦µÄ²âÊÔ

´ò¿ªä¯ÀÀÆ÷ÊäÈë192.168.95.13:8888/haproxyadmin?stats

µÇ½ºóÈçÏÂÈçËùʾ£¬±íÃ÷°²×°haproxy³É¹¦¡£

5.2¡¢°²×°keepalived

¹ÙÍøÏÂÔØ£ºhttp://www.keepalived.org/download.html

ÔÚ192.168.95.13¡¢192.168.95.14°²×°keepalived

1£©¡¢½â¾öȱÉÙµÄÈí¼þ¿âÎļþ

¡¾ÕâÒ»²½ÖèÊÓ¾ßÌåµÄlinux°æ±¾¶ø¶¨£¬ÓÐЩÒѾ­°²×°opensslÁË¡£¾ßÌåÇé¿ö¿ÉÒÔÖ´ÐÐ./configure¾ÍÄܹ»È·¶¨È±²»È±ÉÙÈí¼þ¿âÎļþÁË¡¿

Ê×ÏÈÎÒÃÇÏȽ«keepalived-1.2.19.tar.gz½âѹ£¬È»ºó½øÈëĿ¼./configure²é¿´

# tar -zxvf keepalived-1.2.19.tar.gz
# ./configure --prefix=/usr/local/keepalived --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.el6.x86_64/

ÓÉÉÏͼ¿É¼ûkeepalivedµÄ°²×°ÐèÒªÏȰ²×°Èí¼þOpenSSL

ȱÉÙÍ·Îļþ£¬Ö»ÐèÒª°²×°opensslºÍopenssl-devel¼´¿É

×î¼òµ¥µÄ·½·¨ÊÇ£ºyum -y install openssl openssl-devel

Ã»ÍøµÄÅóÓÑÒ²²»ÓÃÅ£¬½ÓÏÂÀ´½«½éÉܵÄÊÇrpm·½·¨°²×°£º

#¹ÒÔØ¹âÅÌ£¬ÔÚ¹âÅÌÖвéÕÒÈí¼þ¡£Èô¹âÅÌÕÒ²»µ½¾ÍÖ±½ÓÏÂÔØ£¬ÔÙ´«Èëlinux½øÐа²×°

# mount /dev/cdrom /home/suifeng2/rom/
# cd rom/
# cd Packages/
# ls |grep openssl

°²×°keepalivedÈí¼þʱ´æÔÚ¸÷ÖÖÒÀÀµ£¬ÏÂͼÊÇÎÒ°²×°Èí¼þºóÕûÀíµÄÒÀÀµ¹ØÏµÍ¼£º

¼ÈÈ»ÒѾ­ÖªµÀ¸÷Èí¼þÒÀÀµ£¬Ôò¿É°´×îºóÃæµÄÈí¼þ¿ªÊ¼°²×°£º

£¨ÄãÒ²¿ÉÒÔ´ÓÇ°Ãæ¿ªÊ¼½øÐа²×°£¬Ò»²½Ò»²½µÄ²é¿´¸÷¸öÒÀÀµ¹ØÏµ£©

1¡¢°²×°openssl

# rpm -ivh openssl-1.0.1e-30.el6.x86_64.rpm

°²×°openssl³É¹¦

2¡¢°²×°openssl-devel

°²×°libsepol-devel£º

# rpm -ivh libsepol-devel-2.0.41-4.el6.x86_64.rpm

°²×°pkgconfig(libsepol)£º

# rpm -ivh pkgconfig-0.23-9.1.el6.x86_64.rpm

°²×°libselinux-devel£º

# rpm -ivh libselinux-devel-2.0.94-5.8.el6.x86_64.rpm

°²×°keyutils-libs-devel£º

# rpm -ivh keyutils-libs-devel-1.4-5.el6.x86_64.rpm

°²×°libcom_err-devel£º

°²×°krb5-devel£º

# rpm -ivh libcom_err-devel-141.12-21.el6.x86_64.rpm

°²×°zlib-devel£º

# rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm

°²×°openssl-devel£º

# rpm -ivh openssl-devel-1.0.1e-30.el6.x86_64.rpm

2£©¡¢±àÒë°²×°keepalivedÈí¼þ

# cd keepalived-1.2.19
# ./configure --prefix=/usr/local/keepalived --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.el6.x86_64/
# make && make install

# chkconfig --add keepalived #Ìí¼Ó¿ª»ú×ÔÆô£¨ÎÒÔÝʱûÌí¼Ó£©
# chkconfig keepalived on

¡¾×¢Òâ¡¿£º

1¡¢°²×°Ê±./configureÖеġªprefixºóµÄ¼¸¸öÑ¡Ôñ¿ÉÑ¡¿É²»Ñ¡£¬Ñ¡Á˾ͿÉÒÔ²ÉÓÃserviceÖ±½ÓÆô¶¯ÁË¡£½¨Òé×îºÃ¶¼¼ÓÉϰÉ

2¡¢--with-kernel-dirÕâ¸öÑ¡Ïî¸ù¾Ý×Ô¼ºµÄlinux°æ±¾½øÐÐÌîд£¨ÔÚlinuxÖÐʹÓÃÃüÁîuname ¨Ca¿ÉÒԲ鵽£©

3£©¡¢´´½¨ÅäÖÃÎļþ

/etc/keepalived/Îļþ¼ÐÒÑ´æÔÚkeepalived.confÎļþ£¬ÎÒÃǽ«Ëü¸ÄÃûΪkeepalived.conf.back£¬ÔÙ½¨Á¢Ò»¸öÎÒÃÇ×Ô¼ºkeepalived.confÅäÖÃÎļþ¡£

vi /etc/keepalived/keepalived.conf£¨13Óë14ÅäÖÃÎļþ·¾¶Ò»Ö£©

¡¾ÒÔÏÂÊǼòµ¥µÄÅäÖÃÎļþ£¬Ê¹ÓÃʱ×îºÃÈ¥µô×¢ÊÍ¡¿

ÅäÖÃÎļþÏÂÔØ£¨²»º¬×¢ÊÍ£©£º

192.168.95.13ÅäÖÃÎļþ:

! Configuration File for keepalived
#¼òµ¥µÄÍ·²¿£¬ÕâÀïÖ÷Òª¿ÉÒÔ×öÓʼþ֪ͨ±¨¾¯µÈµÄÉèÖ㬴˴¦¾ÍÔݲ»ÅäÖÃÁË£»
global_defs {
notificationd LVS_DEVEL
}
#Ô¤Ïȶ¨ÒåÒ»¸ö½Å±¾£¬·½±ãºóÃæµ÷Óã¬Ò²¿ÉÒÔ¶¨Òå¶à¸ö£¬·½±ãÑ¡Ôñ£»
vrrp_script chk_haproxy {
script "/etc/keepalived/chk.sh" #¾ßÌå½Å±¾Â·¾¶
interval 2 #½Å±¾Ñ­»·ÔËÐмä¸ô
}
#VRRPÐéÄâ·ÓÉÈßÓàЭÒéÅäÖÃ
vrrp_instance VI_1 { #VI_1 ÊÇ×Ô¶¨ÒåµÄÃû³Æ£»
state BACKUP #MASTER±íʾÊÇһ̨Ö÷É豸£¬BACKUP±íʾΪ±¸ÓÃÉ豸¡¾ÎÒÃÇÕâÀïÒòΪÉèÖÃΪ¿ªÆô²»ÇÀÕ¼£¬ËùÒÔ¶¼ÉèÖÃΪ±¸Óá¿
nopreempt #¿ªÆô²»ÇÀÕ¼
interface eth0 #Ö¸¶¨VIPÐèÒª°ó¶¨µÄÎïÀíÍø¿¨
virtual_router_id 11 #VRIDÐéÄâ·Óɱêʶ£¬Ò²½Ð×ö·Ö×éÃû³Æ£¬¸Ã×éÄÚµÄÉ豸ÐèÒªÏàͬ
priority 130 #¶¨ÒåÕą̂É豸µÄÓÅÏȼ¶ 1-254£»¿ªÆôÁ˲»ÇÀÕ¼£¬ËùÒÔ´Ë´¦ÓÅÏȼ¶±ØÐë¸ßÓÚÁíһ̨

advert_int 1 #Éú´æ¼ì²âʱµÄ×é²¥ÐÅÏ¢·¢Ëͼä¸ô£¬×éÄÚÒ»ÖÂ
authentication { #ÉèÖÃÑéÖ¤ÐÅÏ¢£¬×éÄÚÒ»ÖÂ
auth_type PASS #ÓÐPASS ºÍ AH Á½ÖÖ£¬³£Óà PASS
auth_pass asd #ÃÜÂë
}
virtual_ipaddress {
192.168.95.55 #Ö¸¶¨VIPµØÖ·£¬×éÄÚÒ»Ö£¬¿ÉÒÔÉèÖöà¸öIP
}
track_script { #ʹÓÃÔÚÕâ¸öÓòÖÐʹÓÃÔ¤Ïȶ¨ÒåµÄ½Å±¾£¬ÉÏÃæ¶¨ÒåµÄ
chk_haproxy
}

notify_backup "/etc/init.d/haproxy restart" #±íʾµ±Çл»µ½backup״̬ʱ,ÒªÖ´ÐеĽű¾
notify_fault "/etc/init.d/haproxy stop" #¹ÊÕÏʱִÐеĽű¾
}

192.168.95.14ÅäÖÃÎļþ:

ÅäÖÃÎļþÓëÉÏÃæµÄ¼¸ºõÒ»Ñù£¬½ö½ö¸Ä±äpriority 120¡¾Ö»ÐèÒª±ÈÉÏÃæµÄС¼´¿É¡¿

4£©¡¢´´½¨½Å±¾Îļþ

´´½¨ÉÏÃæÅäÖÃÎļþËùÐèµÄ½Å±¾Îļþ£¨13¡¢14Ò»Ñù£©

£¨¼ì²âhaproxyÓÐûÓз¢Éú¹ÊÕÏ£¬·¢Éú¹ÊÕÏÔò½«keepalivedÍ£µô£¬Èóövip£©

# vi /etc/keepalived/chk.sh#!/bin/bash
#
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then
/etc/init.d/keepalived stop
fi

¸øÖ´ÐÐȨÏÞ


# chmod +x /etc/keepalived/chk.sh

Æô¶¯keepalived£º

 

# service keepalived start

°²×°keepalived³É¹¦£¡

6¡¢¹¦ÄܲâÊÔ

²âÊÔ֮ǰÏÈÔÚmysql1ºÍmysql2Öн¨Á¢Ò»¸ömysqlÓû§£¬´ËÓû§¿ÉÒÔÔÊÐí13¡¢14linuxÖ÷»úµÇ½£º

Óû§£ºjack

ÃÜÂ룺321

host£º192.168.95.%

mysql> GRANT ALL ON *.* TO 'jack'@'192.168.95.%' IDENTIFIED BY '321';
mysql> FLUSH PRIVILEGES;

6.1¡¢Á÷³Ì¼òÊö

´ó¸Å½²ÊöÒ»ÏÂÕûÌåµÄÔË×÷Á÷³Ì:

Ê×ÏÈÁ½¸ö11,12µÄmysqlÒÔ¼°13¡¢14µÄhaproxy¡¢keepalived¶¼Æô¶¯£»

keepalivedÔÚkeepalivedȺ×éÖлñÈ¡ÐéÄâIP£¬ÒÔ¼°¼ì²âhaproxyÊÇ·ñ±»kill£»

haproxy¸ºÔ𽫽øÀ´µÄÊý¾Ýת·¢µ½11»òÕß12µÄmysqlÖС£

ÏÂͼÊÇÎÒ»­µÄ¼òµ¥Àí½âͼ£º£¨Ïà¶ÔÀ´Ëµ±È½Ï¼ò½à¹þ£¬´ÕºÏ´ÕºÏ¹þ£©

½ÓÏÂÀ´ÎÒÃǽ«Ò»¸ö¸ö¹¦ÄܵĽøÐвâÊÔÑéÖ¤¡£

6.2¡¢²âÊÔhaproxy¼àÌýǰ¶Ë¶Ë¿Ú3306

1¡¢frontend¼àÌý¶Ë¿Ú3306ʱ£¬½«mysql¡¢haproxy¡¢keepalivedÈ«²¿¿ªÆô

2¡¢Ê¹ÓÃÈÎÒâÒ»¸ömysql¿Í»§¶ËµÇ½Óû§jack

µÇ½³É¹¦(windownsÉϵǽmysql)

3¡¢¸ü¸Äfrontend¼àÌý¶Ë¿ÚΪ3307£¬¼ÌÐø²Ù×÷µÇ½²âÊÔ

µÇ½ʧ°Ü

½á¹û£ºËµÃ÷ÁËfrontend¼àÌý¶Ë¿ÚµÄÓô¦£¬ÓÐÖúÓÚÎÒÃÇÀí½âhaproxyÓ÷¨¡£

6.3¡¢²âÊԸ߿ÉÓÃ+keepalived²»ÇÀÕ¼vip

¿ÉÒÔͨ¹ýhaproxy¼à¿ØÒ³Ãæ»ñ֪˭»ñÈ¡ÁËvip

1¡¢ÒÀ´ÎÆô¶¯13¡¢14µÄkeepalived¡¢haproxy£¨Æô¶¯keepalivedºó½«»á×Ô¶¯¿ªÆôhaproxy£©

2¡¢·ÃÎÊhttp://192.168.95.55:8888/haproxyadmin?stats

13»ñÈ¡ÁËvip

3¡¢# kill -9 8923

Ë¢ÐÂhttp://192.168.95.55:8888/haproxyadmin?stats

14»ñÈ¡ÁËvip£¬»úÆ÷Õý³£¹¤×÷

½á¹û£ºÖ¤Ã÷Á˸߿ÉÓ㬹ÒÁËһ̨Áíһ̨¼ÌÐø¹¤×÷

4¡¢ÖØÐÂÆô¶¯13µÄhaproxyÒÔ¼°keepalived

²¢Ë¢ÐÂhttp://192.168.95.55:8888/haproxyadmin?stats

½á¹û£º´ËʱvipÈÔÔÚ14ÊÖÖУ¬Ö¤Ã÷ÁËkeepalivedÅäÖÃÁ˲»ÇÀÕ¼vip£¬²»±ØÀË·Ñ×ÊÔ´È¥»ñÈ¡vip¡£

6.4¡¢²âÊÔ¸ºÔؾùºâ

1¡¢È«²¿Õý³£Æô¶¯£¬´ËʱvipÔÚ14ÊÖÖÐ

2¡¢·Ö±ðÔÚ11¡¢12ÖпªÆô×¥°ü

# tcpdump -n -i eth0 host 192.168.95.11 and 192.168.95.14
# tcpdump -n -i eth0 host 192.168.95.12 and 192.168.95.14

3¡¢Ê¹Óò»Í¬¿Í»§¶ËµÇ½jackÓû§£¬²»¶ÏÏòÊý¾Ý¿âÌí¼ÓÊý¾Ý

½á¹û£º´Ëʱ14Ïò11¡¢12¶¼Óз¢ËÍÊý¾Ý£¬´Ëʱ֤Ã÷¸ºÔؾùºâ

¡¾ÎÒÃÇÉèÖõÄhaproxyÖÐbalance·½Ê½ÊÇ×îÉÙÁ¬½Ó·½Ê½£¬¼ÙÈô²ÉÓÃroundrobin·½Ê½²âÊÔ½á¹û½«»á¸ü¼ÓÃ÷ÏÔ¡¿

×¢Ò⣺

µ±Ä³Ò»Ì¨mysql¹ÒÁËÒÔºó£¬haproxy»á½«ÆäÌß³ömysql·þÎñÆ÷Ⱥ×é¡£

µ±ÓÐÃüÁî´«À´Ê±»á½«Æäת·¢µ½Õý³£µÄ·þÎñÆ÷ÉÏ¡£

µ±³öÎÊÌâµÄmysql»Ö¸´ºó£¬haproxyÓÖ»á×Ô¶¯µØ½«Ëü·Å»Ømysql·þÎñÆ÷Ⱥ×éÖУ¬²¢ÇÒ×Ô¶¯Í¬²½Ã»ÓÐͬ²½µÄÊý¾Ý

²âÊÔ£º

1¡¢È«²¿Õý³£Æô¶¯

mysql1¡¢mysql2¶¼Õý³£

2¡¢½«mysql2¹Øµô

mysql2³öÎÊÌ⣬½«ÆäÌß³ömysqlȺ×é

3¡¢Æô¶¯mysql2

mysql2»Ö¸´ºóÓÖ½«Æä·Å»ØmysqlȺ×éÀï

¡¾µ±mysql2¹Òµôʱ£¬ÈôÓÐÊý¾Ý²åÈ룬½«»áת·¢¸ømysql1£¬µ±mysql»Ö¸´ºó£¬ÓֻὫÕâЩÊý¾Ýͬ²½µ½mysql2ÖС¿

7¡¢×ܽáÓ뽨Òé

ÔÚÕâÆª²©ÎÄÖÐÎÒÃDz»½ö½öÖ»¹Ø×¢ÕâÒ»Õû¸ömysql¸ß¿ÉÓøºÔؾùºâµÄʵÏÖ·½Ê½£¬ÎÒÃÇ»¹Ó¦¸ÃÀí½âhaproxyÒÔ¼°keepalivedµÄ¹¤×÷·½Ê½¡£HaproxyºÍkeepalivedÕâÁ½¸ö¹¤¾ßºÜÇ¿´ó£¬Á˽âËûÃǵÄʵÏÖ·½Ê½£¬ÄÇô¾Í¿ÉÒÔÒÔ´ËÀàÍÆÓëÆäËû·þÎñÆ÷×éºÏ¹¹½¨Ç¿´ó½¡×³µÄ·þÎñ¼¯Èº¡£ÀýÈçËü¿ÉÒÔÓëapache×éºÏ£¬¹¹³É¸ß¿ÉÓøºÔؾùºâµÄweb¼¯Èº¡£

ÕâÆªÎÄÕÂÖÐÖ»ÊǼò¼òµ¥µ¥µÄ´î½¨ÁËÒ»¸ömysql¸ß¿ÉÓøºÔؾùºâµÄ»·¾³£¬ÕæÕýÓ¦Óõ½Éú²ú»·¾³ÖУ¬»¹ÐèÒª¸ù¾Ý¾ßÌåÏîÄ¿½øÐÐÏàÓ¦µÄÐ޸ġ£

 
   
3543 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ