阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LVS DR模式 负载均衡服务搭建

375次阅读
没有评论

共计 3666 个字符,预计需要花费 10 分钟才能阅读完成。

LVS 负载均衡

最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有 nginx(针对 HTTP 服务的负载均衡),LVS(针对 IP 层,MAC 层的负载均衡)。LVS 模式工作在网络层,且由内核实现负载转发,效率要比 nginx 高。

LVS 负载均衡包含三种模式:

1. NAT 模式(类似路由器,实现外网内网地址映射,负载均衡服务器修改请求包的源以及目的 MAC 地址和 IP 地址,发送给实际服务器;负载均衡服务器,修改响应包的源以及目的 MAC 地址和 IP 地址,发送给客户端。请求和响应报文都需要经过负载均衡服务器)

2. TUN 模式(IP 隧道,负载均衡服务器将外网传来的数据包封装在 IP 隧道中,传给实际服务器。实际服务器的响应直接发给客户端,而不需要经过负载均衡服务器。)

3. DR 模式(负载均衡服务器和后端的实际服务器拥有相同的虚拟 IP 地址,负载均衡服务器收到响应包后,修改目的 MAC 地址发给实际服务器,实际服务器将响应包直接发给客户端,不需要经过负载均衡服务器)

搭建 LVS DR 模式负载均衡服务

连接示意图如下:

LVS DR 模式 负载均衡服务搭建

其中,负载均衡服务器的 IP 地址为 10.10.10.30/24 和 10.10.10.22/32(该 IP 地址是用户访问的 IP 地址), Real Server 1 的 IP 地址为 10.10.10.31/24, Real Server 2 的 IP 地址为 10.10.10.32/24,三者连接在同一个局域网中,且 RS1 和 RS2 的虚拟 IP 地址(可以在 lo 或者 lo:0 上设置该 IP 地址,即本地环回,这样该虚拟 IP 只对该机器本身可见,不会暴露在外部造成 IP 冲突)都设为负载均衡服务器的 IP 地址 dev-1. 

这样外部访问 10.10.10.22 时,会访问到负载均衡服务器,而负载均衡服务器选择某个实际服务器,比如 RS1,然后将包的目的 MAC 地址修改为 RS1 的 MAC 地址,在将包送到局域网上。此时对于请求数据包来说,目的 MAC 地址为 RS1 的 MAC 地址,因此 RS1 会收到,RS1 发现包的目的 MAC 为自身,且目的 IP 地址为 10.10.10.22, 也是自身的一个 IP,于是就认为数据包是发到自己的,就开始进行处理。

一、安装 http 服务
1. 在 RS1 和 RS2 上分别安装 httpd 服务
2. 修改 /etc/httpd/conf/httpd.conf 文件,进行相应的配置。
3. 启动 httpd 服务,并设置防火墙开放 80 端口

二、在负载均衡服务器上安装并配置 ipvsadm
1. yum -y install ipvsadm
2. 设置实际 ip 和虚拟 IP

ifconfig eth0 10.10.10.30/24
ifconfig eth0:0 10.10.10.22 netmask 255.255.255.255 #虚拟 IP,暴露给外部

3. 设置负载转发

方式一,通过 ipvsadm

systemctl start ipvsadm
ipvsadm -C
ipvsadm –set 30 5 60
#vip on load balancer
ipvsadm -A -t 10.10.10.22:80 -s wrr -p 20 #接受转发协议
ipvsadm -a -t 10.10.10.22:80 -r 10.10.10.31:80 -g -w 1 #增加转发目的地
ipvsadm -a -t 10.10.10.22:80 -r 10.10.10.32:80 -g -w 1 #增加转发目的地
ipvsadm -L -n

方式二,通过 keepalived

vim /etc/keepalived/keepalived.conf 修改配置文件如下
global_defs {
  notification_email {
        skc361@163.com 
  } 
  notification_email_from sns-lvs@gmail.com 
  smtp_server 192.168.80.1 
  smtp_connection_timeout 30
  router_id LVS_DEVEL  # 设置 lvs 的 id,在一个网络内应该是唯一的

vrrp_instance VI_1 {
    state MASTER  #指定 Keepalived 的角色,MASTER 为主,BACKUP 为备         
    interface eth0  #指定 Keepalived 的角色,MASTER 为主,BACKUP 为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主 DR 必须大于备用 DR   
    advert_int 1  #检查间隔,默认为 1s
    authentication {
        auth_type PASS 
        auth_pass 1111 
    } 
    virtual_ipaddress {
        10.10.10.22  #定义虚拟 IP(VIP) 为 10.10.10.22,可多设,每行一个
    } 

# 定义对外提供服务的 LVS 的 VIP 以及 port
virtual_server 10.10.10.22 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒                   
    lb_algo wrr # 设置负载调度的算法为 wlc                 
    lb_kind DR # 设置 LVS 实现负载的机制,有 NAT、TUN、DR 三个模式 
    nat_mask 255.255.255.0               
    persistence_timeout 0         
    protocol TCP                 
    real_server 10.10.10.31 80 {# 指定 real server1 的 IP 地址
        weight 3  # 配置节点权值,数字越大权重越高             
        TCP_CHECK {
        connect_timeout 10       
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        } 
    } 
    real_server 10.10.10.32 80 {# 指定 real server2 的 IP 地址
        weight 3  # 配置节点权值,数字越大权重越高 
        TCP_CHECK {
        connect_timeout 10 
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        } 
    } 
}
 
启动 keepalived 服务
systemctl start keepalived

三、设置实际服务器的网卡

ifconfig lo:0 10.10.10.22 netmask 255.255.255.255 #即设置虚拟 IP 地址,该 IP 地址绑定在环回网卡上,不会对外暴露

四、设置实际服务器的内核参数

[root@dev-2 lvs]#vim /etc/sysctl.conf
[root@dev-2 lvs]# sysctl -p
net.ipv4.ip_forward = 1 #打开路由转发
net.ipv4.conf.all.arp_ignore = 1 #只回答目的 IP 为本网口 IP 地址的 arp 包的请求
net.ipv4.conf.all.arp_announce = 2 #对查询目标使用最适当的本机地址
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

 

上面的 arp_ignore 和 arp_announce 参见 lvs arp 设置

五、使用客户端进行访问
    此时使用客户端访问 http://10.10.10.22,请求会被转发到 RS1 或者 RS2 上。

问题排查
    在搭建的时候,可能出现 http://10.10.10.22 无法访问,即 HTTP 请求没有被转发的情况。这种情况可以从以下情况中进行排查:
1. 负载均衡服务器 防火墙是否关闭,或者是否允许 80 端口的 tcp 连接
2. RS1 和 RS2 的 http 配置中是否设置 Listen 80(监听本机上的所有地址,如果只监听机器的网卡地址,而虚拟 ip 包就会被忽略)
3. 如果在负载均衡服务器上没有设置 VIP,只有一个 IP 地址 10.10.10.22/24,这样也可以配置出来。但是此时,当负载均衡服务器要向 10.10.10.31 和 10.10.10.32 转发时,它需要知道它们的 MAC 地址,于是会发送 ARP 请求报文,当 RS1 或 RS2 收到 ARP,它进行回复的时候发现请求报文的源 IP 为 10.10.10.22 于是直接发到本机了,就不会回复给负载均衡服务器。于是负载均衡服务器就没法动态获知 RS1 和 RS2 的 MAC 地址。
    此时,只能手动在负载均衡服务器上设置 arp。arp -s…
而且这样做也会导致从负载均衡服务器上不能直接访问 RS1/RS2,同样 RS1/RS2 也不能直接访问负载均衡服务器。所以,还是需要在负载均衡服务器上配置一个 eth0 和一个虚拟 IP eth0:0.

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136644.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3666字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7825390
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛NAS-7:手把手教你免费内网穿透-Cloudflare tunnel

星哥带你玩飞牛 NAS-7:手把手教你免费内网穿透 -Cloudflare tunnel 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...