此文凝聚笔者不少心血请尊重笔者劳动,转载请注明出处。
http://freeze.blog.51cto.com/ 

关于F5: 

众所周知F5是强大的负载均衡神器,可以实现负载均衡,会话保持,SSL卸载,健康状态检测等,关于F5就不过多介绍,想熟悉的可以去张宴博客看一些中文版的介绍,如果有使用到F5对后端数据库做负载均衡,则需要对数据库池进行状态检测检查,从而数据库实现高可用。F5负载均衡器可以针对后端mysql数据库实现读写分离或者负载均衡。本文着重介绍F5在对mysql数据库进行负载均衡时,进行登录式的健康状态检测。

主要应用是在其状态发生改变时,实现服务的迁移。


关于环境:

笔者F5的的型号为BIG IP 6400

系统版本如下图

BIG-IP 9.4.8


一、首先要创建F5的健康状态检测脚本。

默认的脚本不带对mysql登录式的状态检测脚本,需自己创建。(oracle的有)


1.1通过SSH,登录F5系统

1.2 创建mysql的状态检测脚本,支持shell脚本

cd /usr/bin/monitors/  #记住这个目录,是健康状态可执行程序目录

创建脚本 vi mysqld_check

#!/bin/bash member_ip=$(echo "$1" | sed 's/::ffff://') member_port="${2:-3306}"   #定义检测mysql的端口 mysql_user="${3:-check}"     #定义登录检测的帐号 mysql_password="${4:-check123}" #定义登录检测的密码 timeout="${5:-3}"  pidfile="/var/run/$MON_TMPL_NAME.$member_ip.$member_port.pid" [ -f "$pidfile" ] && kill -9 $(cat $pidfile) >/dev/null 2>&1 rm -f "$pidfile" ; echo "$$" > "$pidfile" tmpfile="/var/run/$MON_TMPL_NAME.$member_ip.$member_port.tmp" rm -f "$tmpfile"  /usr/bin/mysql -e "show tables" -u  "$mysql_user"  -P $member_port  -h $member_ip --password="$mysql_password" --database=mysql --connect_timeout=$timeout 2>"$tmpfile" |  grep -q event #F5自带有mysql的客户端,该行主要是用自带客户端执行非交互式的show tables命令,然后抓取event的表,如果抓取到,返回为0,则判断可以登录数据库。数据库状态正常。 if [ $? -eq 0 ];then    echo "up"    rm -f "$pidfile"    rm -f "$tmpfile"    exit 0 else    # Log the reason for the failure    logger -p local0.notice "$MON_TMPL_NAME($member_ip:$member_port) MySQL Healthcheck Failed: $(cat "$tmpfile")"    # Echo to stderr for command-line testing    echo "down" >&2 #   cat "$tmpfile" >&2    rm -f "$pidfile"    rm -f "$tmpfile"    exit 1 fi

保存退出,记得给脚本加可执行权限。

chmod +x mysqld_check

二、在F5管理页面创建监控命令,并添加使用。

进到F5的管理界面,创建一个新的监控命令。入下图。

点开create,有很多的模板,选额外我们定义的模板,然后定义

 

把我们刚才定义的命令加进来,并且定义参数。

之后就需要把脚本启动到数据库的pool就行了。

 

然后查看池的成员,绿色表示通过健康状态检测正常的服务器,当其中某一台通过状态检测判断是down的话,F5会自动剔除其成员,从而实现高可用。

 

 

   整个F5实现mysql的登录式状态检测优点是可以判断数据库的假死状态,通常大多数判断mysql的状态都是去探测3306端口,如果出现mysql的读写卡死,用户无法登录,端口还存在的话,可能会影响业务。所以登录是的判断是最精确和可靠的。

对linux,运维感兴趣的童鞋环境加Linux交流群:170838394

linux运维培训 http://www.magedu.com