环境描述:

mysql版本5.6.37    keepalived-1.2.19    系统centos 7:3.10.0-514.26.2.el7    web是:windows  server 2012  IIS

mysql部署了主从,使用keepalived做高可用,防止数据库故障。web中连接数据库使用了keepalived的VIP地址。

问题描述:

测试同事在测试时,发现网站的日志如下:

日志时间:2019-04-11 14:00:14,314 [29]
日志级别:ERROR
日 志 类:Logger [(null)]
Authentication to host '172.16.179.167' for user 'user' using method 'mysql_native_password' failed with message: Reading from the stream has failed.
MySql.Data.MySqlClient.MySqlException (0x80004005): Authentication to host '172.16.179.167' for user 'dcyy' using method 'mysql_native_password' failed with message: Reading from the stream has failed. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Reading from the stream has failed. ---> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。
在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)

尝试过:修改mysql的连接数,skip-name-resolve, 系统的内存够用,系统的ulimit 调整为最大值,包括在IIS中添加sslMode=none.  这个故障还是无法解决!

通过抓包分析:当web的请求发送到数据库后,完成3次握手以后,建立连接,然后开始走mysql协议,这时候WEB服务使用指定的用户和密码及数据库参数去访问数据库,然后直接被数据库发来RST包拒绝了。

查看抓取的包,访问使用是数据库协议是正确的。

正常情况下:数据库是应该给一个返回值的。不可能是RST。如下是正常情况下的抓包。

经用验证。把使用的keepalived的VIP地址,更换为主库的IP地址后,故障没再出现。现在是怎么解决这个问题。为什么keepalived的回应值是RST呢?

下面附加keepalived的配置文件:

主库上keepalived的配置如下:

[root@DB_M ~]# cat /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 i-tgwtglov
}

vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 51
priority 150
advert_int 3
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.179.167

}
}

virtual_server 172.16.179.167 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 7200
protocol TCP

real_server 172.16.179.165 3306 {
weight 3
notify_down /data/mysql/mysql.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}

从库上keepalived的配置如下:

[root@DB_S ~]# cat /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 i-tgwtglov
}

vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 51
priority 50
advert_int 3
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.179.167

}
}

virtual_server 172.16.179.167 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 7200
protocol TCP

real_server 172.16.179.166 3306 {
weight 3
notify_down /data/mysql/mysql.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}

请忽略配置了一个read_server ,做主从的目的就是防止mysql故障。环境就是只使用主库,当主库宕机后,才使用从库。

请大家帮忙看看!谁见过这个问题。该怎么处理啊。不然现在环境只用的主库的IP地址,keepalived就没用了。

keepalived+mysql主从环境,keepalived返回值是RST,需求解决方法?的更多相关文章

  1. mysql主从同步的键值冲突问题的解决方法

    转自https://njs375666635.iteye.com/blog/2242067 多主互备和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题 出现的问题(多主自 ...

  2. Visual Studio 2013 Ultimate & IIS Express 8.0 错误 [iisexpress.exe”已退出,返回值为 -1073741816 (0xc0000008)] 解决方法

    1. 开发环境 Visual Studio 2013 Ultimate IIS 8.0 Express 2. 错误信息 错误提示:iisexpress.exe”已退出,返回值为 -1073741816 ...

  3. .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)

    最近在项目中与别的公司对接业务,对方是Java语言,需要调用对方的WebServices,结果常规的添加web引用的方法可以传过去值,但是返回值为null 查了很多资料,没有解决方法 思考应该是.Ne ...

  4. VS 返回值被忽略的解决方法

    •问题 用 Visual Studio 编写 C++ 代码的时候,一旦用到 scanf , freopen 等函数的时候,编译器总会不合时宜的给你提示 "返回值被忽略",那么该如何 ...

  5. Lvs+keepalived+mysql主从热备

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  6. 监控Mysql主从环境下Slave延迟状态的操作记录

    在MySQL主从环境下,通常会根据Seconds_Behind_Master的值来判断slave的延迟状态,这么做在大部分情况下尚可接受,但其实是并不够准确的.对于Slave延迟状态的监控,应该考虑多 ...

  7. java通过jdbc访问mysql,update数据返回值的思考

    java通过jdbc访问mysql,update数据返回值的思考 先不说那么多,把Java代码贴出来吧. public static void main(String[] args) throws I ...

  8. 用 Docker 构建 MySQL 主从环境

    开源Linux 一个执着于技术的公众号 前言 本篇文章记录使用 docker-compose 以及 dockerfile 来构建基于 binlog 的 MySQL 主从环境.如果你严格按照文中的步骤进 ...

  9. 返回值是JSON的阿贾克斯方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 模拟setTimeOut

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. c#错误cs0006

    生成解决方案时报“error CS0006: Metadata file '.../.../.../xxx.dll'could not be found". 错误列表-下拉框选择整个解决方案 ...

  3. ios12更新开发者需要做的

    1.StatusBar内部结构改变 现象:crash crash log: -[_UIStatusBarIdentifier isEqualToString:]: unrecognized selec ...

  4. ubuntu16.04 解决boot空间不足

    1. dpkg --get-selections |grep linux-image #查看已安装内核版本号 2. uname -a #查看现运行版本 3. sudo apt-get purge 版本 ...

  5. (转)解决NSMutableAttributedString富文本,不同文字大小水平轴对齐问题(默认底部对齐)

    默认是底部对齐,其实对的也不齐, 目标效果:  代码: NSBaselineOffsetAttributeName 基线偏移量: 调整: NSBaselineOffsetAttributeName的值 ...

  6. 07_mysql常用sql语句

    一.数据库相关 1.创建数据库: mysql> create database test default character set utf8 collate utf8_general_ci;Q ...

  7. 使用Docker搭建LNMP开发环境

    1.什么是Docker Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技 ...

  8. spring AOP知识点总结以及日志的输出

    AOP的作用就是在基于OCP在不改变原有系统核心业务代码的基础上动态添加一些扩展功能.通常应用于日志的处理,事务处理,权限处理,缓存处理等等 首先,使用AOP需要添加的依赖有:spring-conte ...

  9. echart 百度地图实现效果

    1 必须引入 echarts.js文件 以及 china.js 点文件才可以执行代码2 ehcart官方文档有点小恶心,看了半天,好多东西都不是很清楚,必须挨个实验才行,希望对一些初学者来说可以少走一 ...

  10. B/S与C/S的优缺点

     B/S:Browser/Server,即浏览器/服务器架构,一般用于网站: 优点:无需安装,不需要更新客户端: 缺点:交互性差,安全性低. C/S:Client/Server,即客户端/服务器端架构 ...