[转载]高可用环境的Keepalived+mysql 自动切换

Keepalived+mysql 自动切换
网络结构:
VIP 192.168.20.50
mysq11 192.168.20.37 主
mysql2 192.168.20.38 备

一 mysql 主主同步
二 安装keepalived
三 keepalived 主备配置文件
四 mysql状态检测脚本/root/bin/keepalived_check_mysql.sh
五 防火墙设置
六 测试及诊断
七 参考资料
注 keepalived之间使用vrrp组播方式通信使用的IP地址是224.0.0.18

一 mysql 主主同步
请百度谷歌。
二 安装keepalived
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz

tar zxvf keepalived-1.2.2.tar.gz

cd keepalived-1.2.2

./configure –prefix=/

make

make install
复制代码
三 keepalived 主备配置文件
主备置文件不同处有 state nopreempt priority 参考资料里有详细说明作用
192.168.20.37 主配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {

router_id 9ai9.net

}

vrrp_script check_run {

script “/root/keepalived_check_mysql.sh”

interval 5

}

vrrp_sync_group VG1 {

group {

VI_1

}

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 88

priority 100

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass 9ai9.net

}

track_script {

check_run

}

virtual_ipaddress {

192.168.20.50

}

}
复制代码192.168.20.38 备用配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {

router_id 9ai9.net

}

vrrp_script check_run {

script “/root/keepalived_check_mysql.sh”

interval 5

}

vrrp_sync_group VG1 {

group {

VI_1

}

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 88

priority 80

advert_int 1

authentication {

auth_type PASS

auth_pass 9ai9.net

}

track_script {

check_run

}

virtual_ipaddress {

192.168.20.50

}

}
复制代码
四 mysql状态检测脚本/root/bin/keepalived_check_mysql.sh
vim /root/keepalived_check_mysql.sh

#!/bin/bash

MYSQL=/usr/local/mysql/bin/mysql

MYSQL_HOST=localhost

MYSQL_USER=root

MYSQL_PASSWORD=9ai9.net

CHECK_TIME=3

#mysql is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0

MYSQL_OK=1

function check_mysql_helth (){

$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e “show status;” >/dev/null 2>&1

if [ $? = 0 ] ;then

MYSQL_OK=1

else

MYSQL_OK=0

fi

return $MYSQL_OK

}

while [ $CHECK_TIME -ne 0 ]

do

let “CHECK_TIME -= 1″

check_mysql_helth

if [ $MYSQL_OK = 1 ] ; then

CHECK_TIME=0

exit 0

fi

if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]

then

/etc/init.d/keepalived stop

exit 1

fi

sleep 1

done
复制代码
赋予执行权限

chmod 755 /root/keepalived_check_mysql.sh
复制代码
五 防火墙设置
vrrp协议 使用224.0.0.18地址组播
iptables -I RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT

六 测试及工具
故障前本帖隐藏的内容
[/url]
[url=http://www.9ai9.net/?p=131]

故障切换
本帖隐藏的内容

可以用同网段的另一台服务器 arping 1 这个虚拟IP
看看对应该的MAC地址 可以知道虚拟IP对应的真实服务器

配置文件 不正确时 有时候日志会有以下提示
VRRP_Instance(VI_1) Now in FAULT state

advert_int 两台keepalived 这个参数 不一致时 日志会有以下提示
Keepalived_vrrp: advertissement interval mismatch mine=5000000 rcved=1

七 参考资料

keepalived 官网 http://www.keepalived.org/index.html
田老 http://www.keepalived.org/sery-lvs-cluster.pdf
Linuxtone http://docs.linuxtone.org/ebooks/LoadBalance/lvs/keepalived%20the%20definitive%20guide–FinalBSD.pdf
虚拟路由器冗余协议 http://baike.baidu.com/view/876125.htm
组播 http://baike.baidu.com/view/492256.htm

Posted in Linux, 操作系统 | Tagged , , , , , , | Leave a comment

服务器管理项目实验

第一部分 Windows服务器配置(50分)

现有一公司,名为Company,其企业网络逻辑拓扑结构如下图所示: Continue reading

Posted in Windows | Tagged , , | Leave a comment

PXE网络全自动安装Linux [转载]

利用PXE网络全自动安装Linux,可以实现整个安装过程的无人职守,也不需要手动点击,非常方便快捷.

      在上一篇的博客中,我写了利用PXE从网络安装Linux,其中,已经架设好了一台Linux服务器,我还是用Putty登陆查看相应的服务是否已经启动:
 
可以看到,nfs服务已经启动:
 
挂载光盘,这里我们可以将光盘的内容拷贝到一个目录下,在后面输入“NFS directory”的时候可以输入这个目录:
 
这里可以看到光盘挂载的目录:
 
然后,新建一台虚拟机,先从网络手动安装一次,将其安装的过程保存起来得到一个脚本.
选择从网络安装:
 
选择NFS镜像:
 
自动获取IP地址:
 
输入NFS服务器名,就是我们刚才的Linux主机,再输入光盘挂载的目录:
 
稍等片刻,出现安装界面。之后就和我们用光盘安装是一样的,只需点击下一步,进行磁盘分区和输入root密码,最后整个安装过程完成。
 
登陆我们才装好的Linux系统,在/root目录下我们可以看到有个”anaconda-ks.cfg”的脚本:

此脚本包含了我们刚才安装Linux时的一系列信息,有安装语言,网络选择,磁盘分区等等信息,只需要将此脚本做一些改动就可以实现全自动安装:
 
 
我们在服务器上做一些配置
 
利用NFS加一个共享的目录:

新建目录:/disk 并建立一个自动控制脚本:ks.cfg 将刚才安装的Linux下的“anaconda-ks.cfg”脚本的内容拷贝进来,只需加入NFS服务器的IP地址和共享的光盘目录,其它的都不做改变:

 
然后在exports文件中加入刚才建立的目录:
 
/disk *代表任何用户都可以访问,以只读方式和只放入内存中共享:
(这里建议大家将光盘内容拷贝到一个目录并且和这个共享目录放在一起,这样安装的时候更方便,速度也更快一些)
 
下面修改引导脚本:
 
timeout 改为10
控制方式使用nfs,并加入IP地址和控制脚本:
将控制脚本默认加载在引导脚本里面了,保存退出.
 
重启NFS服务:
 
 
最后我们新建一台虚拟机再进行测试,可以看到,一切操作都是自动运行的:
到此,整个PXE网络自动安装已经完成.

以上文章摘自

http://qiulove.blog.51cto.com/516754/144776

Posted in Linux | Leave a comment