栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

LVS+Keepalived高可用群集

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LVS+Keepalived高可用群集

keepalived 高可用群集部署
  • 一、LVS+Keeplived 高可用群集
    • 1.1 LVS
    • 1.2 Keepalived
    • 1.3 Keepalived体系主要模块及其作用
  • 二、VRRP
    • 2.1 VRRP概述
    • 2.2 VRRP的工作过程
  • 四、LVS+Keepalived 高可用群集的搭建
    • 4.1 配置负载调度器(主:192.168.61.11)
    • 4.2 配置负载调度器(备:192.168.61.22)
    • 4.3 配置节点服务器 web1(192.168.61.33)
    • 4.4 配置节点服务器 web2(192.168.61.44)
    • 测试
      • 当前使用的为主DR服务器
      • 断开主DR服务器的Keepalived测试
      • 在客户端测试

一、LVS+Keeplived 高可用群集 1.1 LVS

Linux虚拟服务器(Linux Virtual Server)
LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法


工作原理:

在一个LVS服务群集中通常有主服务器(MASTER)和备用服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器;
当备份服务器收不到VRRP消息时,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

1.2 Keepalived

  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)
    判断LVS负载均衡调度器、节点服务器的可用性,当master主机出现故障计时切换到backup节点保证业务正常,当master故障主机恢复后将其加入群集并且业务重新切换回master节点

keepalived实现原理剖析:

  • keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
  • VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案
  • 由多台路由器组成一个热备份组,通过共用的虚拟机IP地址对外提供服务
  • 每个热备份组同时只有一台路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由失败,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

集群要满足三个特点:

  • 负载均衡 (高并发)
  • 健康检查 (高性能)
  • 故障切换 (高可用)
1.3 Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是core、check和vrrp

  • core模块: 为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
  • vrrp模块: 是来实现VRRP协议的。
  • check模块: 负责健康检查,常见的方式有端口检查及URL检查。
二、VRRP 2.1 VRRP概述

Virtual Router Redundancy Protocal,即虚拟路由器冗余协议

  • 利用VRRP,一组路由器(同一个LAN中的接口)协同工作,但是有一个处于Master状态,并承担实际的数据流量转发任务;
  • 一个VRRP组内的多个路由器共用一个虚拟IP地址,该地址备作为局域网内所有主机的缺省网关地址;
  • VRRP决定哪个路由器是Master,其负责接收发送至用户网关的数据包并进行转发,以及响应PC对于其网关IP 的ARP请求;
  • Backup路由器侦听Master路由器 的状态,并在Master路由发生故障的时候,接替其工作
2.2 VRRP的工作过程

(1) VRRP组中的设备选举出Master. Master设备通过发送免费ARP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。
(2) Master设备周期性向备份组内所有Backup设备发送VRRP通告报文。
(3)如果Master设备出现故障,VRRP备份组中的Backup设备重新选举新的Master.。
(4) VRRP组状态切换时,Master设备由一台设备切换为另外一台设备,新的Master设备会立即发送携带虚拟路由器的虚拟MAC地址和虚拟IP地址信息的免费ARP报文,刷新与它连接的主机或设备中的MAC表项,从而把用户流量引到新的Master设备上来,整个过程对用户完全透明。
(5)原Master设备故障恢复时,若该设备为IP地址拥有者(则其优先级为255),将直接切换至Master状态。若该设备优先级小于255,将首先切换至Backup状态,且其优先级恢复为故障前配置的优先级。
(6)Backup设备的优先级高于Master设备时,由Backup设备的工作方式(抢占方式和非抢占方式)决定是否重新选举Master.

四、LVS+Keepalived 高可用群集的搭建

环境:

主DR192.168.61.11ipvsadm、keepalived(热备)
备DR192.168.61.22ipvsadm、keepalived
Web1 服务器192.168.61.33
Web2服务器192.168.61.44
vip192.168.61.12
4.1 配置负载调度器(主:192.168.61.11)
######## 配置Keepalived master服务器 ##########
  1. #关闭防火墙
     systemctl stop firewalld.service
     setenforce 0
  2. #安装服务
     yum -y install ipvsadm keepalived
  3. #修改配置文件keeplived.conf
     cd /etc/keepalived/
     cp keepalived.conf keepalived.conf.bak
     vim keepalived.conf
  
  ......
  global_defs {						#定义全局参数
  --10行--修改,邮件服务指向本地
  	smtp_server 127.0.0.1
  --12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
  	router_id LVS_01
  }
  
  vrrp_instance VI_1 {				#定义VRRP热备实例参数
  --20行--修改,指定热备状态,主为MASTER,备为BACKUP
      state MASTER
  --21行--修改,指定承载vip地址的物理接口
      interface ens33
  --22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
      virtual_router_id 10
  --23行--修改,指定优先级,数值越大优先级越高,主为100,备为99
      priority 100
      advert_int 1					#通告间隔秒数(心跳频率)
      authentication {				#定义认证信息,每个热备组保持一致
  		auth_type PASS				#认证类型
  --27行--修改,指定验证密码,主备服务器保持一致
          auth_pass 123123
      }
      virtual_ipaddress {				#指定群集vip地址
          192.168.61.12
      }
  }
  --36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
  virtual_server 192.168.61.12 80 {
      delay_loop 6					#健康检查的间隔时间(秒)
      lb_algo rr						#指定调度算法,轮询(rr)
  --39行--修改,指定群集工作模式,直接路由(DR)
      lb_kind DR
      persistence_timeout 50			#连接保持时间(秒)
      protocol TCP					#应用服务采用的是 TCP协议
  --43行--修改,指定第一个Web节点的地址、端口
      real_server 192.168.61.33 80 {
          weight 1					#节点的权重
  --45行--删除,添加以下健康检查方式		
          TCP_CHECK {
  			connect_port 80			#添加检查的目标端口
  			connect_timeout 3		#添加连接超时(秒)
  			nb_get_retry 3			#添加重试次数
  			delay_before_retry 3	#添加重试间隔
  		}
  	}
  
  ​```
  real_server 192.168.61.44 80 {		#添加第二个 Web节点的地址、端口
      weight 1
      TCP_CHECK {
  		connect_port 80
  		connect_timeout 3
  		nb_get_retry 3
  		delay_before_retry 3
  	}
  }
  ​```
  
  }
  ##删除后面多余的配置##
  
  4. #启动服务、查看虚拟网卡vip
     systemctl start keepalived
     ip addr show dev ens33	
  5. #调整proce响应参数,关闭Linux内核的重定向参数响应
     vim /etc/sysctl.conf
     net.ipv4.ip_forward = 1
     net.ipv4.conf.all.send_redirects = 0
     net.ipv4.conf.default.send_redirects = 0
     net.ipv4.conf.ens33.send_redirects = 0
  6. #刷新一下
     sysctl -p
  
############### 配置ipvsadm ###############
  
  7. #配置负载分配策略,并启动服务
     ipvsadm-save >/etc/sysconfig/ipvsadm
     systemctl start ipvsadm.service
  8. #清空ipvsadm,并做策略
     ipvsadm -C
     ipvsadm -A -t 192.168.61.12:80 -s rr
     ipvsadm -a -t 192.168.61.12:80 -r 192.168.61.33:80 -g
     ipvsadm -a -t 192.168.61.12:80 -r 192.168.61.44:80 -g
  9. #保存设置
     ipvsadm
     ipvsadm -ln
     ipvsadm-save >/etc/sysconfig/ipvsadm
     

关闭防火墙

安装服务

修改配置文件keeplived.conf





启动服务、查看虚拟网卡vip
这个时候可能启动了服务看不到vip地址,因为80端口被占用了,使用“lsof -i:80”命令查看后杀掉相应的进程,重新启动就可以看到啦

调整proce响应参数,关闭Linux内核的重定向参数响应

刷新一下

配置负载分配策略,并启动服务

清空ipvsadm,并做策略

保存设置

4.2 配置负载调度器(备:192.168.61.22)
  ############# 配置Keepalived master服务器 ###############
  
  1. #关闭防火墙
     systemctl stop firewalld.service
     setenforce 0
  2. #安装服务
     yum -y install ipvsadm keepalived
  3. #修改配置文件keeplived.conf
     cd /etc/keepalived/
     cp keepalived.conf keepalived.conf.bak
     vim keepalived.conf
  
  ......
  global_defs {						#定义全局参数
  --10行--修改,邮件服务指向本地
  	smtp_server 127.0.0.1
  --12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
  	router_id LVS_01
  }
  
  vrrp_instance VI_1 {				#定义VRRP热备实例参数
  --20行--修改,指定热备状态,主为MASTER,备为BACKUP
      state BACKUP
  --21行--修改,指定承载vip地址的物理接口
      interface ens33
  --22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
      virtual_router_id 10
  --23行--修改,指定优先级,数值越大优先级越高,主为100,备为99
      priority 99
      advert_int 1					#通告间隔秒数(心跳频率)
      authentication {				#定义认证信息,每个热备组保持一致
  		auth_type PASS				#认证类型
  --27行--修改,指定验证密码,主备服务器保持一致
          auth_pass 123123
      }
      virtual_ipaddress {				#指定群集vip地址
          192.168.61.12
      }
  }
  --36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
  virtual_server 192.168.61.12 80 {
      delay_loop 6					#健康检查的间隔时间(秒)
      lb_algo rr						#指定调度算法,轮询(rr)
  --39行--修改,指定群集工作模式,直接路由(DR)
      lb_kind DR
      persistence_timeout 50			#连接保持时间(秒)
      protocol TCP					#应用服务采用的是 TCP协议
  --43行--修改,指定第一个Web节点的地址、端口
      real_server 192.168.61.33 80 {
          weight 1					#节点的权重
  --45行--删除,添加以下健康检查方式		
          TCP_CHECK {
  			connect_port 80			#添加检查的目标端口
  			connect_timeout 3		#添加连接超时(秒)
  			nb_get_retry 3			#添加重试次数
  			delay_before_retry 3	#添加重试间隔
  		}
  	}
  
  real_server 192.168.61.44 80 {		#添加第二个 Web节点的地址、端口
      weight 1
      TCP_CHECK {
  		connect_port 80
  		connect_timeout 3
  		nb_get_retry 3
  		delay_before_retry 3
  	}
  }

  }
  ##删除后面多余的配置##
  
  4. #启动服务、查看虚拟网卡vip
     systemctl start keepalived
     ip addr show dev ens33	
  5. #调整proce响应参数,关闭Linux内核的重定向参数响应
     vim /etc/sysctl.conf
     net.ipv4.ip_forward = 1
     net.ipv4.conf.all.send_redirects = 0
     net.ipv4.conf.default.send_redirects = 0
     net.ipv4.conf.ens33.send_redirects = 0
  6. #刷新一下
     sysctl -p
  
  ########### 配置ipvsadm ###########
  
  7. #配置负载分配策略,并启动服务
     ipvsadm-save >/etc/sysconfig/ipvsadm
     systemctl start ipvsadm.service
  8. #清空ipvsadm,并做策略
     ipvsadm -C
     ipvsadm -A -t 192.168.61.12:80 -s rr
     ipvsadm -a -t 192.168.61.12:80 -r 192.168.61.33:80 -g
     ipvsadm -a -t 192.168.61.12:80 -r 192.168.61.44:80 -g
  9. #保存设置
     ipvsadm
     ipvsadm -ln
     ipvsadm-save >/etc/sysconfig/ipvsadm

关闭防火墙

安装服务

修改配置文件keeplived.conf



启动服务、查看虚拟网卡vip


调整proce响应参数,关闭Linux内核的重定向参数响应

刷新一下

配置负载分配策略,并启动服务

清空ipvsadm,并做策略

保存设置

4.3 配置节点服务器 web1(192.168.61.33)
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
 
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
 
3. #配置站点文件
vim /var/www/html/index.html
this is kiro web!
 
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.61.12
NETMASK=255.255.255.255
 
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
 
6. #设置路由
route add -host 192.168.61.12 dev lo:0
route -n
 
7. #调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
 
8. #刷新proc参数
sysctl -p

关闭防火墙

安装并开启httpd服务


配置站点文件

配置虚拟vip

重启网络服务,开启虚拟网卡

设置路由

调整 proc 响应参数

刷新proc参数

4.4 配置节点服务器 web2(192.168.61.44)
1. #关闭防火墙
systemctl stop firewalld
setenforce 0
 
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
 
3. #配置站点文件
vim /var/www/html/index.html
this is dhc web!
 
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.61.12
NETMASK=255.255.255.255
 
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
 
6. #设置路由
route add -host 192.168.61.12 dev lo:0
route -n
 
7. #调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
 
8. #刷新proc参数
sysctl -p

关闭防火墙

安装并开启httpd服务

配置站点文件

配置虚拟vip

重启网络服务,开启虚拟网卡

设置路由

调整 proc 响应参数

刷新proc参数

测试 当前使用的为主DR服务器

断开主DR服务器的Keepalived测试


在客户端测试


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/961823.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号