配置keepalived+LVS_DR

一、keepalived主备同时操作

1.检查防火墙和selinux的状态,最好都关了

2.安装软件

yum  install  -y   keepalived    ipvsadm
systemctl enable keepalived                                #设置开机自启动
ipvsadm -C                                                                   #清空转发规则

3.keepalived+lvs_DR,keepalived的主机不需要开启路由转发的功能也可正常工作。

4.Keepalived实现LVS-DR模式调度器的高可用

vim /etc/keepalived/keepalived.conf

global_defs {notification_email {admin@tarena.com.cn                //设置报警收件人邮箱}notification_email_from ka@localhost    //设置发件人smtp_server 127.0.0.1                //定义邮件服务器smtp_connect_timeout 30router_id  lvs1                        //设置路由ID号(实验需要修改)
}
vrrp_instance VI_1 {state MASTER                             //主服务器为MASTER,备用服务器为BACKUPinterface eth0                        //定义网络接口virtual_router_id 50                    //主辅VRID号必须一致priority 100                         //服务器优先级,主备的优先级通常设置的不同advert_int 1authentication {auth_type passauth_pass 1111                       //主辅服务器密码必须一致}virtual_ipaddress {                   //配置VIP(按需修改)
192.168.4.15    //有的后面这里有更详细的写法}
}virtual_server 192.168.4.15 80 {           //设置ipvsadm的VIP规则(按需修改)delay_loop 6lb_algo wrr                          //设置LVS调度算法为wrr,还有别的算法lb_kind DR                               //设置LVS的模式为DR#persistence_timeout 50
#注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同服务器protocol TCPreal_server 192.168.4.100 80 {         //通常real_server的端口跟vip的端口一致,否则可能会报错weight 1                             //设置权重为1TCP_CHECK {                            //对后台real_server做健康检查connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.4.200 80 {       //设置后端web服务器真实IP(实验需要修改)weight 2                          //设置权重为2TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

5.开启服务

systemctl start keepalived
ipvsadm -Ln                 #查看LVS规则ip  a   s                    #查看VIP设置

6.后续会用到的功能

6.1.更改keepalived的配置文件后,使配置生效的命令

kill -HUP $(cat /var/run/keepalived.pid)

6.2 systemctl stop keepalived.service干不掉keepalived服务,vip也不会漂移的原因

当我们stop掉keepalived服务的时候,发现VIP并没有漂移走,服务也没停掉

ps aux | grep keep 查看keepalived的进程还在于是我们查看keepalived的service文件
vim  /usr/lib/systemd/system/keepalived.serviceKillMode=process的大致意思是当停止keepalived的时候只停掉主进程,而主进程产生的子进程是不会被干掉的,SSH服务就是这个模式。killmode的默认值是control-group,意思时所有进程都会被干掉,我这里选择把这项注释掉,使用默认参数。即:注释掉killMode这一行
#KillMode=process

改了service文件需要使用systemctl daemon-reload来重读配置

然后就可以正常使用了。

废了这么多话,其实可以使用systemctl kill keepalived来停掉服务。

6.4脑裂问题的解决(主备机器同时操作)

写一个while循环,每轮ping网关,累计连续失败的次数,当连续失败达到一定次数则运行service keepalived stop关闭keepalived服务。

如果发现又能够ping通网关,再重启keepalived服务。最后在脚本开头再加上脚本是否已经运行的判断逻辑,将该脚本加到crontab里面。

#修改周期性计划任务
crontab -e#加入循环检测脑裂是否发生的脚本(备注:周期性计划任务服务器重启后依然有效)
*/3 * * * * /bin/bash  检测脚本的绝对路径

check_keep.sh脚本举例:

#!/bin/bash#设置VIP(这里写错了,应该不是vip应该是网关的Ip地址,自行修改即可,后面ping的应该是网管ip)
VIP=192.168.122.1#检测服务是否存在
keep_num=`ps aux | grep keepalive  | grep -v grep | wc -l`#服务存在时,如果ping不通网关就关闭keepalived服务
if [ ${keep_num} -ge 2 ]
thenping_num=0for i in {1..10}doping $VIP -c 3 &>/dev/nullnum=`echo $?`let ping_num=ping_num+numsleep 5doneif [ ${ping_num} -ge 5 ]then#关闭keepalived服务echo '服务已关闭'fi#服务不存在时,如果可以ping通网关就开启keepalived服务
elseping_num=0for i in {1..10}doping $VIP -c 3 &>/dev/nullnum=`echo $?`let ping_num=ping_num+numsleep 5doneif [ ${ping_num} -eq 0 ]then#开启keepalived服务echo '开启服务'fi
fi

二.把VIP配置到lo:1(所有keepalived配置项里的real_server都操作)

如果某个real_server出故障了会自动从LVS中被去掉,好了会自动加上,全程无需人为处理。

1.检查防火墙和selinux的状态,最好都关了

2.加配置时(按实际修改,不需要创建lo:1的实际配置文件)

vim add_lo_1.sh #运行此脚本,lo:1会自动配置好

#!/bin/bash
VIP=192.168.1.5
echo 1 >  net.ipv4.conf.all.arp_ignore
echo 1 >  net.ipv4.conf.lo.arp_ignore
echo 2 >  net.ipv4.conf.lo.arp_announce
echo 2>  net.ipv4.conf.all.arp_announce
/sbin/ifconfig  lo:1  $VIP  netmask  255.255.255.255  broadcast  $VIP  up
/sbin/route add -host $VIP dev lo:1

ip a s 检查结果

3.删除lo:1的脚本

vim del_lo_1.sh

#!/bin/bash
echo 0 >  net.ipv4.conf.all.arp_ignore
echo 0 >  net.ipv4.conf.lo.arp_ignore
echo 0 >  net.ipv4.conf.lo.arp_announce
echo 0 >  net.ipv4.conf.all.arp_announce
/sbin/ifconfig  lo:1   down

ip a s 检查结果

4.设置开机自动配置好lo:1

chmod +x  add_lo_1.sh在脚本/etc/rc.d/rc.local(和/etc/rc.local是同一个文件,软链)末尾添加add_lo_1.sh的绝对路径

5.实时检查lo:1,如果消失了自动给加上

ip_check_lo_1_up.sh

#!/bin/bash
VIP=192.168.1.5
check_num=`/usr/sbin/ip addr show | grep $VIP | grep -v grep | wc -l`
if [ $check_num -eq 0 ]
then
加上add_lo_1.sh的绝对路径
fi

设置成周期性计划任务

chmod +x ip_check_lo_1_up.sh

crontab -e

*/15 * * * *   写上 ip_check_lo_1_up.sh的绝对路径
如果对您有帮助,帮忙点个赞加个关注,谢谢!

配置keepalived+LVS_DR相关推荐

  1. RedHat 7配置keepalived+LVS实现高可用的Web负载均衡

    上一篇博文中我们使用keepalived实现了haproxy的高可用,但keepalived问世之初却是为LVS而设计,与LVS高度整合,LVS与haproxy一样也是实现负载均衡,结合keepali ...

  2. centos7双机搭建_CentOS 7 配置 Keepalived 实现双机热备

    前言 Keepalived 是集群管理中保证集群高可用的一个服务软件,其功能类似于 heartbeat,用来防止单点故障. 本例演示 CentOS 7 下安装和配置 Keepalived 的基本步骤. ...

  3. mysql MGR配置keepalived

    之前写过一篇mysql8.0搭建MGR 在这里 mysql8.0配置MGR - 悠游~~~ - 博客园 (cnblogs.com) 在此基础上配置keepalived 一.安装keepalived ( ...

  4. linux配置心跳网络,Linux下配置 Keepalived(心跳检测部署)

    首先呢,我想先给你们简单介绍一下什么是keepalived: html Keepalived的做用是检测服务器的状态,若是有一台web服务器死机,或工做出现故障,Keepalived将检测到,并将有故 ...

  5. 配置 Keepalived + LVS-DR模式, 实现高可用和负载均衡

    Keepalived + LVS-DR模式配置,见笔记: http://note.youdao.com/noteshare?id=9dc1353d09883ed66ad03cde5e7cb04d&am ...

  6. mysql主主备份_MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

    一.MySQL主从备份 为保证数据库的安全和效率,可以使用主从备份,当有写的操作可以在主服务器上操作,操作完之后备份到从服务器上,当有读操作时可以访问从服务器,这样在一定程度上保证了数据库的安全,当主 ...

  7. Nginx负载均衡配置+keepalived高可用

    1.什么是负载均衡? 随着应用各个核心模块业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担.在此情况下,如果扔掉现有设备去做大量的硬件升级, ...

  8. mysql备份-a是什么_MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离

    一.MYSQL主从备份 为保证数据库的安全和效率,可以使用主从备份,当有写的操作可以在主服务器上操作,操作完之后备份到从服务器上,当有读操作时可以访问从服务器,这样在一定程度上保证了数据库的安全,当主 ...

  9. [配置]keepalived配置高可用虚拟IP不通

    问题:在keepalived配置的虚拟IP不通 解决:先检查虚拟IP和nginx服务器是不是一个网段,然后检查是否将vrrp_strict这个信息给注释掉.

最新文章

  1. 为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow
  2. 在pycharm中通过VCS快速提交代码
  3. 1138: 零起点学算法45——求最大值
  4. 北大poj1018题解题报告
  5. PHP弱类型及一些绕过姿势
  6. mysql 处理文本数据_MySQL ------ 数据处理函数(文本、日期、数值)(十)
  7. 软件工程第一次作业补充
  8. Oracle中sys和system的区别
  9. python创建excel_python自动生成excel(xlwt库)
  10. 从excel导入数据库过程中遇到的空格转义符(#160;)
  11. go语言函数的常用用法
  12. 透视宝移动端对Unity手机游戏引擎监控实现
  13. MuPlayer『百度音乐播放内核』
  14. 【Oracle】ORA-06510: PL/SQL: 用户定义的异常错误未得到处理
  15. 牛客网——B 遥远的记忆
  16. matlab位移反分析公式,位移反分析.doc
  17. 算法练习:Sequence II
  18. 七人成团即拼即赚七人拼团模式解析
  19. 家装灯线走线图_家装灯线怎么布线
  20. 安全工程师转正面试题

热门文章

  1. linux安装c++版本eclipse以及编译增加指定库
  2. 8.0强行转换后变成了7_血糖7至8正常吗?控制标准不能一概而论,看你的血糖应该在多少...
  3. linux那些事之TLB(Translation-Lookaside Buffer)无效操作
  4. image.resize()==>返回此图像的大小调整后的副本
  5. np.unique( )--去除数组中的重复数字,并进行排序之后输出
  6. 深度残差收缩网络:(三)网络结构
  7. [弹性力学]弹力与材力的同一变量的规定正方向的不同导致公式中个别符号不同
  8. Select网络模型下的简单CS实例
  9. 三维数据平滑处理_VTK图像处理(二)--vtkPolyData数据处理
  10. python位运算符_Python位运算符