博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVS+keepalived负载均衡(DR)
阅读量:6435 次
发布时间:2019-06-23

本文共 4907 字,大约阅读时间需要 16 分钟。

LVS+keepalived负载均衡(DR)



为什么要使 用负载均衡技术?

1、系统高可用性

2、  系统可扩展性

3、  负载均衡能力

1 初识LVS:Linux Virtual Server

1.1 LVS是什么

      LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是。现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。

1.2 LVS有什么作用

      LVS主要用于服务器集群的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。

     LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用LVS技术实现高可伸缩的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站()、向RealPlayer提供音频视频服务而闻名的Real公司()、全球最大的开源网站(sourceforge.net)等。

     LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。目前有三种IP负 载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。





2、实验环境

3台节点

  • Keepalived1 + lvs(Director):192.168.32.11

  • Real server1:192.168.32.33

  • Real server2:192.168.32.44

  • VIP: 192.168.32.100


3、安装系统软件

Lvs + keepalived节点安装

# yum install ipvsadm keepalived -y

Real server + nginx服务的2个节点安装

# yum install epel-release -y# yum install nginx -y


4、查看是否都开启允许路由转发(lvsReal server

 # cat /etc/sysctl.conf#设置允许路由转发net.ipv4.ip_forward = 1#刷新设置# sysctl -p






5、设置配置脚本

Real server节点2台配置脚本:

vim /usr/local/sbin/realserver.sh#!/bin/bash  SNS_VIP=192.168.32.100. /etc/rc.d/init.d/functionscase "$1" instart) ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP /sbin/route add -host $SNS_VIP dev 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 sysctl -p >/dev/null 2>&1 echo "RealServer Start OK"   ;;stop) ifconfig lo:0 down route del $SNS_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 "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped"   ;; *) echo "Usage: $0 {start|stop}"   exit 1esacexit 0[object Object]


启动Real server脚本

chmod g+x /usr/local/sbin/realserver.sh/usr/local/sbin/realserver.sh start启动后出现一个新增虚拟IP(vip)







6、keepalived节点配置:

设置虚拟IP

vim /etc/init.d/lvsdr.sh#!/bin/sh# 定义虚拟ipVIP=192.168.32.100# 定义realserver,并已逗号分开RIPS=192.168.32.33,192.168.32.44 #,192.168.3.5,192.168.3.6# 定义提供服务的端口SERVICE=8080# 调用init.d脚本的标准库. /etc/rc.d/init.d/functionscase $1 in        start)        echo "Start LVS of DR Mode"        # lvs dr模式不需要路由转发,但是keepalived需要        #echo "0" > /proc/sys/net/ipv4/ip_forward        # 开启icmp包重定向        echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects        echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects        echo "1" > /proc/sys/net/ipv4/conf/eth0/send_redirects        # 绑定虚拟ip        ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up        route add -host $VIP dev eth0:0        # 清除lvs规则        ipvsadm -C        # 添加一条虚拟服务器记录    # -p指定一定的时间内将相同的客户端分配到同一台后端服务器    # 用于解决session的问题,测试时或有别的解决方案时建议去掉        ipvsadm -A -t $VIP:$SERVICE -s rr -p        # 添加真实服务器记录        for RIP in `echo $RIPS sed  -e 's/,/\n/g'`        do                ipvsadm -a -t $VIP:$SERVICE -r $RIP:$SERVICE -g -w 1        done        # 设置tcp tcpfin  udp的超时连接值        ipvsadm --set 30 120 300        ipvsadm        ;;        stop)        echo "Stop LVS DR"        ifconfig eth0:0 down        ipvsadm -C        ;;        *)        echo "Usage:$0 {start  stop}"        exit 1esac


设置keepalived配置文件,使包转发后台

vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {   notification_email {     acassen@firewall.loc     failover@firewall.loc     sysadmin@firewall.loc   }   notification_email_from Alexandre.Cassen@firewall.loc   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS_DEVEL}vrrp_instance VI_1 {    state MASTER    interface eth0    virtual_router_id 51    priority 100    advert_int 1    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {        192.168.32.100    }}virtual_server 192.168.32.100 8080 {    delay_loop 6    lb_algo rr    lb_kind DR    nat_mask 255.255.255.0    persistence_timeout 50    protocol TCP    real_server 192.168.32.33 8080 {        weight 1        TCP_CHECK {            connect_timeout 3            nb_get_retry 3            delay_before_retry 3            connect_port 8080        }    }    real_server 192.168.32.44 8080 {        weight 1        TCP_CHECK {            connect_timeout 3            nb_get_retry 3            delay_before_retry 3            connect_port 8080        }    }}


启动keepalive脚本

chmod g+x /etc/init.d/lvsdrservice lvsdr start启动后出现一个新增虚拟IP(vip)


chkconfig keepalived on service keepalived start查看ipvsadm -ln





7、验证结果

可以使用命令查看是否转发成功

ipvsadm -lcn

可以进行抓包查看是否有数据包通过端口

tcpdump host 192.168.32.100 and port 8080 -X -vv

      本文转自rshare 51CTO博客,原文链接:http://blog.51cto.com/1364952/1956227,如需转载请自行联系原作者
你可能感兴趣的文章
【CJOJ】Contest4 - A+B Series
查看>>
Python中四种交换两个变量的值的方法
查看>>
ora-01033:oracle initialization or shutdown in progress 解决方法
查看>>
移动自动化相关名词解释
查看>>
微信开发者工具 快捷键
查看>>
monkey测试===修改adb的默认端口
查看>>
AsyncTask和Handler处理异步消息
查看>>
Scheme 中的 pair 和 list 简述
查看>>
iOS AVAssetExportSession 视频剪切、合并、压缩
查看>>
我收藏的技术知识图(每张都是大图)
查看>>
Spring Boot制作启动图案
查看>>
《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理
查看>>
hdu Oil Deposits
查看>>
彻底理解javascript中的this指针
查看>>
SAS去空格
查看>>
MySQL用户和权限管理
查看>>
Spring Cloud构建微服务架构(二)服务消费者
查看>>
这些老外的开源技术养活了一票国产软件
查看>>
Maven实战(六)--- dependencies与dependencyManagement的区别
查看>>
创业者应该有的5个正常心态(转)
查看>>