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

Linux下LVS搭建负载均衡集群

393次阅读
没有评论

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

常用的负载均衡开源软件有:nginx、lvs、keepalived
商业的硬件负载设备:F5、Netscale
1、LB、LVS 介绍
LB 集群是 load balance 集群的简写,翻译成中文就是负载均衡集群;
LVS 是一个实现负载均衡集群的开源软件项目;
LVS 架构从逻辑上可分为调度层(Director)、server 集群层(Real server) 和共享存储层;

LVS 可分为三种工作模式:
NAT(调度器将请求的目标 ip 即 vip 地址改为 Real server 的 ip, 返回的数据包也经过调度器,调度器再把源地址修改为 vip)
TUN(调度器将请求来的数据包封装加密通过 ip 隧道转发到后端的 real server 上,而 real server 会直接把数据返回给客户端,而不再经过调度器)
DR(调度器将请求来的数据包的目标 mac 地址改为 real server 的 mac 地址,返回的时候也不经过调度器,直接返回给客户端)
spacer.gif

LVS 的调度算法:轮叫调度(Round Robin)(简称 rr) , 加权轮叫(Weighted Round Robin)(简称 wrr), 最少链接(least connection)(LC), 加权最少链接(Weighted Least Connections)(WLC) 等等;

2、LVS/NAT 配置
准备工作:
需要准备三台机器干净的 CentOS6.6 系统,Director 机器需要安装两块网卡;
三台服务器一台作为 director, 两台作为 real server

Director 有一个外网 ip:192.168.22.11 和一个内网 ip:192.168.11.11
两台 Real Server 只有内网 ip 为:192.168.11.100  和 192.168.11.101,并且需要设置内网网关为 director 的内网 ip:192.168.11.11
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.11.100
GATEWAY=192.168.11.11 更改完网关后需要重启网卡,先 down 后 up,在一条命令实现;如果 ifdown 之后,ssh 会中断;

# ifdown eth1 && ifup eth1
Director 上安装 ipvsadm:#yum install -y  ipvsadm

两台 real server 安装 nginx,需要先安装 epel 扩展源。
yum install -y epel-release
yum install -y nginx
安装完成后启动 nginx:/etc/init.d/nginx start 
更改三台服务器的 hostname 为 dr、rs1、rs2

Direcotr 上 vi /usr/local/sbin/lvs_nat.sh // 增加如下内容:
#! /bin/bash

echo 1 > /proc/sys/net/ipv4/ip_forward

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/send_redirects

iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.11.0/24  -j MASQUERADE

IPVSADM=’/sbin/ipvsadm’
$IPVSADM -C
$IPVSADM -A -t 192.168.22.11:80 -s wlc
$IPVSADM -a -t 192.168.22.11:80 -r 192.168.11.100:80 -m -w 2
$IPVSADM -a -t 192.168.22.11:80 -r 192.168.11.101:80 -m -w 1 直接运行这个脚本就可以完成 lvs/nat 的配置了:

/bin/bash /usr/local/sbin/lvs_nat.sh

dr 查看 nat 的 iptables
[root@dr ~]# iptables -t nat -nvL
Chain POSTROUTING (policy ACCEPT 1 packets, 124 bytes)
 pkts bytes target    prot opt in    out    source              destination       
    0    0 MASQUERADE  all  —  *      *      192.168.11.0/24      0.0.0.0/0       
ipvsadm -ln  查看 ipvsadm 的规则

浏览器打开 192.168.11.100、192.168.11.101 显示 nginx 的欢迎页面

Linux 下 LVS 搭建负载均衡集群

在 rs1、rs2 上面修改 html 文件,用来区分;
[root@rs1 ~]# cat /usr/share/nginx/html/index.html
 rs1rs1rs1
[root@rs2 ~]# cat /usr/share/nginx/html/index.html
 rs2rs2rs2 通过浏览器测试两台机器上的内容
浏览器打开 192.168.22.11,会显示 rs1 或 rs2 的 html 内容;来回切换说明试验 OK;

更改轮询规则为 wlc,权重为 2,进行测试

Linux 下 LVS 搭建负载均衡集群

用另一台 linux 机器 curl 测试,出现 2 次 1,1 次 2,来回切换说明 OK;
[root@localhost ~]# curl 192.168.22.11
rs1rs1rs1
[root@localhost ~]# curl 192.168.22.11
rs1rs1rs1
[root@localhost ~]# curl 192.168.22.11
rs2rs2rs2 在 dr 机器上 ipvsadm -ln 可以查看,权重比,保持的链接比大概一样;
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
TCP  192.168.22.11:80 wlc
  -> 192.168.11.100:80            Masq  2      0          26       
  -> 192.168.11.101:80            Masq  1      0          13

3、LVS/DR 配置
DR 模式中,director 只负责分发,只有进入的流量,吞吐量会非常大;real server 直接给用户提供数据,安全性会降低;
DR 中的机器都需要配置公网 ip,虚拟的 ip 每台机器都需要配置,用户请求的时候请求虚拟 ip,返回的时候为轮询 rs 提供;
三台机器,每台机器只需要配置 1 个 ip,vip 是用脚本执行后会出现的,不用手动设置;
director(eth1:192.168.11.11    vip eth1:0 192.168.11.110)
real server1(eth1:192.168.11.100    vip lo:0: 192.168.11.110)
real server1(eth1:192.168.11.101    vip lo:0: 192.168.11.110)

Director 上 vim /usr/local/sbin/lvs_dr.sh // 增加下面的内容
#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/sbin/ipvsadm
vip=192.168.11.110
rs1=192.168.11.100
rs2=192.168.11.101
ifconfig eth1:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev eth1:0
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

两台 rs 上:vim /usr/local/sbin/lvs_dr_rs.sh
#! /bin/bash
vip=192.168.11.110
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce

然后 director 上执行: bash /usr/local/sbin/lvs_dr.sh
两台 rs 上执行: bash /usr/local/sbin/lvs_dr_rs.sh

执行完成后 ifconfig 可以显示虚拟 ip 地址;dr 显示 eth1:0,rs1、rs2 显示 lo:0;
eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:70:4E:58 
          inet addr:192.168.11.110  Bcast:192.168.11.110  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2080
         
lo:0      Link encap:Local Loopback 
          inet addr:192.168.11.110  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1ipvsadm -ln 列出规则
[root@dr ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
TCP  192.168.11.110:80 rr
  -> 192.168.11.100:80      Route    1          0        3       
  -> 192.168.11.101:80      Route    1          0        3 单独启动一台 linux 机器进行测试,浏览器测试有缓存不明显;
curl 192.168.11.110    进行测试,各出现 1 次说明 rr 轮询规则 OK;
[root@localhost ~]# curl 192.168.11.110
rs1rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs2rs2rs2
[root@localhost ~]# curl 192.168.11.110
rs1rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs2rs2rs2 更改轮询算法为 wrr,权重为 2;然后执行文件,报错提示文件已存在;原因是 /usr/local/sbin/lvs_dr.sh 脚本文件里面已经 up 了 eth1:0,所以需要在脚本里面增加:ifconfig eth1:0 down,之后就不会报错;
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 2
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1[root@dr ~]# bash /usr/local/sbin/lvs_dr.sh
SIOCADDRT: 文件已存在其中一台 rs 如果挂了之后,还是会轮询访问,所以会出现一会能打开一会打不开;
模拟,rs2 停止 nginx:/etc/init.d/nginx stop
使用 curl 测试,请求还是会发送到 rs2 上面,但是已经提示不能连接到主机;
[root@localhost ~]# curl 192.168.11.110
rs1rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs1rs1rs1
[root@localhost ~]# curl 192.168.11.110
curl: (7) couldn’t connect to hostlvs 本身不会剔除已经死掉的 real server,所以需要结合 keeplived;

LVS/DR + Keepalived 搭建负载均衡集群 http://www.linuxidc.com/Linux/2015-06/118647.htm

LVS+Keepalived 实现四层负载及高可用  http://www.linuxidc.com/Linux/2015-02/112695.htm

LVS+Keepalived 高可用负载均衡集群架构实验  http://www.linuxidc.com/Linux/2015-01/112560.htm

Heartbeat+LVS 构建高可用负载均衡集群  http://www.linuxidc.com/Linux/2014-09/106964.htm

搭建 LVS 负载均衡测试环境  http://www.linuxidc.com/Linux/2014-09/106636.htm

一个针对 LVS 的压力测试报告 http://www.linuxidc.com/Linux/2015-03/114422.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-06/118646.htm

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7959478
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

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

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

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

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

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

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

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

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新SSL证书系统、申请godaddy的APIKEY

升级自动部署更新 SSL 证书系统、申请 godaddy 的 APIKEY 公司之前花钱购买的 ssl 证书快...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...

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

一言一句话
-「
手气不错
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

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

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...