keepalived双机热备


前言

这篇文章主要记录keepalived做后端双机热备,没有搭配Nginx


一、安装

使用最简单的yum安装:

yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
yum install -y keepalived

我自己yum安装后,检查了一下,文件自动就在系统路径下,如果不在,安装好后将默认路径下的文件拷贝到指定系统路径下实现命令直接启动

cp /usr/local/keepalived/etc/keepalived.conf  /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/keepalived
cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/keepalived
cp /usr/local/sbin/keepalived /usr/sbin/

二、命令

service keepalived start             #启动服务
service keepalived stop              #停止服务
service keepalived restart           #重启服务
systemctl status keepalived.service  #查看当前状态

此时启动keepalived可能会报错,可能会启动,但是片刻后查看状态又是dead,不要担心,基本没什么问题,只需要将你的服务环境(虚拟ip、端口、服务启动。。。)都准备好,修改完配置文件后再次启动

三、配置文件

1、主机配置文件:

global_defs {
   notification_email {
        接收方邮箱
   }
   notification_email_from 发送方邮箱
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_1
}
vrrp_instance HA_1 {
  state MASTER
  interface eth0   #网卡根据实际情况配置
  virtual_router_id 1
  priority 100
  advert_int 1
  nopreempt
  authentication {
    auth_type PASS
    auth_pass 1234
  }
  virtual_ipaddress {
    虚拟ip/24
  }
}
virtual_server 虚拟ip 服务端口 {
  delay_loop 2
  lb_algo wlc
  lb_kind DR
  nat_mask 255.255.255.0
  protocol TCP
  persistence_timeout 60
  real_server 实际ip 服务端口 {
    weight 1
    notify_down /etc/keepalived/scripts/service_rep.sh
    TCP_CHECK {
      connect_port 服务端口
      connect_timeout 3
      nb_get_retry 2
      delay_before_retry 3
    }
  }
}

2、备机配置文件:

global_defs {
   notification_email {
        接收方邮箱
   }
   notification_email_from 发送方邮箱
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_2
}
vrrp_instance HA_1 {
  state BACKUP
  interface eth0    #网卡根据实际情况配置
  virtual_router_id 1
  priority 50
  advert_int 1
  nopreempt
  authentication {
    auth_type PASS
    auth_pass 1234
  }
  virtual_ipaddress {
    虚拟ip/24
  }
}
virtual_server 虚拟ip 服务端口 {
  delay_loop 2
  lb_algo wlc
  lb_kind DR
  nat_mask 255.255.255.0
  protocol TCP
  persistence_timeout 60
  real_server 实际ip 服务端口 {
    weight 1
    notify_down /etc/keepalived/scripts/service_rep.sh
    TCP_CHECK {
      connect_port 服务端口
      connect_timeout 3
      nb_get_retry 2
      delay_before_retry 3
    }
  }
}

3、service_rep.sh脚本内容:

配置文件中提到的service_rep.sh脚本需要放到配置文件中指定的目录下

#!/bin/sh
pkill keepalived

4、简单检查

(1)虚拟ip检查
可以通过ip addr简单检查一下在keepalived停掉的情况下,虚拟ip会不会跟着切换到不同的服务器
(2)脚本检查
有时候我们在window下编辑的脚本在Linux上会有问题,格式不一样
检查:cat -A filename,如果输出结果中行末尾是^M$,则是dos格式,如果行末尾只是$,则是unix格式
处理:sed -i “s/\r//” filename 或sed -i “s/^M//” filename,直接将回车符替换为空字符串
(3)给脚本执行权限
当自己的软件停了之后发现keepalived还在运行,应该是脚本没有执行,给脚本赋权限后变色
chmod u+x service_rep.sh

后期遇到的问题

配置了很多软件,以上的方式都没有任何问题,但是最近有个软件切换了服务器之后,以上配置出现了问题,多次检查配置文件也没有发现任何问题,但是,两台服务器上都出现了虚拟ip,查了一下这叫做“脑裂”,出现这种问题肯定是不对的。我们之前配置的是“非抢占模式(nopreempt)”,然后通过priority权重来区分谁的优先级更高,但是是通过组播的方式发送vrrp包实现主通知备自己还“活着”,但是,有些服务器可能会禁止组播,那么备机收不到主机发来的vrrp包,它就会默认主机挂掉了,所以会出现两台服务器都有虚拟ip。其实,我也不确认我的是不是这种情况,但是我改成单播模式后双机热备是好的,虚拟ip只在主机,可以切换。以下是追加的配置:
在这里插入图片描述

四、感谢支持。。。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Happy-Sir

有收获请打赏,哈哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值