LVS+Keepalived群集

一.Keepalived原理

1.群集特点
  • 负载均衡          用于提高群集的性能   LVS  Nginx  HAProxy  SLB  F5
  • 健康检查(探针)  针对于调度器和节点服务器    Keepalived   Heartbeat
  • 故障转移          通过VIP漂移实现主备切换     VRRP   脚本

健康检查(探针)常用的工作方式:

  • 发送心跳消息    vrrp报文    ping/pong
  • TCP端口检查     向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查正常,否则认为健康检查异常
  • HTTP URL检查    向目标主机的URL路径(比如http://IP:PORT/URI路径)发起 HTTP GET 请求方法,如果响应消息的状态码为 2XX 或 3XX,则认为健康检查正常                                                    如果响应消息的状态码为 4XX 或 5XX,则认为健康检查异常
2.Keepalived工作原理及工作模式
  • Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。
  • 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

Keepalived的工作模式:

  • 抢占模式:MASTER节点从故障中恢复后,会将VIP从BACKUP节点中抢占过来。
  • 非抢占模式:MASTER节点恢复后不抢占VIP。(主备节点的state都配置为BAKCUP,且都添加配置nopreempt)
     
3.Keepalived工具介绍

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

  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)

判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

  • 官方网站:http://www.keepalived.org/

4.Keepalived实现原理剖析

Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能

VRRP (虚拟路由冗余协议) 是针对路由器的一种备份解决方案

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
5.Keepalived安装与启动
  • 在LVS群集环境中应用时,也需用到ipvsadm管理工具
  • YUM安装Keepalived
  • 启用Keepalived服务

配置Keepalived master服务器

Keepalived配置目录位于/etc/keepalived/

keepalived.conf是主配置文件

  • global defs {...} 区段指定全局参数
  • vrrp_instance 实例名称 {...}区段指定VRRP热备参数
  • 注释文字以”!”符号开头
  • 目录samples,提供了许多配置样例作为参考

二.Keepalived工作过程演示

工作原理:

  • 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP(VIP),主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
1.准备工作
准备两台服务器
#初始化操作,关闭防火墙
systemctl stop firewalld
setenforce 0
 2.安装服务
yum install -y keepalived
3.修改配置

1)主服务器配置

vim keepalived.conf
#修改配置前,复制一个文件出来以防修改文件配置错误
cp keepalived.conf keepalived.conf.bak

 

 

2)备份服务器配置

​
vim keepalived.conf
#修改配置前,复制一个文件出来以防修改文件配置错误
cp keepalived.conf keepalived.conf.bak

 

3)查看配置成功方式

  • Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?

答案:
Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。

三.实验操作

LVS+Keepalived 高可用群集部署
主DR服务器192.168.86.60
备DR服务器192.168.86.70
web1服务器192.168.86.110
web2服务器192.168.86.20
vip地址192.168.86.111
nfs共享存储服务器192.168.86.140

1.初始操作

systemctl stop firewalld 
setenforce 0

2.配置web1与web2服务器

将nfs共享存储服务器中的/share/ww111、/share/www222分别挂载到web1与web2中 

 

配置网卡文件

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.86.111     #指向vip地址
NETMASK=255.255.255.255
 
systemctl restart network 
 

修改 /etc/sysctl.conf 文件 

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

 

添加路由

route add -host vip地址  dev lo:0

 

 3.配置主服务器与备服务器

yum -y install ipvsadm keepalived   #安装keepalived
modprobe ip_vs     #开启模块
cat /proc/net/ip_vs   或者  lsmod | grep ip_vs   #查看模块
 
开始配置keeplived
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
    后面四行vrrp开头的全部删掉

 

vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
 
--21行--修改,指定承载vip地址的物理接口
    interface ens33
 
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 51
 
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
        修改virtual_ipaddress {				#指定群集vip地址
        192.168.73.15
       }
 
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.73.15 80
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
 
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 0			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
 
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.80.110 80 {
        weight 1					#节点的权重
 
--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔

 

 后面多余的配置可以直接删除掉

 

4.验证测试

浏览器访问 http://192.168.86.111/ww111/test.html 
再在主服务器关闭 keepalived 服务后再测试

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值