lvs部署

来源:互联网 发布:qt淘宝兼职刷单流程 编辑:程序博客网 时间:2024/05/16 07:11

lve的全称为linux virtual server,即linux虚拟服务器,是一个虚拟的服务器集群系统。其简单的工作原来为:当用户请求了lvs vip后,lvs根据自身的转发方式和选择的算法,把客户端请求转发到后端服务器,后端服务器接收到请求并做出处理,并把结果返回给客户。
lvs的三种转发方式分别为LVS NAT /LVS DR/LVS TUN
lvs的算法包括rr/wrr等
实现lvs负载均衡技术是基于linux内核模块ipvs,直接在内核中工作

  • 环境

192.168.2.118 nginx/mysql主
192.168.2.119 nginx/mysql从
192.168.2.112 lap
192.168.2.111 lvs
上述环境已经部署好,其中nginx代理lap,在111服上部署lvs

对内核做软连接(看具体的版本)

ln -s /usr/src/kernels/2.6.32-696.16.1.el6.x86_64 /usr/src/linux

如果在/usr/src/kernels/下显示空,则安装

yum -y install kernel-devel
  • lvs部署
wget -c http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gztar -zxvf ipvsadm-1.24.tar.gzcd ipvsadm-1.24makemake install
  • ipvsadm相关参数
-A                      添加一台虚拟服务器VIP地址-t                      虚拟服务器提供的是tcp协议-s                      调度算法-a                      在虚拟服务器中增加一台后端真实服务器-p                      时间,单位为秒,在访问了某台realserver后,在该时间值内一直访问该台realserver-r                      指定真实服务器ip地址-w                      后端服务器的权重-d                      删除后端服务器-D                      删除虚拟服务器-m                      设置当前转发方式为NAT模式;-g为直接路由模式;-i为隧道模式
  • 配置lvs

手动创建ipvsadm的配置文件并添加内容

ipvsadm -A -t 192.168.2.110:80 -s rripvsadm -a -t 192.168.2.110:80 -r 192.168.2.118:80 -g -w 2ipvsadm -a -t 192.168.2.110:80 -r 192.168.2.119:80 -g -w 2# ipvsadm -D -t 192.168.2.110:80#ipvsadm -d -t 192.168.2.110:80 -r 192.168.2.112:80[root@localhost108 ipvsadm-1.24]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.2.110:80 rr  -> 192.168.2.119:80             Route   2      0          0           -> 192.168.2.118:80             Route   2      0          0  

这里写图片描述

lvs服务器和后端服务求绑定vip(临时,重启会自动消失)

VIP=192.168.2.110ifconfig    lo:0  $VIP netmask  255.255.255.255  broadcast  $VIP/sbin/route  add  -host  $VIP  dev  lo:0

执行ifconfig命令可以查看
这里写图片描述

在后端服务器抑制arp(临时,重启后会自动消失)

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

浏览器访问192.168.2.110
这里写图片描述

这里写图片描述

如果没有做抑制arp响应,则activeconn和inactconn都会一直显示0,说明并没有访问到页面,即使出来了也可能是因为缓存。
另外,如果停止了其中一个nginx服务,上述中的remoteaddress还会存在,lvs本身并没有健康检查机制。

在112服上运行

while true ;do curl 192.168.2.110 ;sleep 3 ;done;

发现会轮询。

也可以通过脚本来设置vip和arp抑制

#!/bin/shVIP=192.168.2.110case  $1  in                                                                                                                                                                                                                   start)                                                                                                                                                                                                                             ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP    /sbin/route add -host $VIP dev lo:0    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce    sysctl -p >/dev/null 2>&1    echo "RealServer Start OK"    exit 0;;                              stop)    ifconfig lo:0 down    route del $VIP >/dev/null 2>&1    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce    echo "RealServer Stoped OK"    exit 1;;*)    echo "please input start or stop";;esac

备注:
1)在安装ipvsadm的时候,运行make出现如下错误
这里写图片描述
因为内核的软连接没有做好

2)在设置vip的时候,提示SIOCSIFNETMASK: Cannot assign requested address
这里写图片描述

linux分配的客户端连接端口已经用完,无法建立socket连接。可以尝试重启系统,或者在/etc/sysctl.conf把net.ipv4.ip_local_port_range设置为10000 60000