LVS-RD和keepalived集群服务

57 篇文章 3 订阅
6 篇文章 0 订阅

目录

一、keepalived介绍

1、keepalived功能

2、VRRP通信原理

3、keepalived服务的工作原理

4、保证高可用性

二、LVS-RD和keepalived集群配置


一、keepalived介绍

keeplived 软件起初是专门为LVS 负载均衡 软件设置的,用来管理并监控LVS集群中各个服务节点的状态,后来加入了可以实现高可用的VRRP 功能。因此,keepalived除了能管理LVS 集群以外,还可以为其它服务(如:Nginx、Haproxy、Mysql等)实现高可用。

keepalived 软件主要是通过 VRRP 协议 实现高可用的功能。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的速写,VRRP出现的目的就是为了解决静态路由单点故障的问题,它能保证当个别节点出现问题时,整个网络可以不间断的运行。
 

1、keepalived功能

①Keepalived是一款专为LVS 和HA 设计的一款健康检查工具

②支持故障自动切换、支持节点健康状态检查

健康检查和失败切换是keepalived的两大核心功能。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。

2、VRRP通信原理

1、在网络中,主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,服务就会中断,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。

2、VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时进行设备切换而不影响主机之间的数据通信。

3、VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的。

4、工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对

5、VRRP路由器在运行过程中有三种状态:①Initialize状态:系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;② Master状态;③ Backup状态;一般主路由器处于Master状态,备份路由器处于Backup状态。

6、VRRP选举机制

①VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。

②比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器

③比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。

7、VRRP通过一竞选协议来动态的将路由任务交给LAN中虚拟路由器中的某台VRRP路由器。

3、keepalived服务的工作原理

1、Keepalived高可用对之间是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

2、在Keepalived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性。接管速度最快可以小于1秒。

4、保证高可用性

一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

二、LVS-RD和keepalived集群配置

在LVS-RD实验的基础上增加一台虚拟机 作为zwb_dr2

1、LVS-RD以之前的博客作为基础

2、配置zwb_dr2(主)

##关闭防火墙及安全信息中心

[root@zwb_rd2 ~]# systemctl stop firewalld 
[root@zwb_rd2 ~]# systemctl disable firewalld
[root@zwb_rd2 ~]# setenforce 0
setenforce: SELinux is disabled

###编译安装 nginx,前面博客有
###安装ipvsadm

[root@zwb_rd2 ~]# yum -y install ipvsadm keepalived

[root@zwb_rd2 ~]# modprobe ip_vs   ## 加载模块信息
[root@zwb_rd2 ~]# cat /proc/net/ip_vs  ## 查看ipvs 版本信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@zwb_rd2 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm  ## 创建一个ipvsadm的一个配置文件
[root@zwb_rd2 ~]# systemctl start ipvsadm  ## 启动
[root@zwb_rd2 ~]# systemctl enable ipvsadm  ##设置开机启动

### 配置负载均衡策略
[root@zwb_rd2 ~]# ipvsadm -C     ####       清空原有配置
[root@zwb_rd2 ~]# ipvsadm -A -t 192.168.159.100:80 -s rr  ### 添加一台虚拟主机,设置IP及端口
[root@zwb_rd2 ~]# ipvsadm -a -t 192.168.159.100:80 -r 192.168.159.10:80 -g ## 添加真实主机
[root@zwb_rd2 ~]# ipvsadm -a -t 192.168.159.100:80 -r 192.168.159.11:80 -g ## 添加真实主机





## 添加虚拟子接口ens33:0
[root@zwb_rd2 ~]# cd /etc/sysconfig/network-scripts/
[root@zwb_rd2 network-scripts]# cp -p ifcfg-ens33 ifcfg-ens33:0
[root@zwb_rd2 network-scripts]# vim ifcfg-ens33:0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.159.100      ###修改为VIP
PREFIX=24
#GATEWAY=192.168.159.2
#DNS1=114.114.114.114
IPV6_PRIVACY=no

[root@zwb_rd2 network-scripts]# systemctl restart network ##重启网络服务

## 配置sysctl.conf 文件
[root@zwb_rd2 ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@zwb_rd2 ~]# sysctl -p  ##  刷新生效
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

##配置keepalived.conf文件,清空原先配置
[root@zwb_rd2 ~]# vim /etc/keepalived/keepalived.conf 
global_defs {                    # 定义全局参数             
      router_id lvs_01           # 定义热备组角色(每个节点不能一样)
}
vrrp_instance vi_1 {             ##  定义VRRP的实例配置   
      state MASTER               # 指定热备状态,主为master,备为backup
      interface ens33            # 指定承载vip地址的物理接口
      virtual_router_id 51       # 指定虚拟路由器的ID号,每个热备组保持一致
      priority 110               # 7指定优先级,数值越大越优先
      advert_int 1
      authentication {
           auth_type PASS
           auth_pass 6666
 }
virtual_ipaddress {              ## 定义VIP地址     
      192.168.159.100
}
}
virtual_server 192.168.159.100 80 { #指定虚拟服务器地址vip,端口,定义虚拟服务器和web服务器池参数
      lb_algo rr                        #定义轮询规则
      lb_kind DR                        #指定集群工作模式,直接路由DR
      persistence_timeout 6             #健康检查的间隔时间
      protocol TCP                      #应用服务采用的是TCP协议
real_server 192.168.159.10 80 {         #定义后端真实服务器的参数
      weight 1                          #节点权重
      TCP_CHECK {
          connect_port 80               #添加检查的目标端口
          connect_timeout 3             #添加连接超时
          nb_get_retry 3                #添加重试次数
          delay_before_retry 3          #添加重试间隔
   }
}
real_server 192.168.159.11 80 {         #指定第二个web节点的地址,端口       
                                  
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
}

[root@zwb_dr2 ~]# systemctl start keepalived.service  ##启动

2、配置zwb_dr1(增加配置)(备)

[root@zwb_dr1 ~]# yum -y install keepalived.x86_64  ##安装

[root@zwb_rd2 ~]# vim  /etc/keepalived/keepalived.conf 
global_defs {
      router_id lvs_02              ##定义热备组
}
vrrp_instance vi_1 {
      state BACKUP              ##定义BACKUP
      interface ens33
      virtual_router_id 51
      priority 105              ##优先级低于master     
      advert_int 1
      authentication {
           auth_type PASS
           auth_pass 6666
 }
virtual_ipaddress {
      192.168.159.100
}
}
virtual_server 192.168.159.100 80 {
      lb_algo rr
      lb_kind DR
      persistence_timeout 6
      protocol TCP
real_server 192.168.159.10 80 {
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
real_server 192.168.159.11 80 {
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
}


[root@zwb_dr1 ~]# systemctl start keepalived.service ##启动

3、查看VIP飘在那个服务器上

①查看keepalived(主)

主机名:[root@zwb_rd2 ~]# hostname
               zwb_rd2

②查看keepalived(备)

主机名:[root@zwb_rd1 ~]# hostname
               zwb_rd21

 

验证:

查看LVS-DR是否工作正常,正常情况下均工作在主设备master上,主机名zwb_rd2

模拟master宕机了。看VIP是否漂移

查看keepalived(备)的ip,发现VIP已经漂移成功

打开浏览器实验

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值