介绍

一款用于保障服务高可用的软件,自动侦测服务器状态,移除故障服务器,切换到正常服务器,添加恢复后的服务器到集群

实现的基本思路

基于VRRP协议的实现,主要用在IP层,TCP层,应用层

VRRP协议解决问题

在现实网路中,两台服务器之间通常不会直连,那A和B如何路由呢?

1. 在A上使用动态路由协议(问题:管理维护成本大,设备需要支持动态路由协议)不推荐

2. 在A上配置静态路由(问题:路由器或默认的网关成单点,需重启网络)

VRRP(Virtual Router Redundancy Protocol 虚拟路由冗余协议)解决你的单点故障问题

1.它是一个选择协议,把一个虚拟路由器的职责,动态转移给Master进行处理

2.是一种路由容错协议或备份路由协议。当Master宕机后,虚拟路由将启用备份路由器

名词解释

1.VRRP路由器 物理路由器,上面运行着实现VRRP协议的程序

2.VRRP虚拟路由器 逻辑上的路由器,通常由多台物理路由器组成,可以看成一个路由器池 由VRID来标示,范围0-255

3.Master和Backup: 一个虚拟路由里的多个路由器并不是同时工作的,工作的叫Master,其他的为Backup

工作机制

1.路由器开启VRRP功能后,会根据优先级确认Master

2.Master会通过IP多播包的形式来发送公告报文,Backup会接收到这些报文

3.如果是抢占式:Backup会跟Master比较优先级,如果大于Master,互换身份

4.如果是非抢占式,只要Master能正常工作,不会出现新Master (一般使用该种)

5.如果备份服务器在连续三个公告间隔内收不到VRRP公告,或收到优先级为0的公告,会按照竞选协议选出新的Master,以保证服务可用

VRRP负载分担

多台路由器同时承担业务,避免设备闲置

让同一台路由器可以加入到备份组,在不同组中优先级不同。使其在不同组担任不同角色。

安装演示Keepalived

一:下载并安装IPVS

下载的版本要和自己主机内核一致

内核查看 cat /proc/version

下载地址: http://www.linuxvirtualserver.org/software/ipvs.html

安装之前要创建一个软连接 In -sv /usr/src/kernels/3.10.0-123.9.3.el7.x86_64 /usr/src/linux

然后make && make install

ipvsadm 命令被安装到/sbin下面

输入ipvsadm 命令 检查是否安装成功

二.下载并安装Keepalived

下载地址:http://www.keepalived.org/

下载源码来安装

1. ./configure --prefix=/usr/java/keepalived

如果出现NO SO_MARK in headers 这样的错误提示,可以在命令上添加 --disable-fwmark

如果要使用LVS,还需要指定内核的目录,添加 --with-kernel-dir=具体内核路径,以指定使用内核源码里的文件

2.make && make install

3.验证安装

a.到sbin下,执行keepalived 命令

b.查看进程 ps -aux|grep keepalived 应该有三个进程

c.查看内核模块ip_vs是否被加载到内核空间, lsmod |grep ip_vs

d.执行 tail -f /var/log/messages来查看日志

e.执行pkill keepalived来关闭

注意:keepalived 配置文件是没有语法检查的,修改的时候千万要小心

Keepalived 体系结构图

keepalived配置

分为:全局配置、VRRPD配置、LVS配置

全局配置:全局定义与静态路由 关键是routerid配置,其他一般很少配置

VRRPD配置:同步组,实例配置

LVS配置:如果启用LVS就需要配置,不启用就无需配置。

keepalived+nginx的HA

让Keepalived监控Nginx的状态,当某台Nginx宕机后切换到其他的Nginx上

需要使用到shell脚本,监听本地端口的80端口,如果本地80端口不通,那么keepalived就自杀,这样master自动就会切换到其他Bankup上,升级为Master

上面脚本尝试了一次重启

需要在keepalived.conf配置中增加上面脚本的调用,在VRRP实例配置前 ,在实例配置之后,增加脚本检查的配置,这样Keepalived在启动的时候就会检查一次

keepalived 做HA思路

和具体的应用和服务没有关系,仿造keepalived和nginx的思路,可以实现:

1.keepalived + varnish

2.keepalived + tomcat

3.keepalived + redis

4.keepalived + mysql

.... ...

示例varnish的检测脚本

LVS+ Keepalived介绍

LVS可用来实现LINUX下的简单负载均衡

工作在四层,其转发依赖于四层协议的特征进行转发的, 需要内核的TCP/IP协议栈进行过滤筛选,而这样的过滤转发规则可由管理员对内核进行定义

三种负载均衡转发机制

1.NAT (Network Address Translation)网络地址翻译技术

类似IP的负载均衡技术

2.TUN (IP Tunneling) IP隧道技术

类似数据链路负载均衡策略

3.DR(Direct Routing) 直接路由技术

通过改写请求报文的Mac地址,一般采用该种,要求:调度器与真实服务器在同一物理网段上

负载均衡调度算法

1.RR (Round Robin) 轮询

2.wrr (Weight Round Robin) 加权轮询

3.lc(Least Connections)最少连接

4.wlc(weight Least Connections)加权最小连接

5.dh(Destination hashing) 目标地址hash

6.sh(Source hashing) 源地址hash

7.sed (Shortest Expected Delay)最短期望的延迟

8.NQ(Never Queue) 最少排队

9.LBLC(Location-Based Least-Connection) 基于局部的最少连接,优先使用上一次的

10.LBLCR(Location-Based Least-Connection with replication Scheduling) 使用上次使用的服务器同一组中的

注意点

KVS+Keepalived其实就是把LVS看做是Nginx或者varnish

配置的时候只需要在keepalived中去配置,无需单独配置LVS

全局配置和VRRP配置是一样的,增加关于LVS配置

主、备服务器配置是一样的

LVS+DR模式中,只支持IP的转发,不支持端口转发。virtual_server和real_server配置节点中端口必须一致

java中keepalived_Keepalived简明介绍相关推荐

  1. java中ThreadPool的介绍和使用

    文章目录 Thread Pool简介 Executors, Executor 和 ExecutorService ThreadPoolExecutor ScheduledThreadPoolExecu ...

  2. Java中BigDecimal类介绍及用法

    Java中BigDecimal类介绍及用法 Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高 ...

  3. Java中List集合介绍(炒鸡详细呦)

    Java中List集合介绍 文章目录 Java中List集合介绍 1,Java集合介绍 2,List介绍 2.1 ArrayList集合 2.2 LinkedList集合 3,List常用方法 3.1 ...

  4. javac 与java_javac中使用-d,以及javac / java中使用-cp介绍

    javac中使用-d,以及javac / java中使用-cp介绍 发布时间:2019-01-15 20:39, 浏览次数:555 , 标签: javac java cp * 一般生成把java编译成 ...

  5. java中Cookie详细介绍

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是 ...

  6. java try catch_异常处理,JAVA中异常处理的介绍

    异常处理的介绍 在Java程序的运行过程中,如果Java虚拟机检测出一个无法执行的操作,就会产生运行时错误(runtime error) 在Java中,运行时错误会作为异常来抛出. 抛出的异常是一个对 ...

  7. Java中所有锁介绍

    在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 1.公平锁 / 非公平锁 2.可重入锁 / 不可重入锁 3.独享锁 / 共享锁 4.互斥锁 / 读 ...

  8. java中锁的介绍及运用

    个人免费资源分享网站:http://xiaocaoshare.com/ 1.悲观锁和乐观锁 对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加 ...

  9. java中事务的介绍

    2019独角兽企业重金招聘Python工程师标准>>> java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某 一步没有执行或出现异常而导致 ...

最新文章

  1. 清华大学史作强副教授专访:用流形、偏微分方程揭秘人工智能
  2. 我的LDAP使用手记(Fedora-ds) 备忘用
  3. BUUCTF Dig the way
  4. PAT甲级题目翻译+答案 AcWing(图论)
  5. ICCV 2021 | G-SFDA:无需源数据的领域自适应方法
  6. Android IOS WebRTC 音视频开发总结(六二)-- 大数据解密国外实时通讯行业开发现状...
  7. SpringBoot02——A Simple SpringBoot ProjectHot Deployment
  8. vue实现树形结构增删改查
  9. 字典:python的基础数据类型
  10. python赋值与c语言区别,运算符-赋值运算符和逻辑运算符
  11. MPU6050误差分析
  12. 黄山自助旅行之注意事项
  13. 泥瓦匠这几年 Java ...
  14. 股东转让股权后是否还应承担出资义务
  15. *((int *) arg)
  16. 淘宝跨境电商怎么做 淘宝跨境电商注意事项
  17. 基于大数据风控技术,PBOC二代人行征信报告的解读哪家好
  18. 医学图像处理与分析:现有的各种医学成像手段及其优缺点
  19. 网桥fdb与物理接口状态变化
  20. 小小滑块可笑可笑-安卓滑块验证码通杀方案研究(5)

热门文章

  1. redis php web管理,redis web管理工具phpRedisAdmin安装
  2. WIDERFACE 数据集
  3. “tensorFromBlob”: 不是“at::DeprecatedTypeProperties”的成员
  4. 理解Hinge Loss (折页损失函数、铰链损失函数)
  5. c1083 “tensorflow/python/framework/c pp_shape_inference.pb.h”
  6. pip 系统无法将文件移到不同的磁盘驱动器 的问题
  7. 怎么才能领取到外卖红包呢
  8. 组播路由协议基础——组播分发树
  9. php手绘功能,基于纯CSS3的6种手绘涂鸦按钮效果
  10. php中ide快捷键,PhpStorm、WebStorm及其他系列IDE快捷键