简介

Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换和健康检查( Health Checking )功能——判断 LVS 负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后就会重新加入群集中。


Keepalived 采用 VRRP (虚拟路由冗余协议)热备份协议,和HSRP一样,只不过 HSRP 是思科私有的协议,VRRP 可以跑在很多设备上!VRRP 是以软件的方式实现 Linux 服务器的多机热备功能。


VRRP 工作原理:它是针对路由器的一种备份解决方案——由多台路由器组成一个热备份,通过公用的虚拟IP 地址对外 提供服务;一个组只有一个主路由,其他的路由器就会处于待命的状态,每隔一定的时间 (可以人为配置)待命的路由设备就会询问主路由器是否故障,如果一定的时间主路由没有给予回答,待命的路由就会抢占主的位置,而继续工作,此抢占会根据配置的优先级而决定。当然这里是接替虚拟 IP地址再次提供服务,而访问者在线下毫无感知!


这篇文章主要讲 LVS + Keepalived 的高可用 ,所以有需要的可以看看 LVS 负载均衡群集详解

使用 Keepalived 实现双机热备

配置前 IP 地址、 操作系统、用途规划,如下表

操作系统IP地址用途规划
RedHat 6.5192.168.100.20主调度服务器
RedHat 6.5192.168.100.30备调度服务器
------------------------
RedHat 6.5192.168.100.40第一台节点服务器
RedHat 6.5192.168.100.50第二胎节点服务器
------------------------
无操作系统192.168.100.10漂移地址(VIP)

Keepalived 安装与服务控制

(1)在编译安装 keepalived 之前,必须安装内即可开发包 kernel-devel ,还有 openssl-devel 、popt-devel 等支持库,当然 gcc 、gcc-c++ 没有的也装上,最后还需要用到 ipvsadm 管理工具。


[root@HedHat ~]# yum -y install popt-devel kernel-devel openssl-devel gcc gcc-c++


(2)使用指定的 Linux 内核位置对 keepalived 进行配置,并将安装的路径指定为根目录,这样就不需要再创建软连接。只有再使用 LVS 时,才需要参数 --with-kernel-dir。解压软件包、配置完成后再执行 make && make install
[root@HedHat ~]# tar -zxvf keepalived-1.2.13.tar.gz
[root@HedHat ~]# cd keepalived-1.2.13
[root@HedHat keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-220.el6.i686/
[root@HedHat keepalived-1.2.13]# make && make install


(3)执行完 make install 后,会自动生成 /etc/init.d/keepalived 脚本文件,但是还需要手动添加为系统服务,这样就可以用 service、chkconfig 工具来对 Keepalived 服务程序进行管理。
[root@HedHat keepalived-1.2.13]# chkconfig --add keepalived
[root@HedHat keepalived-1.2.13]# chkconfig keepalived on


主服务器的配置

(1)Keepalived 服务的配置目录在 /etc/keepalived/keepalived.conf 。下面是对主配置文件的详解、与正确配置!


! Configuration File for keepalived

global_defs {
notification_email { //发送报警邮件br/>acassen@firewall.loc
failover@firewall.locbr/>sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc //指明报警邮件地址
smtp_server 192.168.200.1 //邮件地址
smtp_connect_timeout 30 //smtp 超时时间
router_id LVS_DR1 //本路由器的名称
}

vrrp_instance VI_1 { //定义 VRRP 热备是咧
state MASTER //热备状态 MASTER 表示主服务器,BACKUP 表示备用服务器
interface eth0 //承载VIP的物理接口
virtual_router_id 51 //虚拟路由器的 ID 号,每个热备组需要保持一致
priority 100 //优先级,数值越高,优先级越大
advert_int 1 //通告间隔秒数
authentication { //认证信息
auth_type PASS //认证类型
auth_pass 1111 //认证密码字符串
}
virtual_ipaddress { //指定漂移地址 (VIP)
192.168.100.10
}
}

virtual_server 192.168.100.10 80 { //LVS的配置段,设置LVS的VIP地址和端口
delay_loop 6 / /服务轮询时间的间隔
lb_algo rr //调度算法为:轮询 (rr)算法
lb_kind DR //群集类型为 DR
nat_mask 255.255.255.0 //子网掩码,可选项
persistence_timeout 50 //连接保持时长
protocol TCP //支持的协议为 TCP

real_server 192.168.100.40 80 { //配置节点服务器的 IP地址和端口weight 1 //权重TCP_CHECK {     //检测健康方式connect_port 80      //检测健康状态向 80 端口发送请求connect_timeout 3   //超时时间nb_get_retry 3        //重试次数delay_before_retry 3   //重试间隔多少秒}     
}real_server 192.168.100.50 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}
}

}


备用服务器配置

这里备用服务器和主服务器配置都一样,下面仅列出不一样的地方供参考。
router_id LVS_DR2//备用的服务器需要改名称
vrrp_instance VI_1 { //定义 VRRP 热备是咧
state BACKUP //热备状态 需要改为BACKUP
priority 90 //优先级需要小于主调度服务器


5配置负载调度器分配策略

(1)配置虚拟IP地址,采用虚接口的方式 (eth0:0),为网卡eth0绑定 VIP 地址,方便响应群集访问。VIP 地址是:192.168.100.10
[root@HedHat ~]# cd /etc/sysconfig/network-scripts
[root@HedHat network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
[root@HedHat network-scripts]# vim ifcfg-eth0:0
......... 省略部分信息

DEVICE=eth0:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMACK=255.255.255.0


(2)配置负载分配策略,这里需要用到 ipvsadm 管理工具,安装工具、在配置策略
[root@HedHat ~]# yum install ipvsadm -y
[root@HedHat ~]# modprobe ip_vs
[root@HedHat ~]# ipvsadm -A -t 192.168.100.20:80 -s rr
[root@HedHat ~]# ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.40 -g -w 1
[root@HedHat ~]# ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.50 -g -w 1
[root@HedHat ~]# service ipvsadm save //保存分配策略
[root@HedHat ~]# chkconfig --add ipvsadm
[root@HedHat ~]# chkconfig ipvsadm on


(3)从调度服务器的分配策略也是一样,修改IP地址即可,这里不再演示


6配置第一台节点服务器

(1)调整 /proc 响应参数,对于 DR 群集模式来说,由于LVS 负载调度器和各个节点需要公用 VIP 地址,就要调整Linux 内核的重定向参数
[root@HedHat ~]# vim /etc/sysctl.conf
.............省略部分信息

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@HedHat ~]# sysctl -p


(2)使用虚接口 lo:0 来承载 VIP 地址,并为本机添加一条路由记录,讲访问 VIP 的数据限制在本地,以避免通信紊乱。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
..........省略部分信息

DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.255 //这里注意需要子网掩码4个255
ONBOOT=yes

[root@localhost ~]# route add -host 192.168.100.10 dev lo:0


测试、总结

安装httpd,创建测试页面、启动httpd服务器程序。
关闭防火墙、setenforce 0
访问地址应该是 我们配置的VIP地址
模拟故障测试,关闭主调度服务器的虚接口 eth0:0 再次访问VIP 看看是否成功,成功的话就证明 Keepalived 配置成功。
也可以通过调度服务器的 /var/log/messages 日志文件,可以跟踪故障切换过程
也可以执行“ipvsadm -ln” “ipvsadm -lnc” 查看负载分配情况

转载于:https://blog.51cto.com/13746824/2162848

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/277425.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/277425.shtml
英文地址,请注明出处:http://en.pswp.cn/news/277425.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php程序layer,php 提交表单 关闭layer弹窗iframe的实例讲解

介绍一款非常好用的前端弹窗插件:根据官方的API:layer的iframe弹窗//iframe层-父子操作layer.open({type: 2,area: [700px, 530px],fix: false, //不固定maxmin: true,content: test/iframe.html});这里以php开发为例 演示如何 提交表单后自动关闭layer弹…

Django之 RESTful规范

RESTful 规范 一、什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行…

php编译 ftp,无需重新编译php加入ftp扩展的解决方法

首先,进入源码目录cd php-5.2.13/ext/ftp#运行phpize生成configure/usr/local/php/bin/phpize#编译,指定php-config,注意这里的php-config,不是php.ini./configure --with-php-config/usr/local/php/bin/php-config#上面可以添加--enable-ftp,也可以不用添加#编译安…

git常用命令及分支简介

2019独角兽企业重金招聘Python工程师标准>>> 1、git基本命令 1)git add 将想要快照的内容写入缓存区 2)git status -s "AM" 状态的意思是,这个文件在我们将它添加到缓存之后又有改动 3)git commit -m 第一次…

企业私有云部署im,视频服务

1,安全问题 2,员工跨地域 3,内部视频培训 考勤申请,设备借用申请 名片申请 会议室预订 审批 内网,局域网部署 Android源码 https://github.com/starrtc/android-demo ios源码https://github.com/starrtc/ios-demo

php html 伪静态,php 伪静态(url重写)的写法

来看下面这个网页 url:http://www.jbxue.com/test.php/1,100,8630.html其实处理的脚本是test.php 参数为1,100,8630相当于test.php?a1&b1100&c8630 只不过这样的URL太难记。搜索引擎也不喜欢。真静态只是完全生成了HTML。客户端访问的时候直接输出。不用脚…

客服工作台

public Page<Record> customerDeskList(QhyfController controller) throws Exception {//获取分页信息PageInfo pageInfo controller.getPageInfo();int pageNumber pageInfo.getPageIndex();int pageSize pageInfo.getPageSize();List<String> paras new Arr…

Leetcode怎么调试java代码,在Clion上调试LeetCode代码

在Clion上调试LeetCode代码在leetcode上做题调试起来总有些不方便&#xff0c;所以查阅了一些资料后&#xff0c;按以下配置&#xff0c;自我感觉效率还行&#xff0c;分享给大家。祝大家刷题愉快。并附上自己整理的leetcode400题题表。Leetcode400题&#xff1a;notion地址依赖…

来入门一下kotlin吧

Kotlin是什么&#xff1f; Kotlin是一种在java虚拟机上运行的静态类型的编程语言&#xff0c;被称之为 Android 世界的Swift&#xff0c;由 JetBrains 设计开发并开源。 Kotlin的优势&#xff01; Kotlin可以编译成java字节码&#xff0c;也可以编译成JavaScript。方便在没有ja…

apache2 配置php,Windows配置PHP5与Apache2

windows下安装和配置PHP5与Apache2真是比linux下难多了&#xff0c;唉。这里用的是PHP Version 5.2.1和Apache HTTP Server 2.2.4&#xff0c;都是从官方网站下的。1. 下载安装&#xff0c;不多说了&#xff0c;apache一路按下去就ok&#xff0c;php连按都不用&#xff0c;解压…

ReactNative 触摸事件处理

ReactNative触摸事件处理 对RN触摸事件的捕获与冒泡机制的理解 组件A、B、C结构 组件A组件B组件C 捕获、冒泡机制 sequenceDiagram A->>A: 是否捕获&#xff1f;若是则停止向下一级传递 A->>B: B->>B: 是否捕获&#xff1f;若是则停止向下一级传递 B->&g…

CISCO网络故障排错命令总结分享

一、故障处理命令 1、show命令&#xff1a; 1&#xff09; 全局命令&#xff1a; show version &#xff1b;显示系统硬件和软件版本、DRAM、Flash show startup-config &#xff1b;显示写入NVRAM中的配置内容 show running-config &#xff1b;显示当前运行的配置内容 show b…

java input回车,用java怎样编写加减乘除,从键盘输入,例如:1+2按回车得到

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import org.junit.Test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestCalc {Testpublic void testCalculator() {String input "11";//输入String rule "(\\d\\.?\\d*)([\\…

Java中数组在内存中的存放原理?

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/yangyong0717/article/details/79165685Java中数组被实现为对象&#xff0c;它们一般都会因为记录长度而需要额外的内存。对于一个原始数据类型的数组&#xff0c;一般需要24…

程序员如何面试才能拿到offer

一、概述 面试&#xff0c;难还是不难&#xff1f;取决于面试者的底蕴&#xff08;气场技能&#xff09;、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判&#xff0c;在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑&#xff1a;“面试官为什么会…

php 跨区域,如何构造PHP的内容包括在非安全(http://)和安全(https://)区域以及跨多个目录使用?...

只需使用//example.com/foo.blah即可.< img id “sample-image”src “// /media/sample-image.png”/>很明显,HTTP是协议,但存在其他协议,如GOPHER,HTTPS,FTP等……而不是在gopher URL gopher&#xff1a;//example.com上,您只需链接到//example.com,协议就可以在没有它…

Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)阅读笔记

弱监督目标检测相对于一般的目标检测任务来说&#xff0c;训练样本不需要实例级别的标注&#xff0c;只需要图片级别的标注&#xff0c;即告诉图片中有什么而不需标注位置信息&#xff0c;这种标注图片容易获取&#xff0c;能节省标注时间及精力。现有的大部分方法在进行若监督…

如何添加JWT生成的token在请求头中

前言 在我们使用JWT来做用户的验证时&#xff0c;我们登陆生成对应的token,并加入到请求的参数中发送到后台提供相关的权限校验。这个时候我们需要使用到传递请求头参数传递的问题&#xff0c;下面是两种方式。 1.ajax提交方式 1&#xff09;.方法一&#xff1a; $.ajax({ type…

Gradle 使用技巧(二) - SO/NDK过滤

引言 作为一个Android开发人员&#xff0c;so对于我们来讲是极其常见的&#xff0c;各种大厂的SDK中都包含着各种各样的so&#xff0c;而so也是apk瘦身的重要一环&#xff0c;减少so平台的数量&#xff0c;可以极大限度的减少apk的大小。 Android 中的so 先看一张官方的图&…

java两个数之间质数求法,求任意两个整数之间质数的个数的代码!!!(新手编写)...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*** Title:Calculate acount of prime number between preNum and rearNum;* Author: public* Time&#xff1a;2008.12.5 21:09:35*/import java.awt.*;import java.awt.event.*;class Arithmetic{//将计算质数个数的类封装在此类…