当前位置: 首页 > article >正文

单独配置LVS负载均衡服务器+web

注意:

(1) lvs基于四层ip+端口转发,不支持后的realserver配置多个虚拟主机,可以在lvs上配置基于不同ip+端口的虚拟主机
(2) LVS-DR模式中,负载均衡服务器(LB)和后端真实服务器(realserver)需要在同一局域网,也就是内网ip是同一网段
(3) vip(虚拟ip)最好和内网ip在同一网段,并且最后将vip映射到公网ip
(4) 后端realserver只要可以正常上网就可以,因为realserver需要直接给用户回复,不再经过负载均衡服务器
(5) vip不能和物理ip冲突
(6) 做lvs负载均衡最少需要三台服务器,一台lvs两台web
(7) 两台web服务的网站内容必须相同
(8) lvs可用nginx代替,都可以实现负载均衡。

环境:
请添加图片描述

一、搭建web服务器(我这里已经搭建好,并可以访问)
web1      访问 http://www.etiantian.org   >>   显示:www-nginx-172.16.1.7               
               访问 http://bbs.etiantian.org     >>   显示:bbs-nginx-172.16.1.7

web2     访问 http://www.etiantian.org   >>    显示:www-apache-172.16.1.8
              访问 http://bbs.etiantian.org     >>    显示:bbs-apache-172.16.1.8
二、配置lvs和realserver
(1) 安装ipvsadm
yum -y install ipvsadm

(2) 配置lvs-启动/停止脚本
[root@Oldboy ~]# cat /etc/init.d/lvs_DR 
#!/bin/sh
# set the vip and port  
VIP=172.16.1.254
# set the rip and port  
# web  
RIP1=172.16.1.7
RIP2=172.16.1.8
Usage ()
{
  echo "Usage:`basename $0` (start|stop|status) "
  exit 1
}

if [ $# -ne 1 ];then
  Usage
fi  

case $1 in
  start)
  echo "start LVS of DirectorServer"
  echo 1 > /proc/sys/net/ipv4/ip_forward
# set the vip
  /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
# clear ipvs table
  /sbin/ipvsadm -C
# add lvs vip and port  
  /sbin/ipvsadm -A -t $VIP:80 -s wrr
# add rip and port
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1
  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1

  /sbin/ipvsadm -L -n
  ;;  
  stop)
  echo "close LVS DirectorServer"  
  /sbin/ipvsadm -C
  /sbin/ifconfig eth0:1 down
  ;;
  status)  
  /sbin/ipvsadm -L -n  
  ;;  
  *)  
  Usage  
esac

[root@Oldboy ~]# chmod +x /etc/init.d/lvs_DR 
[root@Oldboy ~]# /etc/init.d/lvs_DR start

(3) realserver启动脚本(每次重启网卡需要启动这个脚本)

[root@Oldboy ~]# cat /etc/init.d/lvs_realserver 
#!/bin/sh  
VIP=172.16.1.254

Usage ()
{
  echo "Usage:`basename $0` (start|stop)"
  exit 1
}

if [ $# -ne 1 ];then
  Usage
fi

case $1 in
  start)
  echo "reparing for Real Server"
  echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
  echo "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
  echo "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce
  /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255  up
#/sbin/route add -host $VIP dev lo:0
  ;;
  stop)
  /sbin/ifconfig lo:0 down
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
  echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignore
  echo "0" >/proc/sys/net/ipv4/conf/eth0/arp_announce
  echo "stop Real Server"
  ;; 
  *)
  Usage
esac


[root@Oldboy ~]# chmod +x /etc/init.d/lvs_realserver 
[root@Oldboy ~]# /etc/init.d/lvs_realserver start
三、将vip映射到公网ip(由于我这里没有硬件防火墙,只能使用同一局域网的其它服务器代替,这台服务器需要能联网)
(1) 开启路由转发
[root@Oldboy ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
[root@Oldboy ~]# sysctl -p
net.ipv4.ip_forward = 1

(2) 配置地址映射
iptables -F -t nat
iptables -t nat -I PREROUTING -p tcp  -d 10.0.0.51 --dport 80 -j DNAT --to-destination 172.16.1.254:80
iptables -t nat -A POSTROUTING  -j MASQUERADE
/etc/init.d/iptables save
/etc/init.d/iptables restart
四、测试访问
(1) 客户端绑定hosts
10.0.0.51  www.etiantian.org bbs.etiantian.org blog.etiantian.org

(2) 访问http://www.etiantian.org  随机显示 www-nginx-172.16.1.7  和  www-apache-172.16.1.8
      访问http://bbs.etiantian.org    随机显示  bbs-nginx-172.16.1.7   和  bbs-apache-172.16.1.8

或任意停止一台realserver查看是否可以正常访问
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 到此为止 lvs+web  负载均衡搭建完成 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
五、为了方便理解lvs-DR模式原理,下面是手动配置lvs负载均衡的过程:
一、lvs利用 ipvsadm工具手动配置

实验环境:
192.168.1.181(LB)              #调度器(VIP)
192.168.0.198(LB)              #调度器(DIP)
192.168.0.13 (RS1)           #web服务器1(RIP)
192.168.0.171 (RS2)            #web服务器2(RIP)

搭建步骤:

1、在RS1和RS2安装好两台web服务器并能够访问

[root@RS1 ~]# yum -y install httpd
[root@RS1 ~]# echo "RS1-0.13" >> /var/www/html/index.html   #建立测试页
[root@RS1 ~]# /etc/init.d/httpd restart

[root@RS2 ~]# yum -y install httpd
[root@RS2 ~]# echo "RS1-0.13" >> /var/www/html/index.html   #建立测试页
[root@RS2 ~]# /etc/init.d/httpd restart

2、在Directory(调度器)上安装ipvsadm

(1)下载ipvsadm-1.24.tar.gz
[root@LB ~]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz            

(2)查看/usr/src/kernels/中是否有内核,并做软链接(安装lvs的需要),没有则yum安装kernel-devel           
[root@LB ~]# ls -ld /usr/src/kernels/2.6.32-504.23.4.el6.x86_64
[root@LB ~]# ln -s /usr/src/kernels/2.6.32-504.23.4.el6.x86_64  /usr/src/linux
[root@LB ~]# ls -l /usr/src/

(3)解压并安装ipvsadm
[root@LB ~]# tar zxf ipvsadm-1.24.tar.gz
[root@LB ~]# cd ipvsadm-1.24
[root@LB ~]# make
[root@LB ~]# make install

(4)执行并查看ipvsadm 是否安装成功
[root@LB ~]# /sbin/ipvsadm
[root@LB ~]# lsmod | grep ip_vs
#############################################
 ip_vs                 115643  0            
#############################################

3、手工添加vip(重启网卡需要再次添加):

[root@LB ~]# ifconfig eth0:181 192.168.1.181 netmask 255.255.255.0 up

4、在DR(调度器)上手工执行配置添加LVS服务并增加两台RS

(1)清除ipvsadm(内核)表中的所有记录
[root@LB ~]# ipvsadm -C

(2)设置连接超时值(分别是tcp tcpfin udp的超时时间)
[root@LB ~]# ipvsadm --set 30 5 60

(3)添加一条虚拟服务器记录并指定vip,算法为加权轮叫,超时时间为20s
[root@LB ~]# ipvsadm -A -t 192.168.1.181:80 -s wrr -p 20(添加)
[root@LB ~]# ipvsadm -D -t 192.168.1.181:80(删除)

#########################################################################################################
参数说明:                                                                                              
-A:--add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务                                                                            #
-t: 说明虚拟服务器提供的是tcp 的服务 [vip:port] or [real-server-ip:port]  
-s: 使用的调度算法,有这样几个选项  rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,      
wrr:加权轮叫(Weighted Round Robin)(简称wrr),根据RS的权重会优先访问权重高的真实服务器(RS), 调度器可以自动问询真实服务器的负载情况,并动态地调整其权值(权重)                 
wlc:加权最少链接调度 (简称wlc),来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。                
#########################################################################################################

(4)添加一条真实服务器记录并指导Directory的vip和RealServer地址,模式为DR(路由模式),权重为1             
[root@LB ~]# ipvsadm -a -t 192.168.1.181:80 -r 192.168.0.13:80 -g -w 1(添加)                          
[root@LB ~]# ipvsadm -a -t 192.168.1.181:80 -r 192.168.0.171:80 -g -w 1(添加)                         
[root@LB ~]# ipvsadm -d -t 192.168.1.181:80 -r 192.168.0.171:80(删除)                                 

#########################################################################################################
参数说明:                                                                                             
-a: 在内核虚拟服务器表的记录里添加一条新的真实服务器                                                    
-t: 说明虚拟服务器提供的是tcp 的服务 [vip:port] or [real-server-ip:port]                                
-r: 真实的服务器[Real-Server:port]                                                                      
-g: 指定LVS 的工作模式为直接路由模式-DR模式(也是LVS 默认的模式)                                       
-w: 真实服务器的权值(权重)                                                                              
#########################################################################################################

5、在RS(真实服务器)上添加vip和抑制ARP广播

添加vip(重启网卡需要再次添加):
[root@RS1 ~]# ifconfig eth0:181 192.168.1.181 netmask 255.255.255.255 up
[root@RS2 ~]# ifconfig eth0:181 192.168.1.181 netmask 255.255.255.255 up

抑制ARP广播(重启网卡需要再次添加):
RS1
 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

RS2
[root@RS2 ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@RS2 ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@RS2 ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@RS2 ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

#########################################################################################################
为什么要抑制ARP广播:                                                                                   
当客户端发起访问VIP 对应的域名的请求时,根据网络通信原理会产生ARP 广播,因为负载均衡器和真实的服务器在同一网络并且VIP设置在集群中的每个节点上,此时集群内的真实服务器会尝试回答来自客户端计算机的查找VIP 的ARP广播,这就会产生问题,大家都说我是"VIP",为了达到负载均衡的目的,必须让真实服务器忽略来自客户端计算机的ARP广播请求。                                                                            
#########################################################################################################

6、客户端访问vip地址测试:
(1)先访问RS1和RS2,能正确访问
http://192.168.1.13 
http://192.168.1.171

(2)再访问调度器的vip地址
http://192.168.1.181

(3)在LB 上查看lvs调用了那台RS,我们可以看到171上有字节了,说明是171给客户端回复的
[root@LB ~]# ipvsadm -L -n --stats

#########################################################################################################
IP Virtual Server version 1.2.1 (size=4096)                                                             
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes                          
  -> RemoteAddress:Port                                                                                 
TCP  192.168.1.181:80                  226     1456        0   52        0                              
  -> 192.168.0.13:80                   187     1218        0    0        0                              
  -> 192.168.0.171:80                   39      238        0   52        0                              
#########################################################################################################


http://www.kler.cn/news/356879.html

相关文章:

  • C#学习笔记(四)
  • TCP/IP传输协议,易懂!!!
  • PHP(一)从入门到放弃
  • 速盾:cdn 速度取决于什么?
  • 【H2O2|全栈】关于CSS(14)如何完成常规的页面布局
  • 简单实现通过电脑操作手机
  • 【优选算法】探索双指针之美(一):双指针与单调性的完美邂逅
  • MySQL 异常: “Host ‘xxx‘ is not allowed to connect to this MySQL server“
  • IMX6UL的RGB的显示实验
  • 一起搭WPF架构之LiveCharts.Wpf的简单了解与安装
  • 微信小程序-封装通用模块
  • Mac 远程 Windows 等桌面操作系统工具 Microsoft Remote Desktop for Mac 下载安装详细使用教程
  • 《仓库猎手模拟》风灵月影游戏辅助使用教程
  • 数据库原理与应用(基于MySQL):实验六数据查询
  • 【Golang】Go语言http编程底层逻辑实现原理与实战
  • 大数据治理:技术挑战与解决方案
  • 免杀对抗—内存加载UUID标识IPV4地址MAC地址
  • webpack自定义插件 ChangeScriptSrcPlugin
  • 结合seata和2PC,简单聊聊seata源码
  • 暴雨讲堂:AI已成为交叉学科科研工具