preface

公司要求http+mysql+redis+二次开发的ldap要求做高可用,所以此处写写keepalived在这种

环境下的高可用。keepalived这个软件我就不啰嗦了,众所周知,基于VRRP协议做的高可用,VRRP就是virtual route protocol。把这个协议了解透了,keepalived自然也就明白怎么回事了。

实践

环境如下

ip 角色
172.16.160.189 master
172.16.160.179 backup

两台服务器都安装好了http,mysql,redis,以及ldap,确保两台服务器的http,mysql,redis以及ldap服务正常运行。

接下来重点讲解keepalived的配置文件

master 上配置keepalived

配置文件如下:

[root@localhost script]# 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
router_id LVS_DEVEL
} vrrp_script monitor_server { # monitor_server是自定义名字
script "/etc/keepalived/script/check_server.sh" # 设定的脚本,脚本内容下面会贴出来
interval 1 #探测间隔,实际也是脚本的执行间隔
weight 0 # 权重,脚本执行后的返回值会与这个做加减法,然后再把值与下面vrrp_instance的权重值做加减。
} vrrp_instance VI_1 {
state MASTER
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51 # 与备份机的id值必须一样的。
priority 100 # 权重值
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.160.250
}
track_script {
monitor_server # 调用脚本模块
}
}
virtual_server 172.16.160.250 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol http # 因为这里要访问http协议,所以protocol写成http,这样浏览器才能访问,不然写成TCP的话,浏览器没法访问。 # real_server 172.16.160.179 80 {
# weight 100
# HTTP_CHECK {
# connect_timeout 2 #(10秒无响应超时)
# nb_get_retry 1
# delay_before_retry 1
# connect_port 80
# }
# }
# real_server 172.16.160.189 80 {
# weight 100
# HTTP_CHECK {
# connect_timeout 2 #(10秒无响应超时)
# nb_get_retry 1
# delay_before_retry 1
# connect_port 80
# }
# }
}
backup上的配置
[root@localhost keepalived]# 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
router_id LVS_DEVEL1 # 本机id
} vrrp_script monitor_server{
script "/etc/keepalived/script/check_server.sh" # 同上
interval 1
weight 0
} vrrp_instance VI_1 {
state BACKUP #角色改为backup
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 90 # 权重值调小即可
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.160.250
}
track_script {
monitor_server
}
}
virtual_server 172.16.160.250 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol HTTP # real_server 172.16.160.179 80 {
# weight 100
# TCP_CHECK {
# connect_timeout 2 #(10秒无响应超时)
# nb_get_retry 1
# delay_before_retry 1
# connect_port 80
# }
# }
# real_server 172.16.160.189 80 {
# weight 100
# TCP_CHECK {
# connect_timeout 2 #(10秒无响应超时)
# nb_get_retry 1
# delay_before_retry 1
# connect_port 80
# }
# }
}
脚本内容

脚本编写思路很简单,检测每个服务是否在,如果不在,尝试脚本启动,启动不了的话,停止keepalived,这样vip就切换走了。

function judge_ge_1 {
if [ "$1" -ge "1" ];then
export result="true"
else
export result="false"
fi
} function stop_keepalived {
if [ "$1" == "false" ];then
service keepalived stop
fi
} ################# check redis
exist_port=`netstat -lnpt |grep -v grep | grep 6379 |wc -l`
judge_ge_1 $exist_port
if [ "$result" == "false" ];then
/etc/init.d/redis start
fi
exist_port=`netstat -lnpt |grep -v grep | grep 6379 |wc -l`
judge_ge_1 $exist_port
stop_keepalived $result ###################### check mysql
exist_port=`netstat -lnpt |grep -v greo | grep 3306 |wc -l`
judge_ge_1 $exist_port
if [ "$result" == "false" ];then
service mysqld restart
fi
exist_port=`netstat -lnpt |grep -v greo | grep 3306 |wc -l`
judge_ge_1 $exist_port
stop_keepalived $result ################### check http
exist_port=`netstat -lnpt |grep -v grep | grep httpd |wc -l`
judge_ge_1 $exist_port
if [ "$result" == "false" ];then
service httpd restart
fi
exist_port=`netstat -lnpt |grep -v grep | grep httpd |wc -l`
judge_ge_1 $exist_port
stop_keepalived $result [root@localhost script]# chmod 777 /etc/keepalived/script/check_server.sh # 最后不要忘记添加777的权限,保证具有可执行权限

有问题请随时与我联系,18500777133@sina.cn

http+mysql结合keepalived做热备的更多相关文章

  1. MySQL高可用性之Keepalived+MySQL(双主热备)

    环境描述:OS:CentOS6.5_X64MASTER:192.168.0.202BACKUP:192.168.0.203VIP:192.168.0.204 1.配置两台Mysql主主同步[root@ ...

  2. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  3. Keepalived双机热备

    一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...

  4. keepalived双机热备nginx

    nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽 ...

  5. Mycat+Mysql主从复制实现双机热备

    Mycat+Mysql主从复制实现双机热备 一.mysql主从配置原理 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据 ...

  6. MySQL 5.6 双机热备windows7

    MySQL 5.6 双机热备 目录: 1.说明 2.数据手工同步 3.修改主数据库配置文件 4.修改从数据库配置文件 5.主数据库添加备份用户 6.从数据库设置为Slave 7.验证 1.说明 1)数 ...

  7. Nginx+keepalived双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  8. Nginx+keepalived 双机热备(主主模式)

    之前已经介绍了Nginx+Keepalived双机热备的主从模式,今天在此基础上说下主主模式的配置. 由之前的配置信息可知:master机器(master-node):103.110.98.14/19 ...

  9. keepalived双机热备,安装部署文档

    keepalived双击热备,安装部署文档: 下载目录:/apps/keepalived-1.2.7.tar.gz 1:---> yum install -y make wget 2:---&g ...

随机推荐

  1. 深入理解OOP(第一天):多态和继承(初期绑定和编译时多态)

    在本系列中,我们以CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现. 无论作为软件设计的高手.或者菜鸟,对于架构设计而言,均需要多次重构.取舍,以有利于整个软件项目的健康构建 ...

  2. 移除首页->重回首页

    之前发布了一篇文章<订餐系统之获取淘宝外卖订单>,因为是关于淘宝外卖的,所以文中出现这个词时,都加了链接,还设置了 target='_blank',就是为了让看的人方便点击,查看.后来,博 ...

  3. Windows Phone 8 显示当前项目的使用内存,最大峰值,最大内存上限

    public static class MemoryDiagnosticsHelper { public static bool isStart = false; static Popup popup ...

  4. 高端大气上档次Ergotron Neo-Flex+MBP Retina的组合~

  5. Adobe Reader & PDF 护眼设置

    1.首先选择“编辑”--->“首选项” 选择其他颜色,把RGB如下设置

  6. [BZOJ2730][HNOI2012]矿场搭建(求割点)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2730 分析: 如果坍塌的点不是割点,那没什么影响,主要考虑坍塌的点是割点的情况. 显然 ...

  7. codevs 4543 treap 模板

    type rec=record lc,rc,v,rnd,size,w,fa:longint; end; var n,root,tot,ans,opt,x,i,po:longint; tr:array[ ...

  8. spring+mybaties+springMvc+slf4j所需jar包

  9. SQL复杂查询和视图

    子查询 现实中,很多情况下需要进行下述条件判断 某一元素是否是某一集合成员 某一集合是否包含另一集合 测试集合是否为空 测试集合是否存在另一元组 子查询是出现在WHERE子句中的SELECT语句被称为 ...

  10. MEF

    详情见链接:http://www.cnblogs.com/comsokey/p/MEF1.html#top