系统信息:
mysql主库 192.168.1.152 CentOS 5.6 mysql 5.6.
mysql从库 192.168.1.153 CentOS 5.6 mysql 5.6.
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
# LVS 安装配置:(yum -y install ipvsadm)
# Keepalived 安装配置
#编辑或者新建(主备除两地方,其他一样.备库改为 :state BACKUP ,priority 50)
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { #全局标识模块
notification_email { #定义邮件通知
test@.com #目标邮箱
}
notification_email_from test@.com #发送邮箱
smtp_server 127.0.0.1 #发送邮箱的smtp服务器
smtp_connect_timeout #smtp服务器连接超时时间
router_id LVS_DEVEL
} vrrp_instance VI_1 {
state MASTER #本实例启动状态:MASTER/BACKUP
interface eth0 #监控的网络接口
virtual_router_id #vrrp实例(同一个组主备服务器设置一样)
priority #优先级高的为master,不能超过255。(BACKUP可设置为50)
advert_int #均衡器检测间隔1秒(服务器设置都一样)
authentication { #验证类型及密码(服务器设置都一样)
auth_type PASS #认证方式,PASS或AH
auth_pass #认证密码
}
virtual_ipaddress { #虚拟ip地址virtual_ipaddress,可以定义多个
192.168.1.150
}
} virtual_server 192.168.1.150 { #定义虚拟服务器,与上面的virtual_server一样
delay_loop #健康检查时间间隔,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秒,动态服务建议开启
protocol TCP #转发协议protocol,一般有tcp和udp两种 #后端真实服务器,有几台就设置几个
real_server 192.168.1.152 {
weight #权重越大负载分越大,0表示失效
SSL_GET { #健康检查方式:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout
nb_get_retry
delay_before_retry
}
}
real_server 192.168.1.153 {
weight
SSL_GET {
connect_timeout
nb_get_retry
delay_before_retry
}
}
}
#152服务器IP
[root@centos152 keepalived]# ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast qlen
link/ether :0c::3b:c4:a5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.152/ brd 192.168.1.255 scope global eth0
inet 192.168.1.150/ scope global eth0
#现在在第三台mysql服务器中连接VIP测试 #ping VIP 正常
ping 192.168.1.150 #连接到 VIP 正常
mysql -umysqlproxy -pmysqlproxy -h192.168.1. --port3306 #到 mysql 服务器 和 查看进程,查看用户 mysqlproxy 连接到哪台服务器
mysql> show processlist; #停止 mysqlproxy 所在的服务器keepalived 服务
/etc/rc.d/init.d/keepalived stop 此时在150 连接的mysql切换到另一台服务器的mysql数据库了。 /etc/rc.d/init.d/keepalived start
末尾有些测试还没有规范,仅供参考。
更多参考: