前言

ipvsadm是Linux虚拟服务器的管理命令,是用于设置、维护和检查Linux内核中虚拟服务器列表的命令。Linux虚拟服务器可用于基于两个或更多个节点的集群构建可扩展的网络服务。群集的活动节点将服务请求重定向到真正执行服务的服务器主机上。支持TCP和UDP协议,支持三咱数据包转发方法(NAT、隧道、直接路径)以及八种负载均衡算法(轮询、加权轮询、最少连接、加权最少连接、基于位置的最小连接,基于位置的最小连接与复制,目标散列和源散列)。

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

LVS集群搭建

1 环境准备

主机名

主机IP

备注

lb03

172.16.7.15

01.Cent0S7.4系统

02.防止干扰暂时防火墙firewall和Selinux关闭

03.web03和web04只安装web服务,并满足

curl http://10.0.0.17/页尾得到结果为web03

curl http://10.0.0.18/页尾得到结果为web04

lb04

172.16.7.16

 vip 172.16.7.13

web03

172.16.7.17

web04

172.16.7.18

2 安装ipvsadm管理工具

lsmod |grep ip_vs #查看系统的LVS模块->默认没有加载模块,需安装管理工具才会激活
yum -y install ipvsadm 

查看当前LVS状态,顺便激活LVS内核模块

 [root@lb03 ~]# ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn[root@lb03 ~]# lsmod|grep ip_vsip_vs                 141092  0nf_conntrack          133387  1 ip_vslibcrc32c 12644 3 xfs,ip_vs,nf_conntrack

注意ipvsadm -ln作用:健康检查,即当某台web服务器出现问题时LVS将自动踢出;等恢复后再添加进来

2.1 在eth0网卡绑定VIP地址(高可用)

ip addr add 172.16.7.13/24 dev eth0 #lb服务的IP地址可扩展性较差,故使用VIP地址(删除del;显示show) 

2.2 清除当前所有LVS规则

 ipvsadm -C 

2.3 设置tcp、tcpfin、udp链接超时时间(s)

ipvsadm --set 30 5 60 #控制浏览器与lb01的超时时间

2.4 添加虚拟服务,调度算法见man ipvsadm

ipvsadm -A -t 172.16.7.13:80 -s wrr -p 20  #LVS默认无80端口,需另外添加新的虚拟IP记录->控制lb01与web01、web02的超时时间

2.5 将虚拟服务vip地址关联到真实服务上

 ipvsadm -a -t 172.16.7.13:80 -r 172.16.7.17:80 -g -w 1 ipvsadm -a -t 172.16.7.13:80 -r 172.16.7.18:80 -g -w 1

2.6 查看配置结果

 [root@lb03 ~]# ipvsadm -ln  IP Virtual Server version 1.2.1 (size=4096) #LVS版本号Prot LocalAddress:Port Scheduler Flags #协议(TCP)本地IP:端口 调度算法 标志(持续时间20s)-> RemoteAddress:Port Forward Weight ActiveConn InActConn#后端节点IP:端口 工作模式 权重 已建立连接 正在连接TCP 172.16.7.3:80 wrr persistent 20-> 172.16.7.17:80 Route 1 0 0-> 172.16.7.18:80 Route 1 0 0

3 web服务器配置

3.1 .在两台web上的lo网卡绑定VIP地址

ip addr add 172.16.7.13/32 dev lo 

3.2 .修改内核参数抑制ARP响应

cat >>/etc/sysctl.conf<<EOF #其目的是为了让rs顺利发送mac地址给客户端  net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2EOFsysctl -p

检查绑定情况

 [root@lb03 ~]# ip a s eth0   eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:50:56:3b:cb:36 brd ff:ff:ff:ff:ff:ff    inet 10.0.0.13/24 scope global secondary eth0    valid_lft forever preferred_lft forever   [root@web03 ~]# ip a s lo   lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 172.16.7.13/32 scope global lo      valid_lft forever preferred_lft forever

web浏览器测试
http://172.16.7.13/ 
说明:当lb服务器断开连接后VIP会自动消失,重新连接后需再次添加VIP

3.3 arp解析查看

 [root@lb04 ~]# arp -n Address HWtype HWaddress Flags Mask Iface172.16.7.254               ether   00:50:56:e9:9f:2c C eth0172.16.7.18                ether   00:0c:29:ea:ca:55 C eth0172.16.7.13                ether   00:0c:29:de:7c:97 C eth0172.16.1.15              ether   00:0c:29:de:7c:a1 C eth1172.16.7.17                ether   00:0c:29:4a:ac:4a C eth0

4  LVS集群的工作模式

选DR直接路由模式,工作原理如下图所示
①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。 
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。 
③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端

得知以上工作原理后,我们来配合keepalived服务,实现vip地址在两台lb中偏移 。

Keepalive+LVS实现

1 安装配置keepalive实例

开始前先清理lb03服务器上lvs配置,网卡配置

ipvsadm -C
ip addr del 172.16.7.13/24 dev eth0

1.1 在lb03和lb04上安装keepalive

yum install -y keepalived 

1.2 编辑keepalived.conf配置文件

[root@lb03 ~]# vi /etc/keepalived/keepalived.conf global_defs {router_id LVS_01}vrrp_instance VI_1 {state MASTER interface eth0virtual_router_id 51priority 150 #优先级,官方建议2个服务器相差值是50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.16.7.13/24}}virtual_server 172.16.7.13 80 {delay_loop 6lb_algo wrr #采用权重轮训方式均衡负载lb_kind DR #直接路由模式nat_mask 255.255.255.0persistence_timeout 50protocol TCPreal_server 172.16.7.17 80 {weight 1 #权重TCP_CHECK {connect_timeout 8nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 172.16.7.18 80 {weight 1 #权重TCP_CHECK {connect_timeout 8nb_get_retry 3delay_before_retry 3connect_port 80}}}

复制一份到lb04服务器上,并修改

state MASTER---->state SLAVE
priority 150 ----> priority 100

1.3 开启keepalived服务

启动lb03、lb04服务器keepalived服务

systemctl start keepalived.service

两台服务器分别, ip a #查看VIP,此时应在lb03上。master为主模拟服务器lb03故障

systemctl stop keepalived.service

两台服务器分别, ip a #查看VIP,此时应漂移到lb04上

1.4 web03/web04同时操作以下步骤

需要配置 ARP 抑制,VIP绑定LO网卡

 ip addr add 172.16.7.13/32 dev locat >>/etc/sysctl.conf<<EOFnet.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_ignore = 1net.ipv4.conf.lo.arp_announce = 2EOF sysctl -p

注意:因为虚拟的ip重启之后就会失效,故须加入开机启动项rc.local文件并赋予其可执行权限

1.5 keepalive健康检查功能

模拟web03出现问题
1.5.1 查看lb03 lvs状态


1.5.2 关闭web03


1.5.3 查看lb03状态
 如图发现,web03被剔除


1.5.4 开启web03


1.5.5 查看lvs状态
web03恢复,自动添加到LVS中


总结:

搭建服务时需要注意如下几点。

  • real-server(web03、web04)需要设置lo接口的VIP不能在公网上出现,并且需要配置 ARP 抑制。
  • LVS有多种网络模式,采用LVS-DR可以减少负载均衡的负担,让节点直接应答客户端请求,DR 模式是通过 MAC 地址改写机制实现转发,因此所有 RS 节点和调度器 LB 只能在一个局域网里面。
  • 由于采用的是直接路由模式,集群节点RIP不能将网关指向DIP(lvs的直连ip),需要把路由指向前端路由地址。

采用ipvsadm管理工具,及Keepalived软件检测服务器的状态,搭建负载均衡的高可用集群相关推荐

  1. 采用 redis主从 + 哨兵(sentinel) + vip漂移搭建一套redis高可用集群

    一.单个实例 当系统中只有一台redis运行时,一旦该redis挂了,会导致整个系统无法运行. 单个实例 二.备份 由于单台redis出现单点故障,就会导致整个系统不可用,所以想到的办法自然就是备份( ...

  2. 18.1 集群介绍 18.2 keepalived介绍 18.3/18.4/18.5 用keepalived配置高可用集群

    2019独角兽企业重金招聘Python工程师标准>>> 第十八章 Linux集群 18.1 集群介绍 Linux集群根据功能划分为两大类:高可用和负载均衡. 高可用集群 高可用集群通 ...

  3. Nginx+Keepalived+LVS高可用集群----相关知识回顾

    1.原理回顾 1.1.集群知识回顾 集群特点: 1)高性能performance. 一些需要很强的运算处理能力比如天气预报,核试验等.这需要上千台计算器协同来完成这个工作的,共同分担计算任务. 2)价 ...

  4. keepalived高可用集群。

    keepalived故障切换转移原理 1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议, 2故障转移. keepalived三大功能 1实现物理 ...

  5. Haproxy+keepalived高可用集群实战

    前言 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡F5,Haproxy提供高可用性.负载均衡以及基于TCP ...

  6. keepalived高可用集群实战项目

    keepalived高可用集群实战项目 需要准备17台虚拟机 目录 客户端 路由器 powerDNS 防火墙 时间同步服务器 keepalived + LVS集群实现web服务高可用 配置web_A与 ...

  7. Web服务器群集——LVS-DR+Keepalived高可用集群

    LVS-DR+Keepalived高可用集群 什么是高可用集群? 高可用集群的衡量标准 自动切换/故障转移(FailOver) 自动侦测 脑裂 常见解决方案 Keepalived Keepalived ...

  8. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  9. keepalived介绍和keepalived实现nginx负载均衡机高可用

    1. keepalived简介 1.1 keepalived是什么? Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实 ...

最新文章

  1. 第十六届全国大学智能汽车竞赛竞速比赛规则
  2. 算法之道:形而之上谓之道
  3. 系统级性能分析工具perf的介绍与使用
  4. 003 Android之线性布局与基础控件
  5. python怎么筛选excel数据_PythonEXCEL读取-保存-矩阵合并-条件筛选
  6. java怎么设置不同事件_activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便...
  7. NameNode之文件系统目录树
  8. android弹出键盘高度,Android 解决全面屏 软键盘弹出会有高度约50dp的白条。
  9. 【例】系统顺序图、操作契约、领域模型图
  10. wampserver的下载与安装配置
  11. Qt 之 QQ系统表情(一)
  12. 松柏先生:参透五百年不遇的《求贤令》,何愁品牌不立!
  13. 开源文档协作套件CryptPad
  14. python爬取王者_Python爬取王者荣耀英雄图片及装备!你玩吗?
  15. 815. 打印字符串
  16. EMQ X 插件持久化系列 (五)MySQL MQTT 数据存储
  17. Sklearn机器学习——ROC曲线、ROC曲线的绘制和AUC面积、运用ROC曲线找到最佳阈值
  18. illustrator下载_在Illustrator中为图章形状进行强大的复制
  19. 如何设置Exchange-Ecp的管理员
  20. Qcom Camera 调试技巧

热门文章

  1. KB5003254更新
  2. Linux关闭防火墙命令(永久性关闭)
  3. UEStudio常用的快捷键(转)
  4. 论文阅读 AutoSF: Searching Scoring Functions for Knowledge Graph Embedding
  5. 非规范商品项是什么?商标注册规范项和非规范项区别?
  6. 随缘找全职创业合伙人
  7. 阿里云服务器(CentOS 7.4)Jenkins(LTS 2.150.3)部署及简易配置
  8. 晒晒我这两年的私活单,业余时间月入6k,有份副业也太香啦
  9. Oracle薪酬核算系统,薪酬核算系统具有哪些优点?
  10. 亚马逊云科技re:Invent:这些成功的数据驱动新企业背后的秘诀是什么?