keepalived mysql 主从能负载均衡么
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived mysql 主从能负载均衡么相关的知识,希望对你有一定的参考价值。
参考技术A 部署完成之后,通过VIP:192.168.21.254,根据LVS调度算法来访问后端真实的mysql从服务器,实现负载均衡。具体操作:
第一部分:分别在两台MySQL从服务器上操作
一、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
二、配置防火墙,开启3306端口
vi /etc/sysconfig/iptables #编辑
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙
:wq! #保存退出
/etc/init.d/iptables restart #重启防火墙使配置生效
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容 版权所有,转载请注明出处及原文链接
三、绑定LVS虚拟服务器(VIP):192.168.21.254到lo:0
vi /etc/rc.d/init.d/realserver #编辑,添加以下代码
#################################################
#!/bin/sh
# chkconfig: - 80 90
# description:realserver
# mysql_vip start realserver
mysql_vip=192.168.21.254 #LVS虚拟服务器(VIP)
. /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $mysql_vip netmask 255.255.255.255 broadcast $mysql_vip
/sbin/route add -host $mysql_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 $mysql_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
#################################################
chmod +x /etc/rc.d/init.d/realserver #添加脚本执行权限
chkconfig realserver on #添加开机启动
/etc/rc.d/init.d/realserver start #开启,参数stop为关闭
四、调整服务器参数,使LVS虚拟服务器(VIP)忽略ARP广播包
vi /etc/sysctl.conf #编辑
net.ipv4.ip_forward= 1 #修改0为1,开启转发
net.ipv4.conf.lo.arp_ignore= 1
net.ipv4.conf.lo.arp_announce= 2
net.ipv4.conf.all.arp_ignore= 1
net.ipv4.conf.all.arp_announce= 2
:wq! #保存退出
/sbin/sysctl -p #使配置立即生效
五、设置能够远程监控MySQL主从同步状态的MySQL用户和密码
mysql -u root -p #进入MySQL控制台
insert into mysql.user(Host,User,Password) values('localhost','checkslave',password('123456')); #新建账户checkslave,密码123456
flush privileges; #刷新系统授权表
grant all on *.* to 'checkslave'@'192.168.21.129' identified by '123456' with grant option; #允许账户checkslave从LVS主服务器192.168.21.129连接到数据库服务器
grant all on *.* to 'checkslave'@'192.168.21.130' identified by '123456' with grant option; #允许账户checkslave从LVS从服务器192.168.21.130连接到数据库服务器
第二部分:分别在两台LVS主备服务器上操作
一、关闭SElinux、配置防火墙
1、vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
2、vi /etc/sysconfig/iptables #编辑
-A RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT #允许VRRP(虚拟路由器冗余协议)组播地址通信
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙
:wq! #保存退出
/etc/init.d/iptables restart #重启防火墙使配置生效
二、安装lvs软件
yum install ipvsadm #Linux 2.6内核已经集成了lvs软件,此处ipvsadm为lvs管理工具
modprobe ip_vs #加载ip_vs
三、安装keepalived
yum install gcc gcc-c++ make openssl-devel kernel-devel ncurses-devel #安装编译工具包
下载keeplived:http://www.keepalived.org/software/keepalived-1.2.12.tar.gz
上传keepalived-1.2.12.tar.gz到/usr/local/src目录
cd /usr/local/src
tar zxvf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure #配置,必须看到以下提示,说明配置正确,才能继续安装
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
make #编辑
make install #安装
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/keepalived #添加执行权限
chkconfig keepalived on #设置开机启动
service keepalived start #启动
service keepalived stop #关闭
service keepalived restart #重启
四、安装perl、perl-DBI、DBD-mysql模块以及MySQL客户端 #perl脚本连接MySQL数据库需要
yum install perl perl-DBI perl-DBD-MySQL mysql #执行此命令安装
vi /tmp/test_perl.pl
#!/usr/bin/perl
print "Hello, world!\n";
:wq! #保存退出
perl /tmp/test_perl.pl #运行测试脚本,如果出现:Hello,world! 说明perl安装成功
perldoc DBI #查看DBI模块是否安装
perldoc DBD::mysql #查看DBD::mysql模块是否安装
五、配置keepalived
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-bak
vi /etc/keepalived/keepalived.conf #编辑,修改为以下代码
##################################################################################################
! Configuration File for keepalived
global_defs
notification_email
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_instance VI_1
state MASTER #LVS备机修改为BACKUP
interface eth0
virtual_router_id 51
priority 100 #LVS备机修改为80
advert_int 1
authentication
auth_type PASS
auth_pass 1111
virtual_ipaddress
192.168.21.254
notify_master "/etc/keepalived/clean_arp.sh" #LVS主备机都为notify_master
virtual_server 192.168.21.254 3306
delay_loop 30
lb_algo wlc
lb_kind DR
#nat_mask 255.255.255.0
persistence_timeout 120
protocol TCP
real_server 192.168.21.127 3306
weight 1
MISC_CHECK
misc_path "/etc/keepalived/check_slave.pl 192.168.21.127"
misc_dynamic
real_server 192.168.21.128 3306
weight 1
MISC_CHECK
misc_path "/etc/keepalived/check_slave.pl 192.168.21.128"
misc_dynamic
##################################################################################################
:wq! #保存退出
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容 版权所有,转载请注明出处及原文链接
六、设置MySQL主从监控脚本check_slave.pl
vi /etc/keepalived/check_slave.pl #编辑,添加以下代码
##################################################################################################
#!/usr/bin/perl -w
use DBI;
use DBD::mysql;
# CONFIG VARIABLES
$SBM = 120;
$db = "osyunweidb";
$host = $ARGV[0];
$port = 3306;
$user = "checkslave";
$pw = "123456";
# SQL query
$query = "show slave status";
$dbh = DBI->connect("DBI:mysql:$db:$host:$port", $user, $pw, RaiseError => 0,PrintError => 0 );
if (!defined($dbh))
exit 1;
$sqlQuery = $dbh->prepare($query);
$sqlQuery->execute;
$Slave_IO_Running = "";
$Slave_SQL_Running = "";
$Seconds_Behind_Master = "";
while (my $ref = $sqlQuery->fetchrow_hashref())
$Slave_IO_Running = $ref->'Slave_IO_Running';
$Slave_SQL_Running = $ref->'Slave_SQL_Running';
$Seconds_Behind_Master = $ref->'Seconds_Behind_Master';
$sqlQuery->finish;
$dbh->disconnect();
if ( $Slave_IO_Running eq "No" || $Slave_SQL_Running eq "No" )
exit 1;
else
if ( $Seconds_Behind_Master > $SBM )
exit 1;
else
exit 0;
##################################################################################################
:wq! #保存退出
chmod +x /etc/keepalived/check_slave.pl #添加脚本执行权限
七、设置更新LVS虚拟服务器(VIP)地址的arp记录到网关脚本
vi /etc/keepalived/clean_arp.sh #编辑,添加以下代码
#!/bin/sh
VIP=192.168.21.254
GATEWAY=192.168.21.2
/sbin/arping -I eth0 -c 5 -s $VIP $GATEWAY &>/dev/null
:wq! #保存退出
chmod +x /etc/keepalived/clean_arp.sh #添加脚本执行权限
八、测试LVS+Keepalived是否正常运行
service keepalived restart #在两台LVS主备服务器上重启keepalived
ipvsadm -L #在两台LVS主备服务器上执行此命令,
ip addr show #在两台LVS主备服务器上执行此命令,
#从图中可以看到VIP:192.168.21.254现在指向的是LVS主服务器
1、关闭LVS主服务器的keepalived服务,查看LVS备服务器是否正常接管keepalived
service keepalived stop #在LVS主服务器上运行
此时,在两台LVS主备服务器上执行ip addr show命令,
系统运维 www.osyunwei.com 温馨提醒:qihang01原创内容 版权所有,转载请注明出处及原文链接
可以看到VIP:192.168.21.254现在指向的是LVS备服务器,说明LVS备服务器已经接管keepalived,测试成功。
2、停止MySQL从服务器192.168.21.127上面的主从同步服务
mysql -u root -p #进入MySQL控制台
slave start; #停止同步
在LVS备服务器执行ipvsadm -L命令,可以看到MySQL从服务器192.168.21.127已经从负载均衡列表中被剔除了,测试成功。
3、从客户端连接LVS虚拟服务器(VIP):192.168.21.254
telnet 192.168.21.254 3306 #执行此命令,说明测试成功。
tail -f /var/log/messages #查看LVS日志信息
至此,LVS+Keepalived实现MySQL从库读操作负载均衡配置完成。
mysql主从之LVS+keepalived+双主MySQL 负载均衡
LVS(Linux Virtual Server)即Linux 虚拟服务器,是一个的开源负载均衡项目,目前LVS 已经被集成到Linux 内核模块中。LVS 是四层负载均衡,也就是说建立在OSI 模型的第四层——传输层之上,传输层上有我们熟悉的TCP/UDP,LVS 支持TCP/UDP 的负载均衡。
一 环境
192.168.132.120 VIP
192.168.132.123 LVS01,keepalived
192.168.132.124 LVS02,keepalived
192.168.132.121 MySQL 主
192.168.132.122 MySQL 主
在192.168.132.123和192.168.132.124安装lvs的管理软件,以及安装keepalive(参考上篇)
[[email protected] ~]# yum install ‐y ipvsadm*
LVS 安装完成,查看当前LVS 集群
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn
二 LVS介绍
2.1 LVS 工作模式
NAT 模式
TUN 模式
DR 模式
2.2 LVS 负载均衡调度算法
轮询调度(Round Robin 简称‘RR‘)算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。
加权轮询(Weight Round Robin 简称‘WRR‘)算法主要是对轮询算法的一种优化与补充,LVS 会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器A 的权值为1,服务器B 的权值为2,则调度器调度到服务器B 的请求会是服务器A 的两倍。权值越高的服务器,处理的请求越多。
最小连接调度(Least Connections 简称‘LC‘)算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1;当连接中断或者超时,其连接数减1。
加权最少连接(Weight Least Connections 简称‘WLC‘)算法是最小连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
基于局部性的最少连接调度算法lblc
复杂的基于局部性最少的连接算法lblc目标地址散列调度算法 dh
源地址散列调度算法 sh
固定调度算法:rr,wrr,dh,sh
动态调度算法:wlc,lc,lblc,lblcr
NAT 模式:网络地址转换
DR 模式:直接路由
2.3 配置
LVS01配置:
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs router_id lvs01 vrrp_instance VI_1 state BACKUP interface ens33 virtual_router_id 51 priority 100 nopreempt advert_int 1 authentication auth_type PASS auth_pass 1111 virtual_ipaddress 192.168.132.120 virtual_server 192.168.132.120 3306 delay_loop 6 protocol TCP lb_algo rr lb_kind DR real_server 192.168.132.121 3306 TCP_CHECK connect_timeout 3 nb_get_retry 3 connect_port 3306 delay_before_retry 3 real_server 192.168.132.122 3306 TCP_CHECK connect_timeout 3 nb_get_retry 3 connect_port 3306 delay_before_retry 3
LVS02配置
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs router_id lvs02 vrrp_instance VI_1 state BACKUP interface ens33 virtual_router_id 51 priority 90 nopreempt advert_int 1 authentication auth_type PASS auth_pass 1111 virtual_ipaddress 192.168.132.120 virtual_server 192.168.132.120 3306 delay_loop 6 protocol TCP lb_algo rr lb_kind DR real_server 192.168.132.121 3306 TCP_CHECK connect_timeout 3 nb_get_retry 3 connect_port 3306 delay_before_retry 3 real_server 192.168.132.122 3306 TCP_CHECK connect_timeout 3 nb_get_retry 3 connect_port 3306 delay_before_retry 3
数据库配置脚本
master1和master2都操作
[[email protected] ~]# vim /opt/realserver.sh
#!/bin/bash #description: Config realserver VIP=192.168.132.120 /etc/rc.d/init.d/functions case "$1" in start) /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $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) /sbin/ifconfig lo:0 down /sbin/route del $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
Realserver 配置:
arp_ignore
arp:请求包,响应包
0:响应任意网卡上接收到的对本机IP 地址的arp 请求(包括环回网卡上的地址),而不管该目的IP 是否在接收网卡上。
1:只响应目的IP 地址为接收网卡上的本地地址的arp 请求。
当arp_ignore 参数配置为0 时,eth1 网卡上收到目的IP 为环回网卡IP 的arp 请求,但是eth1 也会返回arp 响应,把自己的mac 地址告诉对端。
当arp_ignore 参数配置为1 时,eth1 网卡上收到目的IP 为环回网卡IP 的arp 请求,发现请求的IP 不是自己网卡上的IP,不会回arp 响应。
当arp_announce 参数配置为0 时,系统要发送的IP 包源地址为eth1 的地址,IP 包目的地址根据路由表查询判断需要 从eth2 网卡发出,这时会先从eth2 网卡发起一个arp 请求,用于获取目的IP 地址的MAC 地址。该arp 请求的源MAC 自然是eth2 网卡的MAC 地址,但是源IP 地址会选择eth1 网卡的地址。当arp_announce 参数配置为2 时,eth2 网卡发起arp 请求时,源IP 地址会选择eth2 网卡自身的IP 地址。
arp_announce
0:允许使用任意网卡上的IP 地址作为arp 请求的源IP,通常就是使用数据包的源IP。
1:尽量避免使用不属于该发送网卡子网的本地地址作为发送arp 请求的源IP 地址。
2:忽略IP 数据包的源IP 地址,选择该发送网卡上最合适的本地地址作为arp 请求的源IP 地址。源IP,源MAC,目的IP,目的MAC
arp_ignore 和arp_announce 参数在DR 模式下的作用
1. arp_ignore
因为DR 模式下,每个真实服务器节点都要在环回网卡上绑定虚拟服务IP。这时候,如果客户端对于虚拟服务IP 的arp请求广播到了各个真实服务器节点,如果arp_ignore 参数配置为0,则各个真实服务器节点都会响应该arp 请求,此时客户端就无法正确获取LVS 节点上正确的虚拟服务IP 所在网卡的MAC 地址。所以DR 模式下要求arp_ignore 参数要求配置为1。
2. arp_announce
每个机器或者交换机中都有一张arp 表,该表用于存储对端通信节点IP 地址和MAC 地址的对应关系。当收到一个未知IP 地址的arp 请求,就会再本机的arp 表中新增对端的IP 和MAC 记录;当收到一个已知IP 地址(arp 表中已有记录的地址)的arp 请求,则会根据arp 请求中的源MAC 刷新自己的arp 表。
如果arp_announce 参数配置为0,则网卡在发送arp 请求时,可能选择的源IP 地址并不是该网卡自身的IP 地址,这时候收到该arp 请求的其他节点或者交换机上的arp 表中记录的该网卡IP 和MAC 的对应关系就不正确,可能会引发一些未知的网络问题,存在安全隐患。所以DR 模式下要求arp_announce 参数要求配置为2。
[[email protected] ~]# chmod +x /opt/realserver.sh
[[email protected] ~]# chmod +x /opt/realserver.sh
[[email protected] ~]# /opt/realserver.sh start
[[email protected] ~]# chmod +x /etc/rc.d/init.d/functions
[[email protected] ~]# /opt/realserver.sh start
/etc/rc.d/init.d/functions: line 690: return: can only `return‘ from a function or sourced script SIOCADDRT: File exists RealServer Start OK
把这个脚本加入开机自启动
[[email protected] ~]# vim /etc/rc.d/rc.local
/opt/realserver.sh start
[[email protected] ~]# chmod +x /etc/rc.d/rc.local
master2相同配置方法
lvs启动keepalived
[[email protected] ~]# systemctl start keepalived
[[email protected] ~]# systemctl status keepalived
keepalived.service - LVS and VRRP High Availability Monitor Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2019-07-11 10:05:21 EDT; 12s ago
四 验证
4.1 查看虚拟IP
[[email protected] ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:f0:04:c9 brd ff:ff:ff:ff:ff:ff inet 192.168.132.123/24 brd 192.168.132.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::a6b5:aa2c:b3c7:3415/64 scope link valid_lft forever preferred_lft forever 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:f0:04:d3 brd ff:ff:ff:ff:ff:ff inet 192.168.254.123/24 brd 192.168.254.255 scope global ens34 valid_lft forever preferred_lft forever inet6 fe80::c37e:949c:9d3:d204/64 scope link valid_lft forever preferred_lft forever
[[email protected] ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ac:6a:38 brd ff:ff:ff:ff:ff:ff inet 192.168.132.124/24 brd 192.168.132.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.132.120/32 scope global ens33 #虚拟IP valid_lft forever preferred_lft forever inet6 fe80::2333:c431:914d:1a31/64 scope link valid_lft forever preferred_lft forever 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ac:6a:42 brd ff:ff:ff:ff:ff:ff inet 192.168.254.124/24 brd 192.168.254.255 scope global ens34 valid_lft forever preferred_lft forever inet6 fe80::d4b5:199b:3d5a:ff0f/64 scope link valid_lft forever preferred_lft forever
4.2 使用192.168.132.125连接数据库
[[email protected] ~]# mysql -uroot -h192.168.132.120 -p1234567
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| master1 |
| master2 |
| mysql |
| performance_schema |
| sys |
+--------------------+
4.3 查看192.168.132.120所在服务器
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.132.120:3306 rr -> 192.168.132.121:3306 Route 1 0 1 -> 192.168.132.122:3306 Route 1 1 0
则keepalived+lvs实现负载均衡高可用配置完成
4.4 负载均衡验证
LVS负载均衡,在发现如果后端的mysql不能连接,就不会把数据发送给服务器
[[email protected] ~]# systemctl stop mysqld
[[email protected] ~]# tail -f /var/log/messages
Jul 11 10:25:46 lvs02 Keepalived_healthcheckers[1386]: Removing service [192.168.132.121]:tcp:3306 to VS [192.168.132.120]:tcp:3306
Jul 11 10:25:52 lvs02 Keepalived_healthcheckers[1386]: Received EPOLLHUP for fd 8 #同时一直看状态
[[email protected] ~]# systemctl start mysqld
[[email protected] ~]# tail -f /var/log/messages
Jul 11 10:27:52 lvs02 Keepalived_healthcheckers[1386]: TCP connection to [192.168.132.121]:tcp:3306 success. Jul 11 10:27:52 lvs02 Keepalived_healthcheckers[1386]: Adding service [192.168.132.121]:tcp:3306 to VS [192.168.132.120]:tcp:3306
4.5 高可用验证
当lVS的其中一台宕机,虚拟盘就会跳到另一台上去
[[email protected] ~]# systemctl stop keepalived
[[email protected] ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ac:6a:38 brd ff:ff:ff:ff:ff:ff inet 192.168.132.124/24 brd 192.168.132.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::2333:c431:914d:1a31/64 scope link valid_lft forever preferred_lft forever 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ac:6a:42 brd ff:ff:ff:ff:ff:ff inet 192.168.254.124/24 brd 192.168.254.255 scope global ens34 valid_lft forever preferred_lft forever inet6 fe80::d4b5:199b:3d5a:ff0f/64 scope link valid_lft forever preferred_lft forever
[[email protected] ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:f0:04:c9 brd ff:ff:ff:ff:ff:ff inet 192.168.132.123/24 brd 192.168.132.255 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.132.120/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::a6b5:aa2c:b3c7:3415/64 scope link valid_lft forever preferred_lft forever 3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:f0:04:d3 brd ff:ff:ff:ff:ff:ff inet 192.168.254.123/24 brd 192.168.254.255 scope global ens34 valid_lft forever preferred_lft forever inet6 fe80::c37e:949c:9d3:d204/64 scope link valid_lft forever preferred_lft forever
继续连接数据库
[[email protected] ~]# mysql -uroot -h192.168.132.120 -p1234567
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| master1 |
| master2 |
| mysql |
| performance_schema |
| sys |
+--------------------+
以上是关于keepalived mysql 主从能负载均衡么的主要内容,如果未能解决你的问题,请参考以下文章
双机高可用负载均衡MySQL (读写分离主从自动切换)架构设计
双机高可用负载均衡MySQL(读写分离主从自动切换)架构设计