LVS+keepalive

什么是keepalive

    Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行;狭义的来讲就是指主机的冗余和接管。它与HeartBeat、RoseHA实现类似的功能,都可以实现服务或者网络的高可用,但是又有差别。HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能。比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦。与HeartBeat相比,Keepalived主要是通过虚拟路由冗余(VRRP)来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。   

    keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的

实验环境

关闭selinux和iptables

主机 centos7.6
192.168.47.47 VIP
192.168.47.191 lvs-master
192.168.47.193 lvs-slave
192.168.47.189 RealServer02
192.168.47.188 RealServer01

1、在LVS上:

yum install ipvsadm keepalived -y

Master节点配置文件

[root@lvs ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
  router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
  state MASTER       #指定Keepalived的角色,MASTER为主,BACKUP为备
  interface ens33   # 绑定的网卡名
  virtual_router_id 51 #虚拟路由编号,主备要一致
  priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
  advert_int 1 #检查间隔,默认为1s
  authentication {
      auth_type PASS
      auth_pass 1111
  }
  virtual_ipaddress {
       192.168.47.16 #定义虚拟IP(VIP),可多设,每行一个
  }
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.47.47 80 {
  delay_loop 6 # 设置健康检查时间,单位是秒
  lb_algo wrr # 设置负载调度的算法为wrr
  lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
  nat_mask 255.255.255.0
  persistence_timeout 0
  protocol TCP
  real_server 192.168.47.188 80 {  # 指定real server1的IP地址
      weight 3   # 配置节点权值,数字越大权重越高
      TCP_CHECK {
      connect_timeout 10
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
      }
  }
  real_server 192.168.47.189 80{  # 指定real server2的IP地址
      weight 3 # 配置节点权值,数字越大权重越高
      TCP_CHECK {
      connect_timeout 10
      nb_get_retry 3
      delay_before_retry 3
      connect_port 80
      }
    }
}

 Slave 配置

No.1处:把“state MASTER”修改为“state BACKUP” #即备用服务器;

No.2处:把“priority 100”修改为“priority 90” #优先级为90。

2、配置RealServer(我安装的是httpd,也可以用nginx或者其他的)

[root@t1 ~]# cat realserver.sh 
#add for chkconfig
#chkconfig: 2345 70 30  
#description: RealServer's script  
#processname: realserver.sh
#!/bin/bash
VIP=192.168.47.47
source /etc/rc.d/init.d/functions
case "$1" in
start)
#绑定VIP,抑制ARP广播
      ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
      /sbin/route add -host $VIP dev lo:0
      echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
      echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
      echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
      echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
      echo "RealServer Start OK"
      ;;
stop)
      ifconfig lo:0 down
      route del $VIP >/dev/null 2>&1
      echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
      echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
      echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
      echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
      echo "RealServer Stoped"
      ;;
      *)
      echo "Usage: $0 {start|stop}"
      exit 1
esac
exit 0

3、启动httpd服务、运行脚本

[root@t1 ~]# systemctl start httpd
[root@t1 ~]# ./realserver.sh start

4、启动keeplived,查看lvs规则

[root@lvs ~]# systemctl restart keepalived
#可以看到已经成功添加了DR、WRR的规则
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.47.47:80 wrr
 -> 192.168.47.188:80           Route   3      0          0        
 -> 192.168.47.189:80           Route   3      0          0

5、验证

[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”

6、将后端的realserver其中一个节点服务停掉,并测试

#停了192.168.47.188的节点
[root@t1 ~]# systemctl stop httpd
#可以看到LVS规则中,已经没有了192.168.47.188的节点
[root@lvs ~]# ipvsadm -Ln      
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.47.47:80 wrr
 -> 192.168.47.189:80           Route   3      0          0
#再把他起来
[root@t1 ~]# systemctl start httpd
#可以看到LVS规则中,又有了
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.47.47:80 wrr
 -> 192.168.47.188:80           Route   3      0          0        
 -> 192.168.47.189:80           Route   3      0          0

7、把keepalived、master节点宕掉。看看是否能切换到slave

[root@lvs ~]# systemctl stop keepalived

可以看到VIP漂移了过来

再测试是否能正常访问

[root@lvss ~]# ipvsadm -Ln  
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.47.47:80 wrr
 -> 192.168.47.188:80           Route   3      0          0        
 -> 192.168.47.189:80           Route   3      0          0    
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”

LVS+keepalive的更多相关文章

  1. 集群高可用之lvs+keepalive

    集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ...

  2. 打造极致性能数据库中间件丨LVS+Keepalive+华为云DDM之理论篇

    背景说明 华为云分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,突破了传统数据库的容量和性能瓶颈,实现海量数据高并发访 ...

  3. Lvs Keepalive DR模式高可用配置

    Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...

  4. mysql高可用之LVS + KEEPALIVE + MYSQL

    1.架构图 注意 (一)   Mysql需要把bind-address的配置去掉,否则无法实现虚拟ip访问 (二)   关闭所有linux防火墙:/sbin/iptables –F(可能没用) (三) ...

  5. lvs+keepalive构建高可用集群

    大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用的前端负载均衡器 一.前言        Keepalived使用的vrrp协议方式,虚拟路由 ...

  6. lvs+keepalive实现双主模式(采用DR),同时实现TCP和UDP检测实现非web端的负载均衡,同时实现跨网段的通讯

    因为公司领导需要,需要把lvs备机也使用上,故! 使用双主,相互是主的同时也相互是备机.本人用nat测试发现RS无法实现负载均衡,故采用DR模式来实现非web端的负载均衡 lvs1: DIP 10.6 ...

  7. lvs+keepalive实现主从效果,以及RS健康监测和tcp,udp实现非web的负载均衡

    前面文章讲到了tcp和udp负载均衡,但是没有健康监测,这几天我优化了一下上次的操作.当然,我也是用的跨网段的通讯,因为线上业务主要是海外业务,所以做了iptables流量转发 IP: lvs-mas ...

  8. LVS+Keepalive+Nginx实现负载均衡

    本文参考:http://blog.csdn.net/yinwenjie/article/details/47211551 简单粗暴写一下,做备忘,刚刚搭好没做优化呢,后期补充 一.机器准备 LVS-M ...

  9. lvs+keepalive主从和主主架构

    下面配置主从 1)关闭SELinux和防火墙 vi /etc/sysconfig/selinux SELINUX=disabled setenforce 临时关闭SELinux,文件配置后,重启生效 ...

随机推荐

  1. 08_线程间通信 ITC

    1.线程间的通信方式 1.共享全局变量 2.线程队列(queue) 3.信号量(Semaphore) 2.共享全局变量进行通信 from threading import Thread import ...

  2. 跟着兄弟连系统学习Linux-【day07】

    day07-20200604 p25.vim常用操作 vim需要经常练习,一般用于修改配置文件.

  3. 小白也能弄懂的目标检测YOLO系列之YOLOV1 - 第二期

    上期给大家展示了用VisDrone数据集训练pytorch版YOLOV3模型的效果,介绍了什么是目标检测.目标检测目前比较流行的检测算法和效果比较以及YOLO的进化史,这期我们来讲解YOLO最原始V1 ...

  4. XmlAnalyzer1.00 源码

    此工程用途:将xml同级属性/子节点按字母序排列重新输出. 源码下载: https://files.cnblogs.com/files/heyang78/XmlAnalyzer-20200526-1. ...

  5. 仅显示sessionid,servername,serverport的一个springboot小程序

    下载地址:https://files.cnblogs.com/files/xiandedanteng/sessionid20191227-1.zip --END-- 2019-12-2710:07

  6. MyBatis源码流程分析

    mybatis核心流程三大阶段 Mybatis的初始化  建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提 ...

  7. origin Tips

    origin Tips 注意事项 在最初画图时,需要考虑到最好将图片的尺寸限制在 1 张 A4 纸的大小,不然有可能在插入 latex 的时候出问题 . 如何修改图片的尺寸?简而言之就是将画布中的图片 ...

  8. HTML页面的基本信息

    1.python中生成的html页面,每一段的基本解释,以及header中的应用 2.body中的应用 2.1.a href链接点击baidu直接跳转百度网址,如果需要重新打开一个页面,详情看2.16 ...

  9. python3 for

    当range中只有一个参数时,此参数表示终点,但不包括.(从0开始) 当range中有两个参数时,分别表示起点和终点.(左闭但不包括终点) 当range中有三个参数时,分别表示起点和终点,和步长,意思 ...

  10. 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第二周:(Basics of Neural Network programming)-课程笔记

    第二周:神经网络的编程基础 (Basics of Neural Network programming) 2.1.二分类(Binary Classification) 二分类问题的目标就是习得一个分类 ...