Skip to main content

2.LVS DR模式搭建

环境

网络架构:

  • 三台机器,一台用作负载均衡器(LB),两台用作后端服务器(RS1和RS2)。
    • dir:192.168.123.140
    • rs1 :192.168.123.130
    • rs2 : 192.168.123.131
    • vip : 192.168.123.139
  • 所有服务器都在同一个局域网内。
  • 防火墙关闭
  • selinux设置为disabled
  • NetworkManager 关闭

软件要求:

  • 在LB服务器上安装LVS软件包,以及所需的网络配置工具(如ipvsadm)。
    • sudo dnf install ipvsadm		#rockylinux中安装lvs
  • 在RS1和RS2服务器上配置你的应用服务(例如Web服务器、应用服务器等)。

思路步骤

步骤大概分为三步,总体简单

负载均衡器(LB)配置

  1. 设置IP地址

    • 将LB服务器的网卡配置为负载均衡器IP(VIP)。
    • 确保VIP地址与后端服务器的子网在同一个网络段。
  2. 启用IP转发

    • 修改 /etc/sysctl.conf 文件以启用IP转发:net.ipv4.ip_forward = 1
    • 使用 sysctl -p 命令应用更改。
  3. 配置LVS

    • 使用ipvsadm命令设置虚拟服务器和Real Server:ipvsadm -A -t <VIP>:<port> -s rr
    • 添加Real Server:ipvsadm -a -t <VIP>:<port> -r <RS1> -g
    • 重复上述步骤以添加更多的Real Server。

后端服务器(RS1和RS2)配置

  1. 禁用ARP响应

    • 使用 arp_ignorearp_announce 控制内核如何回应ARP请求,以防止回路。
    • 编辑 /etc/sysctl.conf 并设置 net.ipv4.conf.all.arp_ignore=1net.ipv4.conf.eth0.arp_announce=2
    • 使用 sysctl -p 命令应用更改。
  2. 配置Real Server

    • 配置RS 1和RS2以提供你的服务(例如,安装和配置Web服务器)。
  3. 防火墙设置

    • 确保防火墙允许来自LB的流量,以及对LB发送的回复。

测试

  1. 测试负载均衡

    • 使用客户端工具(例如curl或浏览器)通过VIP访问你的服务。
    • 观察流量是否分布在RS1和RS2之间。
  2. 测试高可用性

    • 关闭其中一个后端服务器,然后再次测试服务。
    • 应该看到流量仍然可以成功转发到存活的服务器上。

手动配置

负载均衡器(LB)配置

  1. 设置VIP地址

    sudo ifconfig ens3:0 192.168.123.139 netmask 255.255.255.0 up
  2. 启用IP转发

    sudo sysctl -w net.ipv4.ip_forward=1	#配置转发

    想要永久生效的话,需要更改:/etc/sysctl.conf

  3. 配置LVS

    sudo ipvsadm -A -t 192.168.123.139:80 -s rr
    sudo ipvsadm -a -t 192.168.123.139:80 -r 192.168.123.130:80 -g
    sudo ipvsadm -a -t 192.168.123.139:80 -r 192.168.123.130:80 -g

后端服务器(RS1和RS2)配置

  1. 禁用ARP响应

    echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 | sudo tee /proc/sys/net/ipv4/conf/eth0/arp_announce

测试

测试负载均衡

  • 使用curl或浏览器通过VIP访问你的服务:
    curl http://192.168.123.139:80

测试高可用性

  • 关闭其中一个后端服务器,然后再次测试服务。

脚本搭建

dir上编辑脚本文件/usr/local/sbin/lvs_dr.sh,文件内容如下:

负载均衡器(LB)配置

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward #打开端口转发

#设置变量
ipv=/usr/sbin/ipvsadm
vip=192.168.123.132
rs1=192.168.123.130
rs2=192.168.123.131

#注意这里的网卡名字
#绑定vip
ifdown ens33
ifup ens33
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2

$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

执行脚本

sh /usr/local/sbin/lvs_dr.sh
#成功断开设备 'ens33'。 连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)

配置RS

添加脚本文件**/usr/local/sbin/lvs_rs.sh**,内容如下:

#/bin/bash 
vip=192.168.248.139 #把vip绑定在lo上,是为了实现rs直接把结果返回给客户端

ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0

#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
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

执行脚本

$ chmod +x /etc/init.d/lvsrs
$ echo "/etc/init.d/lvsrs.sh start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

安装nginx

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
systemctl start nginx.service
systemctl enable nginx.service

更改页面文件

#node1
echo "192.168.123.130" > /usr/local/nginx/html/index.html

#node2
echo "192.168.123.131" > /usr/local/nginx/conf/html/index.html
测试

访问网页192.168.123.140 查看网页显示内容

#RS配置参考文档

www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html