lvs+keepalived,后台数据库怎么同步

2025-02-28 19:29:46
推荐回答(1个)
回答1:

环境:
mysql主主同步
node1:192.168.1.51
node2:192.168.1.54
VIP:192.168.1.55

安装lvs \\只需要ipvsadm模块
#yum install ipvsadm
安装keepalived
#tar -zxvf keepalived-1.2.7.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/
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
#mkdir /etc/keepalived
#iptables -A INPUT -p vrrp -j ACCEPT //这里不开启vrrp协议的端口,会造成backup服务器检测不到master服务器的是否正常而自动启动backup的应用服务

node1:192.168.1.53
#vim /etc/keepalived/keepalived.conf
global_defs {

notification_email {

admin@company.com

}

notification_email_from alarm@company.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS1

}

vrrp_sync_group test {

group {

loadbalance

}

}

vrrp_instance loadbalance {

state MASTER

interface eth0

lvs_sync_daemon_inteface eth0

virtual_router_id 51

priority 200

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.55 dev eth0 label eth0:1 //55为VIP

}

}

virtual_server 192.168.1.55 3306 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 20

protocol TCP

sorry_server 192.168.1.54 3306

real_server 192.168.1.53 3306 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

node2:192.168.1.54

vim /etc/keepalived/keepalived.conf

global_defs {

notification_email {

admin@company.com

}

notification_email_from alarm@company.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS1

}

vrrp_sync_group test {

group {

loadbalance

}

}

vrrp_instance loadbalance {

state BACKUP

interface eth0

lvs_sync_daemon_inteface eth0

virtual_router_id 51

priority 50 //必须比master低

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.55 dev eth0 label eth0:1

}

}

virtual_server 192.168.1.55 3306 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 20

protocol TCP

sorry_server 192.168.1.54 3306

real_server 192.168.1.53 3306 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

node1 node2

vim /etc/rc.d/init.d/realserver.sh

#!/bin/bash

# description: Config realserver lo and apply noarp

SNS_VIP=10.1.1.176

/etc/rc.d/init.d/functions

case "$1" in

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

/sbin/route add -host $SNS_VIP dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null 2>&1

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

echo "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

exit 0

启动(先启动数据库)
#/etc/rc.d/init.d/realserver.sh start
#/etc/rc.d/init.d/keepalived start

#echo “/etc/rc.d/init.d/realserver.sh start” >> /etc/rc.local
#echo “/etc/rc.d/init.d/keepalived start” >> /etc/rc.local

查看状态
# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.55:mysql rr persistent 20
-> 192.168.1.53:mysql Route 3 0 0

测试
ü 停掉master上的mysql,看看能否自动切换到sorry_server,使用如下命令查看:ipvsadm –ln。

ü 停掉master上的keepalived,看写VIP是否会迁移到backup。

ü 启动master上的mysql,看是否能切换回master。

ü 启动master上的keepalived,看VIP是否会迁移回master上。

ü 重启master的系统,看看切换过程是否OK