LVS+keepalived
面试:nginx连接不上怎么排查 ? 可以通过写一个脚本,用crul -I IP地址
查看返回信息的状态码,从而排查nginx连接不上的原因。
介绍
Keepalived软件起初是专门为LVS负载均衡软件设计的用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务的高可用解决方案软件。
Keepalived软件主要是通过VRRP协议实现高可用功能的,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写.VRRP出现的目的就是为了解决静态路由单点故障问题的
keepalived的三个核心模块
core核心模块 chech健康监测 vrrp虚拟路由冗余协议
Keepalived服务的三个重要功能
支持故障自动切换
支持节点健康状态检查
作为系统网络服务的高可用功能
===
keepalived 的热备方式:VRRP协议(虚拟路由冗余协议)
漂移地址 (VIP)
===============
以下是keepalived抢占模式
需要四台机器 master backup web1 web2
配置方法:
主调度器(master)
[root@localhost ~]# yum -y install ipvsadm keepalived
cp /etc/keepalived/keepalived.conf{,.bak}
[root@localhost ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
assassin@111.com // 收件人邮件地址
}
notification_email_from assassin@111.com // 发件人地址
smtp_server smtp.111.com // 发件服务器地址
smtp_connect_timeout 30 // 连接服务器超时时间
router_id LVS_MASTER // 虚拟路由标识 邮件标题
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { // 虚拟实例 两台主机的实例名必须相同
state MASTER // 在实例中扮演的状态
interface ens32 // 心跳接口(本身的网卡名) //探测主机是否存活
virtual_router_id 51 // 虚拟路由标识
priority 100 // 优先级 根据优先级可以选择谁具有优先权这个与备的不能一样。备的要比主的低
advert_int 1 // 心跳检测间隔
authentication { // 验证
auth_type PASS // 验证类型 PASS和AH 两种
auth_pass 1111 // 验证密码
}
virtual_ipaddress { // 设置虚拟IP地址
192.168.200.254
}
}
virtual_server 192.168.200.254 80 { // 虚拟服务器
delay_loop 6 // 设置健康检查时间
lb_algo rr // 设置负载均衡算法
lb_kind DR // 设置LVS实现负载均衡的机制,有NET、TUN、DR三种
protocol TCP // 指定转发协议类型
real_server 192.168.200.113 80 { //节点服务器
weight 1 权重
TCP_CHECK { 节点的健康状态检测设置部分
connect_timeout 3 3秒无响应超时
nb_get_retry 3 重试次数
delay_before_retry 3 重试间隔
connect_port 80 测试连接的端口
}
}
real_server 192.168.200.112 80 { //节点服务器
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
[root@localhost ~]# systemctl restart keepalived
ip a //查看会有两个IP
ipvsadm -Ln
===========
在浏览器中进行检测192.168.200.254
备调度器backup
[root@localhost ~]# yum -y install ipvsadm keepalived
[root@localhost ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
assassin@111.com
}
notification_email_from assassin@111.com
smtp_server dmtp.111.com
smtp_connect_timeout 30
router_id LVS_BACKUP //这个值 与主的可以不一样作为区别主备
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.254
}
}
virtual_server 192.168.200.254 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.200.113 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.200.112 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
[root@localhost ~]# systemctl restart keepalived
===
keepalived 非抢占模式
两台LVS都作为备用的LVS
vi /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP
interface ens32
virtual_router_id 51
priority 90
nopreempt //添加一行 保存退出即可
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.254
}
}
重启keepalived服务
=============================================