代码语言:javascript复制
1 集群基础
1.1 集群简介【了解】
1.1.1 集群分类
高扩展集群
基于资源横向扩展的一种方式,
将一个业务中的某个服务,以组件的形式单独部署,实现整个业务的横向扩展,
特点:所有主机共同支撑同一个业务的运行。
高可用集群 *****
场景:核心业务
特点:
核心业务以克隆或者复制的形式双机部署,共同支撑一个业务的正常运行。
高性能集群
场景:大规模的计算场景
特点:
基于高扩展集群和高可用集群的基础上,通过一定的技术方案或者高性能设备实现有限资源的基础上大规模的计算效果。
1.1.2 高可用指标
场景需求
关键的核心的业务出现问题 -- 单点故障 -- 高可用集群
克隆或者复制,共同支撑一个服务
评判方法:
网络可用性 、 恢复能力
网站可用性
场景分类:
中小场景:时间可用性
表达式:
A = MTBF/(MTBF MTTR) 业务量小
A = 服务正常时间/总时间 业务量稍大
区别:
第一个需要大量的统计
第二个无需大量的统计
大规模场景:合计可用性
定位:用户的请求
A = 成功处理数量/请求总数量
可用性分类:N 个 9
基本 较高 故障自动恢复 极高
拓展:
3个9半 99.95%
参考 Google SRE 站点可靠性工程师
恢复能力
场景:
数据场景
RPO 数据恢复能力 -- 最大的丢失数据的阶段
服务场景
RTO 业务恢复能力 -- 应用服务从故障到开始恢复的时间间隔。
1.1.3 高可用方式
常见术语
Vip 统一入后,附加在主节点上
Master 高可用集群中,处于主导地位的主机角色,一般用于接受用户请求
Slave 高可用集群中,处于被动地位的主机角色,当主节点故障,slave节点接管vip,处理用户请求
高可用方式
主备
两个角色主机处理同一个业务,使用一套主备配置参数
双主
两个角色主机处理不同的业务,互为主备,简单理解为两个反方向的主备叠加场景
使用两套主备配置参数
集群
特点:
多个备用结点
多种业务
当主故障后,被动结点通过内部的选举机制,选取临时的主节点来接管vip
关键技术
时间同步
集群中的所有主机的时间状态完全一致
ntp协议
心跳检测
高可用集群中主备结点间知道彼此状态的一种专用通信机制,
vrrp
2 Keepalived快速入门
2.1 软件基础【了解】
2.1.1 keepalived
官方介绍
路由软件、
负载均衡 来源于对内核中的IPVS增强和封装
高可用 来源于VRRP协议及相关插件脚本
使用范围 可以独立使用,可以组合使用
发行版本
2.0.15
相关地址
2.1.2 软件结构【记住】
软件结构图
内核空间
用户空间 -- keepalived的主要工作部分
结构图简介
组成: 用户空间
核心组件 *****
配置文件管理器
内存管理器
调度管理器
工作流程
负载均衡的工作流程
借助于内核中的IPVS来实现负载均衡效果
高可用的工作流程
将物理路由器整合在一个路由器池中,以统一的虚拟接口对外提供服务。
vrrp
软件理解
将负载均衡和高可用相关软件整合在一起的软件整合解决方案
重要功能需要在用户空间安装
2.1.3 LVS
项目简介
Linux虚拟服务器,
整合大量空闲主机,实现资源的高效使用
高扩展集群场景 负载均衡--ip
架构简介
前段负载均衡层 lvs ipvsadm
中间web服务器池 各种服务器
共享存储层 存储数据 ,推荐使用分布式存储
核心功能
负载均衡 -- 内核中的ipvs
转发模型 -- 效率最高DR,使用最广NAT,数据中心TUN,更大网络-FULLNAT(二次编译)
调度策略 -- 13种,RR WRR LC WLC SH DH
2.1.4 VRRP
场景需求
主机配备的网关失效了怎么办?
1 增加多个物理路由器
2 主机配置默认路由
问题:
静态路由故障,有可能出现多种问题:
1 线路选择问题
2 网络中断
解决方法:
VRRP
项目简介
VRRP 虚拟路由冗余协议
内容:
将批量的物理路由器整合在一起,以一个统一的虚拟路由器对外提供服务
物理路由器基于内部的机制,按优先级排列,最高的为master路由器
虚拟路由器接受的数据包基于master路由器转发出去
master故障,其他备用路由器选举最高的为临时主,提供服务
整个过程,后端真实主机看到的仅仅是虚拟路由,无论真实路由如何变幻,整个网络不受任何影响。
2.2 软件部署【应用】
2.2.1 安装软件
学习环境
Centos7.5
ip:
主 kpmaster 192.168.8.14
从 kpslave 192.168.8.15
软件信息
安装方法
yum install keepalived -y
yum install nginx -y
echo 'keepalived slave' > /usr/share/nginx/html/index.html
systemctl start nginx
注意:
nginx首页在不同主机上不一样
nginx这里的作用是为了更好的显示keepalived的效果(VIP)
2.2.2 配置文件简介
软件结构
/etc/keepalived
/etc/keepalived/keepalived.conf 最核心配置文件
/etc/sysconfig/keepalived
/usr/bin/genhash
/usr/lib/systemd/system/keepalived.service
/usr/libexec/keepalived
/usr/sbin/keepalived
配置结构
keepalived配置文件:
全局配置段 *****
VRRP配置段 *****
虚拟主机配置段
配置简介
全局配置段
router_id
VRRP配置段
state
interface
virtual_router_id
priority
virtual_ipaddress
2.2.3 配置软件
配置效果
主备是一套配置文件: BACKUP MASTER
# kpmaster主机配置 kpslave主机配置
global_defs { global_defs {
router_id kpmaster router_id kpslave
} }
vrrp_instance VI_1 { vrrp_instance VI_1 {
state MASTER state BACKUP
interface eth0 interface eth0
virtual_router_id 51 virtual_router_id 51
priority 100 priority 99
authentication { authentication {
auth_type PASS auth_type PASS
auth_pass 1111 auth_pass 1111
} }
virtual_ipaddress { virtual_ipaddress {
192.168.8.100 192.168.8.100
} }
} }
关键点:
router_id 必须唯一,一般采用主机名
state 必须配套:必须是MASTER和BACKUP
virtual_router_id 一套配置参数,此处必须一致
priority:用于选主
virtual_ipaddress 设定web访问的vip
检查效果
systemctl start keepalive
ip信息检查:
ip addr 命令,ifconfig不管用
状态信息:
systemctl status keepalive
tail /var/log/messages
注意:
在初始设置keepalived的时候,最好不要添加 vrrp_strict 属性,因为它会自动帮我们生产keepalived相关的防火墙规则,而这个规则默认情况下是拒绝所有信息访问
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 match-set keepalived dst
2.2.4 故障演练
主机故障
当主的keepalived故障后,自动消除master状态,剔除vip
备结点的keepalived检测到主故障后,会自动进入到master状态并接管vip
当主节点keepalived恢复后,
备结点发现有其他结点的路由优先级高,就自动进入backup状态,并剔除vip
主节点进入master状态,接管vip
整个过程是以自动的方式操作的。
服务故障
vip是keepalived实现的,与后端web没有太大关系,
演练小结
keepalived实现高可用网络是分层的:
前端:负载均衡网络,vip,接受用户请求并转发到后端
后端:应用负载网络,用户处理转发过来的 用户请求,与vip每太大关系
2.2.5 负载均衡
场景需求
使用keepalived实现lvs的负载均衡效果--DR
需求分析
1 基础的网络环境
2 lvs的DR环境
3 keepalived的负载均衡效果
关键点分析
1 基础的网络环境
1 全部单网卡-Nat模型
2 ip地址配置
2 lvs的DR环境
1 nginx服务配置
2 地址冲突配置
3 lvs主机DR模式规则
4 测试
3 keepalived的负载均衡效果
配置详解
keepalived中的负载均衡配置 -- lvs规则
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
protocol TCP
real_server 192.168.200.2 1358 {
...
}
real_server 192.168.200.3 1358 {
...
}
}
属性简介
虚拟主机配置格式:virtual_server <VIP> <port> { ... }
delay_loop 用于服务轮询的延迟计时器
lb_algo 设定访问后端服务的调度策略
lb_kind 设定数据转发的模型
protocol 设定数据通信的协议
real_server 设定后端主机的信息
后端主机配置格式:real_server <RIP> <port> { ... }
注意:
以上5项是必须设置的。
real_server 后面的"{}"中即使没有属性,也不能写成"{}",必须使用Enter换行格式隔开
操作实践
地址冲突配置
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
ifconfig lo 192.168.8.100/32 up
lvs临时测试
ipvsadm -A -t 192.168.8.100:80
ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.16
ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.17
负载均衡配置
# kpmaster主机 kpslave主机
global_defs { global_defs {
router_id kpmaster router_id kpslave
} }
vrrp_instance VI_1 { vrrp_instance VI_1 {
state MASTER state BACKUP
interface eth0 interface eth0
virtual_router_id 51 virtual_router_id 51
priority 100 priority 99
virtual_ipaddress { virtual_ipaddress {
192.168.8.100 dev eth0 label eth0:0 192.168.8.100 dev eth0 label eth0:0
} }
} }
virtual_server 192.168.8.100 80 { virtual_server 192.168.8.100 80 {
delay_loop 2 delay_loop 2
lb_algo rr lb_algo rr
lb_kind DR lb_kind DR
protocol TCP protocol TCP
real_server 192.168.8.16 80 { real_server 192.168.8.16 80 {
} }
real_server 192.168.8.17 80 { real_server 192.168.8.17 80 {
} }
} }
实践小结
1 基础的网络环境
2 lvs测试负载均衡
注意:千万不要省
原因在于 keepalived实现的是lvs规则效果,不会自动管理后端的web配置
3 转换keepalived
keepalived中的负载均衡配置必须按照规矩来,
2.3 配置详解【记住】
2.3.1 全局配置段
默认配置
是常用的,主要包含两块:
邮件通知
vrrp的全局属性
配置详解
专用查看配置信息: man keepalived.conf
注意: 只能去 keepalived.conf 所在目录去执行
全局配置:
默认配置 :邮件通知 vrrp的全局属性
静态路由
静态规则
核心配置:
router_id
惟一的路由标识
生产中不推荐使用主机名
默认的值:主机名
2.3.2 VRRP配置段
默认配置
默认显示的 vrrp_instance 的配置信息
配置详解
1 vrrp配置内容一共有6种,重要的是
vrrp_script vrrp_instance
所有的配置项都可以是多个
2 vrrp_instance 属性:
state 集群的初始化状态,只有 MASTER 和 BACKUP
注意:状态是有优先级来确定的,所以需要合理的规划集群的状态,一套高可用集群,只能有一个MASTER
interface: 保证网卡设备是有效的
virtual_router_id: 必须是唯一,0~255
注意:一套高可用集群的配置必须一致
priority 用于选择master,必须合理的规划,主备之间的差值尽量大一点,但是要合理
authentication 高可用集群间通信的认证,PASS AH
注意:
可用可不用
virtual_ipaddress 设置vip的地址范围,可以是一个,可以是列表
格式:<IP地址>/<掩码> brd <广播地址> dev <网卡名称> scope <作用范围> label <网卡标签>
推荐:
单网卡效果下,直接用ip即可
多网卡效果下,推荐增加dev和label属性
2.3.3 状态监测【应用】
场景需求
基于keepalived的状态检测功能实现某些自动化操作动作
需求分析
1 编写监控脚本
2 keepalived使用监控脚本
3 测试
关键点分析
1 编写监控脚本
基于文件的判断来检测
2 keepalived使用监控脚本
1 检测脚本在 vrrp_script 定义
2 检测脚本在 vrrp_instance 中使用
3 测试
配置详解
定义检测脚本
vrrp_script <SCRIPT_NAME> {
script <STRING>|<QUOTED-STRING> # 设定执行脚本的路径,也可以是命令行的检测命令
interval <INTEGER> # 设定脚本执行的间隔时间,默认1s
}
关键点:
<SCRIPT_NAME> 脚本名称必须唯一
script 需要编写状态监测的命令或者脚本脚本的执行方式
推荐使用脚本的标准执行方式
interval 脚本的执行间隔
使用监测脚本
track_script {
<SCRIPT_NAME>
}
关键点:
track_script 在指定 vrrp_instance 中设置
<SCRIPT_NAME> 必须与 vrrp_script 定义的检测名称一致
操作实践
1 编写脚本
内容:
# cat check_keepalived.sh
#!/bin/bash
# 检测keepalived的服务状态
# /tmp/keepalived.fail表示服务故障
if [ -f /tmp/keepalived ]
then
weight -30
fi
注意:
脚本必须编写规范
脚本能执行
脚本在所有的keepalived主机上 都必须存在,而且完全一样
2 修改配置
完整内容:
[root@kpmaster scripts]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kpmaster
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_keepalived {
script "/bin/bash /data/scripts/check_keepalived.sh"
interval 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.100 dev eth0 label eth0:0
}
track_script {
check_keepalived
}
}
virtual_server 192.168.8.100 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.8.16 80 {
}
real_server 192.168.8.17 80 {
}
}
关键点:
顺序:先编写 vrrp_script,再使用 track_script
vrrp_script 里面的 script 必须是标准的脚本执行方式
track_script 一定要写到指定的vrrp_instance中,不要乱用
track_script 内容一定要是 vrrp_script 定义的名称
关于 vrrp_script 和 track_script 的内容在所有的keepalived主机上完全一致。
权重值:weight
工作目的:自动的切换MASTER和BACKUP
工作原理:
有 priority 和 weight 的差值来确定高可用集群主机间的最终优先级
我们一般将 weight 的值设置为 负值,降低优先级的效果
weight的值一定要和 主备之间的优先级差值合理的考虑,尽量一次到位
3 测试
实践小结
对于任何场景下的服务检测功能,我们可以结合keepalived的内置属性来完成,完成步骤如下:
1 规划服务的检测内容
2 定制服务检测脚本
3 keepalived使用脚本检测配置
4 效果测试
注意:
keepalived在使用脚本检测配置的时候,一定要注意:
track_script 中使用的名称,一定要在 vrrp_script 中定义
vrrp_script中script属性的尽量脚本方式,而且使用标准的"/bin/bash /path/to/file"格式
2.3.4 虚拟主机配置段
默认配置
三个virtual_server
一个keepalived.conf可以允许出现多个Virtual_server配置信息
多个lvs集群
组成:
虚拟主机组 虚拟主机
配置详解
普通属性
lb_algo 调度算法 7种 rr|wrr|lc|wlc|lbLc|sh|dh
lb_kind 调度模式 3种 NAT|DR|TUN
protocol 数据转发协议 3种 TCP|UDP|SCTP
real_server 后端真实主机配置
sorry_server备用真实主机,所有的real_server失效后,它才生效
状态检测
种类:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|DNS_CHECK|MISC_CHECK
重要的:
HTTP_GET|TCP_CHECK
HTTP_GET
url {
path <path/to/url> 指定要检查的URL的路径
status_code <INT> 状态码方式验证,推荐使用这种方法
}
TCP_CHECK
connect_timeout 连接超时时间
delay_before_retry 重试间隔时间,默认1s
2.3.5 HTTP健康检测【应用】
场景需求
在keepalived的高可用 负载均衡效果下,对后端真实主机进行状态检测,如果检测到后端主机故障,那么数据就不会转发到故障主机
需求分析
1 规划服务的检测内容 -- nginx -- http tcp
2 keepalived的配置
HTTP_GET 检测方式
3 综合测试
对RS主机进行故障演练
测试内容:
日志效果
ipvsadm 规则效果
curl 访问效果
关键点分析
操作实践
virtual_server 192.168.8.100 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.8.16 80 {
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.8.17 80 {
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
注意:
检测方式: HTTP_GET
检测内容:url
url的地址一定要合理的规划
状态监测范式,最好用http状态返回值
检测效果:
合理的超时、重试次数、重试间隔
实践小结
对于http场景下的服务检测功能,我们可以结合keepalived的HTTP检测功能来完成,完成步骤如下:
1 规划服务的检测内容
2 keepalived使用HTTP检测配置
3 效果测试
注意:
keepalived在使用HTTP检测配置的时候,一定要注意:
url 中的检测文件路径必须准确
关于状态检测,我们推荐使用status_code的方式,不推荐使用digest方式
2.3.6 TCP健康检测【应用】
场景需求
在keepalived的高可用 负载均衡效果下,对后端真实主机进行状态检测,如果检测到后端主机故障,那么数据就不会转发到故障主机
采用TCP的方式
需求分析
1 检测方式规划
使用 TCP
2 keepalived使用TCP检测配置
采用TCP_CHECK检测机制
3 综合测试
同上
关键点分析
操作实践
virtual_server 192.168.8.100 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.8.16 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
real_server 192.168.8.17 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
}
关键点:
检测方式:TCP_CHECK
属性:
可以全部采用默认,如果不想,可以直接定制
实践小结
对于http场景下的服务检测功能,我们可以结合keepalived的TCP检测功能来完成,完成步骤如下:
1 规划服务的检测内容
2 keepalived使用TCP检测配置
3 效果测试
注意:
keepalived在使用TCP检测配置的时候,一定要注意:
保证tcp检测的端口和ip地址必须准确
connect_ip <IP ADDRESS>
connect_port <PORT>
我们针对哪个RS主机测试,就在指定的real_server配置段中设置TCP_CHECK
2.3.7 友情提示【应用】
场景需求
当keepalived的所有Rs主机出现故障后,提供一个友好页面
需求分析
1 方案规划
2 keepalived的配置修改
virtual_server 内部的 sorry_server
3 综合测试
技术点分析
配置详解
sorry_server的配置必须与virtual_server的调度模型相契合
操作实践
virtual_server 192.168.8.100 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.8.16 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
real_server 192.168.8.17 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
}
关键点:
sorry_server 的位置和配置格式
实践小结
对于http场景下的友情提示功能,我们可以结合keepalived的sorry_server功能来完成,完成步骤如下:
1 规划服务的检测内容
2 keepalived使用sorry_server检测配置
3 效果测试
注意:
keepalived在使用sorry_server配置的时候,一定要注意:
我们keepalived实现负载均衡的效果所采取的转发模式,我们案例中采用的是DR模型,所以必须保证tc p检测的端口和VIP地址端口必须一致
2.3.8 日志配置【应用】
日志现状
日志查看方法:
systemctl status keepalived 少
tail /var/log/messages 临时
环境变量文件
/etc/sysconfig/keepalived
和日志相关的属性:
-D
-S
日志参数详解
localn rsyslog 的用户自定义获取方式
日志定制实践
1 修改keepalived的环境变量配置文件
-S 0
2 修改rsyslog.conf 配置
local0.* /var/log/keepalived.log
注意:
localn 的值应该与 keepalived 文件中的-S 指定的值一样。
3 重启服务
顺序很重要:
先重启rsyslog
再重启keepalived
2.4 原理详解【记住】
2.4.1 结构详解
软件结构图
内核空间
ipvs
netlink
用户空间
核心模块
watchdog 监控
vrrp stack vrrp相关的功能
checker 状态检测、健康检测
ipvs wrapper ipvsadm的封装和加强
netlink reflecter 网络相关:负载均衡网络、虚拟路由网络
内存管理
调度管理器
配置管理
状态检测原理
1 高可用方面
watchdog -- vrrp
vrrp_script track_script
2 负载均衡方面
watchdog checker ipvs wrapper
vrrp_script track_script
real_server 内部的 专用检测工具
HTTP_GET TCP_CHECK
虚拟服务原理
管理方面
ipvs warpper IPVS 配置管理组件
ipvs warpper 通过配置管理组件 加载keepalived.conf文件中的各种属性,然后将virtual_server中的配置转换为ipvsadm相关的规则,借助于内核空间中的IPVS模块实现后端真实主机的负载均衡管理。
检测方面
watchdog checker ipvs wrapper
2.4.2 路由方式
转发简介
用户请求 -- keepalived -- virtual_server -- real_server
转发功能实现:
lb_algo 调度方法 rr|wrr|lc|wlc|lbLc|sh|dh
lb_kind 转发模式 NAT|DR|TUN
keepalived默认推荐的转发模式:DR
NAT路由
完整:用户请求 -- keepalived -- virtual_server -- real_server
进入:外部vip -- 转换DNAT -- RS
出去:RS -- 内部vip -- 转换SNAT -- 客户端
配置:
需要同时在keepalived.conf当中设置两个vrrp_instance
inside_network 和 outside_network
特点:
进入和退出都需要经过keepalived集群,所以在大规模场景下,有可能会成为瓶颈
但是在小场景下,使用范围广
DR路由
完整:用户请求 -- keepalived -- virtual_server -- real_server
进入:外部vip -- RS
出去:RS -- 互联网 -- 客户端
特点:
在各种场景下,效率高,不适用端口映射场景
keepalived默认推荐的转发模式:DR
2.5 综合实践【应用】
2.5.1 双主方式
需求案例
目的:
双主高可用的负载均衡效果
主机环境:
双vip效果
后端真实主机是一套nginx环境业务
需求分析
1 基础网络配置
keepalived主机环境无序设置
后端真实主机:
需要配置两个vip
2 keepalived环境部署
需要配置两套vrrp实例
3 综合测试
关键点分析
操作实践
8.14 配置文件
[root@kpmaster keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kpmaster
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_keepalived {
script "/bin/bash /data/scripts/check_keepalived.sh"
interval 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.100 dev eth0 label eth0:0
}
track_script {
check_keepalived
}
}
vrrp_instance VI_2{
state BACKUP
interface eth0
virtual_router_id 52
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.200 dev eth0 label eth0:1
}
track_script {
check_keepalived
}
}
virtual_server 192.168.8.100 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.8.16 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
real_server 192.168.8.17 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
}
virtual_server 192.168.8.200 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.8.16 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
real_server 192.168.8.17 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
}
8.15 配置文件
[root@kpslave keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kpslave
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script check_keepalived {
script "/bin/bash /data/scripts/check_keepalived.sh"
interval 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.100 dev eth0 label eth0:0
}
track_script {
check_keepalived
}
}
vrrp_instance VI_2{
state MASTER
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.8.200 dev eth0 label eth0:1
}
track_script {
check_keepalived
}
}
virtual_server 192.168.8.100 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.8.16 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
real_server 192.168.8.17 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
}
virtual_server 192.168.8.200 80 {
delay_loop 2
lb_algo rr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.8.16 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
real_server 192.168.8.17 80 {
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 2
}
}
}
实践小结
步骤:
1 合理的网络规划
2 后端主机的负载均衡测试
3 keepalived的双vrrp实例负载均衡 高可用设置
4 综合测试
注意:
keepalived在配置多vrrp实例的时候,一定要注意: 互为主备效果
同一实例间的优先级和state必须写清楚
不同实例的名称和VIP一定要合理的规划