Linux搭建负载均衡集群,使用LVS的DR模式

时间:2022-12-14 03:05:42

Linux Cluster
LB(负载均衡集群)

负载均衡集群,通常有两种实现方式,基于硬件或基于软件。
基于硬件:BIP
基于软件:
基于OSI第四层传输层:LVS(Linux Virtual Server)
基于OSI第期层传输层:nginx

1.LVS

1.1认识LVS

LVS,全称Linux Virtual Server,由国人章文嵩博士提出并实现。
LVS有三种工作模式:DR直接路由模式、NAT地址转换模式、TUN隧道模式
在实际环境中若是搭建负载均衡集群直接使用DR模式。

2.基于LVS搭建 LB Linux Cluster

2.1 LVS的DR模式实现

2.1.1 实验拓扑图

Linux搭建负载均衡集群,使用LVS的DR模式

2.1.2 实验简介

Director有一张网卡,与realserver连接在同一个交换机上,并能相互通信,配置一个网络别名作为VIP,
在每个realserver上绑定一个虚拟网卡ip地址lo:0,该虚拟ip地址为director的ip地址,
用于realserver处理完director分给的用户请求后,直接使用director的ip作为源ip返回给用户。
在绑定虚拟网卡ip前,需要先调整director的arptable(对arp请求的通告级别、回应级别调整)。
arp_ignore:只对什么级别的arp请求进行响应,当arp广播请求的目标ip不在同一个接口上就不予响应。
默认为0,能通告就通告。
0:只要本地配置的有相应地址,就给予响应;
1:仅在请求的目标地址配置请求到达的接口上的时候,才给予响应;
arp_announce:向外主动通告自己的通告级别。
默认为0,能通告就通告。
0:将本地任何接口上的任何地址向外通告;
1:试图仅向目标网络通告与其网络匹配的地址;
2:仅向与本地接口上地址匹配的网络进行通告
在realserver上配置一条独特的路由条目,才能将处理好的用户请求使用director的IP地址返回结果给用户

2.1.3 实验准备

物理机上安装virtualbox软件上创建一台centos5.5,最小化安装即可,作为Director。
桌面可装可不装,使用6.X,7.X也是可以的,这里使用centos5.5是因为my computer才8G内存
virtualbox的虚拟介质管理,复制2台刚才安装好的centos5.5硬盘,明明为realserver1,realserver2
新建虚拟机作为realserver时,选择存储介质选择现有的磁盘,路径指向刚才复制的centos5.5

2.1.4 实验步骤

0).ipvs在2.6.X版本后的内核中默认安装有,我们需要安装ipvsadm进行管理,注意:ipvsadm与iptables不能同时使用,实验前需关闭iptables与selinux
1).Director只需一张网卡选择桥接模式,启动
2).为Director安装ipvsadm
yum -y install ipvsadm
检查是否安装成功只需输入ipvsadm,无输出则未安装有,若已安装则输出如下字样
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3).配置测试网页
为每台realserver安装http,并启动httpd服务
yum install http
service httpd start
echo "this is realserver1 test web" > /var/www/html/index.html
echo "this is realserver2 test web" > /var/www/html/index.html
echo "this is realserver3 test web" > /var/www/html/index.html
#分别创建测试页
curl http://ipaddress #访问测试页
4).配置director
配置VIP
配置网络别名DIP
ifconfig eth0:0 192.168.8.30/24
5).配置realserver的RIP
realserver1:192.168.8.32
realserver2:192.168.8.33
6).分别配置realserver的arp_ignore、arp_announce
realserver1:
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
realserver2:
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
7).分别在realserver1、2上配置的网络别名VIP与静态路由
ifconfig lo:0 192.168.8.30 broadcast 192.168.8.30 netmask 255.255.255.255 up
route add -host 192.168.8.30 dev lo:0
在director上也需要配置静态路由
route add -host 192.168.8.30 dev eth0:0
8).在director上测试能否正常访问realserver的测试页
9).配置ipvsadm规则
在director上配置
[root@director ~]# ipvsadm -C #清空之前的ipvsadm规则
[root@director ~]# ipvsadm -A -t 192.168.8.30:80 -s wlc
[root@director ~]# ipvsadm -a -t 192.168.8.30:80 -r 192.168.8.32 -g -w 2 #-g表示DR模式 -w表示权重
[root@director ~]# ipvsadm -a -t 192.168.8.30:80 -r 192.168.8.33 -g -w 1
[root@director ~]# ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.30:80 wlc
-> 192.168.8.33:80 Route 1 0 0
-> 192.168.8.32:80 Route 2 0 0

10).测试
使用物理机的浏览器输入http://director的ip地址
不断刷新即可看到效果