Linux系统——keepalived高可用集群服务
Linux系统——keepalived高可用集群服务
Keepalived服务介绍
起初的设计是专门给LVS服务的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP(Virtual Router Redundancy Protocol)虚拟路由器冗余协议,VRRP是为了解决静态路由单点故障,它有两大功能:健康检查与故障切换(主备之间快速切换)
HA的功能:
在主备LB之间相互监控运行状态,一旦主LB宕机,备LB会立马接收主LB的所有资源(IP资源与VIP资源),然后接管主LB来运行LB的功能,一旦主LB恢复,它将资源还给主LB
健康检查:
主要是对RS节点的运行健康性检查,一旦有节点宕机,它会不再将主求发给这个RS节点
Keepalived故障切换原理
这种故障切换是通过VRRP协议来实现的,主节点会按一定的时间间隔发生心跳信息广播包,告诉备节点自己的存活状态,当主节点出现故障时,备节点就无法继续检测到主节点的心跳信息,从而调用自身的接管程序,接管主节点的IP资源及服务,当主节点恢复时,备节点会释放所接管的资源,恢复到接管前的状态
VRRP协议:
Virtual Router Redundancy Protocol虚拟路由器冗余协议,能过竞选的方式来实现的
Keepalived安装布署
官方网站:http://www.keepalived.org
下载并安装
wget http://www.keepalived.org/software/keepalived-1.1.7.tar.gz
tar zxf keepalived-1.1.7.tar.gz
cd keepalived-1.1.7
./configure
Keepalived configuration
------------------------
Keepalived version : 1.1.17
Compiler : gcc
Compiler flags : -g -O2
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
Use LinkWatch : No
Use Debug flags : No
make && make install
拷贝配置文件
/bin/cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
#启动脚本
/bin/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#配置启动脚本参数
mkdir /etc/keepalived -p
#创建配置文件目录
/bin/cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#配置文件模板
/bin/cp /usr/local/sbin/keepalived /usr/sbin/
#启动命令
启动服务
/etc/init.d/keepalived start
配置Keepalived单实例
主负载均衡器配置如下
[root@master keepalived]# vi keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
abc@abc.com
}
smtp_server 192.168.1.1
smtp_connect_timeout 30
router_id LVS_7
}
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 7
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.254/24
}
}
备负载均衡器配置
[root@backup keepalived]# vi keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
abc@abc.com
}
smtp_server 192.168.1.1
smtp_connect_timeout 30
router_id LVS_8
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 8
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.254/24
}
}
两端服务重启
/etc/init.d/keepalived restart
检查主备负载均衡器VIP情况
[root@master keepalived]# ip add|grep 192.168.1.24
inet 192.168.1.254/24 scope global eth1
[root@backup keepalived]# ip add|grep 192.168.1.254
备服务器上没有出现VIP表明配置正确
测试故障切换
首先检查VIP联通性
停掉主服务器keepalived服务
/etc/init.d/keepalived stop
只会有短暂的超时就立马恢复了
安装WEB服务器测试故障切换
yum install httpd -y
##分别安装在两台主备服务器上
配置WEB-001
echo "welcome to web of mingongge">/var/www/html/index.htm
配置WEB-002
echo "welcome to web of mingongge">/var/www/html/index.html
为了测试两台服务器显示内容配置一致
for n in `echl {1..3}`;do curl http://192.168.1.254;done
welcome to web of mingongge
welcome to web of mingongge
welcome to web of mingongge
测试WEB故障切换
直接关闭主服务器测试
[root@master keepalived]#halt
for n in `echl {1..5}`;do curl http://192.168.1.254;done
welcome to web of mingongge
welcome to web of mingongge
welcome to web of mingongge
welcome to web of mingongge
welcome to web of mingongge
实现服务器故障切换
备注:实际生产环境,需要注意两台WEB服务器上的数据一致性问题,使用NFS共享存储或其它共享存储就可以解决此问题
- 用AutoHotKey建立自己的便签本
- Flash/Flex学习笔记(14):制作涂鸦板
- 页面布局的一些心得
- Linux下的计算命令和求和、求平均值、求最值命令梳理
- 网卡自适应带来的麻烦
- silverlight:手写板/涂鸦/墨迹/InkPresenter示例程序
- Linux下日志文件监控系统Logwatch的使用记录
- .net中使用oracle数据库分页的土办法
- 图表的一些资源
- 删除文件后,磁盘空间没有释放的处理记录
- silverlight:ListBox中如何取得DateTemplate/ItemsPanelTemplate中的命名控件?
- 表格效果2
- Linux终端复用神器-Tmux使用梳理
- 程序实现下载文件或者打开文件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 简单了解如何封装自己的Python包
- python求解汉诺塔游戏
- Python第三方包PrettyTable安装及用法解析
- 如何让python的运行速度得到提升
- 在keras中对单一输入图像进行预测并返回预测结果操作
- python中数字是否为可变类型
- ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
- PHP示例演示发送邮件给某个邮箱
- PHP设计模式之观察者模式定义与用法分析
- PHP实现数组向任意位置插入,删除,替换数据操作示例
- 实例讲解Python 迭代器与生成器
- opencv 图像轮廓的实现示例
- 基于python实现可视化生成二维码工具
- Python word实现读取及导出代码解析
- Python项目跨域问题解决方案