突破LVS瓶颈,LVS Cluster部署(OSPF + LVS)

  • 前言
  • 架构简图
  • 架构优势
  • 部署方法
  • 1.硬件资源准备
  • 2.三层设备OSPF配置
  • 3.LVS调度机的OSPF配置
  • a.安装软路由软件quagga
  • b.配置zerba.conf
  • c.配置ospfd.conf
  • d.开启IP转发
  • e.开启服务
  • 4.LVS keepalived配置
  • a.修改配置文件 keepalived.conf ,在Cluster架构中,所有调度机用相同的配置文件
  • b.启动keepalived
  • 5.realserver配置
  • a.添加启动服务脚本/etc/init.d/lvs_realserver
  • b.启动服务
  • 总结

前言

LVS大家应该很熟悉,这款优秀的开源软件基本成为了IP负载均衡的代言词。但在实际的生产环境中会发现,LVS调度在大压力下很容易就产生瓶颈,其中瓶颈包括ipvs内核模块的限制,CPU软中断,网卡性能等,当然这些都是可以调优的,关于LVS的调优,会在这里详细讲 LVS调优攻略 。回到主题,那当无法避免的单台LVS调度机出现了性能瓶颈,有什么办法呢?在本文就来介绍如何横向扩展LVS调度机

架构简图

如上图三层设备的路由表,VIP地址1.1.1.1对应nexthop有三个地址,这三个地址是三台lvs调度机的地址。这样便可达到效果:用户访问------>VIP------>三台LVS调度机------>分发到多台RealServe

架构优势

1.LVS调度机自由伸缩,横向扩展(最大8台,受限于三层设备允许的等价路由数目)

2.LVS调度资源全利用,All Active。不存在备份机

部署方法

1.硬件资源准备

三层设备:本文用的是h3c 5800三层交换机

LVS调度机三台: 192.168.0.2 192.168.2.2 192.168.3.2

Realserver三台:  1.1.1.100 1.1.1.101 1.1.1.102

2.三层设备OSPF配置

#查找与三层交换与lvs调度相连的端口,在本文端口分别为 g1/0/2 g1/0/3 g1/0/6

#把g1/0/2改为三层端口,并配上IP

interfaceGigabitEthernet1/0/2

port link-mode route

ip address 192.168.0.1255.255.255.0

#配置ospf的参数, timer hello是发送hello包的间隔,timer dead是存活的死亡时间。默认是10,40。

#hello包是ospf里面维持邻居关系的报文,这里配置是每秒发送一个,当到4秒还没有收到这个报文,就会认为这个邻居已经丢失,需要修改路由

ospf timer hello 1

ospf timer dead 4

ospf dr-priority 100

#如此类推,把g1/0/3 g1/0/6都配置上

interfaceGigabitEthernet1/0/3

port link-mode route

ip address 192.168.3.1255.255.255.0

ospf timer hello 1

ospf timer dead 4

ospf dr-priority 99

interfaceGigabitEthernet1/0/6

port link-mode route

ip address 192.168.2.1255.255.255.0

ospf timer hello 1

ospf timer dead 4

ospf dr-priority 98

#配置ospf

ospf 1

area 0.0.0.0

network 192.168.0.00.0.0.255

network 192.168.3.00.0.0.255

network 192.168.2.00.0.0.255

3.LVS调度机的OSPF配置

a.安装软路由软件quagga

yum –y install quagga

b.配置zerba.conf

vim /etc/quagga/zebra.conf

hostname lvs-route-1

password xxxxxx

enable password xxxxxx

log file /var/log/zebra.log

service password-encryption

c.配置ospfd.conf

vim /etc/quagga/ospfd.conf

#ospf的配置类似于上面三层设备,注意需要把vip声明出去(1.1.1.1)

log file /var/log/ospf.log

log stdout

log syslog

interface eth0

ip ospf hello-interval 1

ip ospf dead-interval 4

router ospf

ospf router-id 192.168.0.1

log-adjacency-changes

auto-cost reference-bandwidth 1000

network 1.1.1.1/32 area 0.0.0.0

network 192.168.0.0/24 area 0.0.0.0

d.开启IP转发

sed –i ‘/net.ipv4.ip_forward/d’ /etc/sysctl.conf

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confsysctl –p

e.开启服务

/etc/init.d/zebra start

/etc/init.d/ospfd start

chkconfig zebra on

chkconfig ospfd on

4.LVS keepalived配置

在此架构下,LVS只能配置成DR模式。如果要配置成NAT模式,我的想法是,需要参照上面的方式让LVS调度机与内网三层设备配置ospf,此方法未验证,有其他方案请告知。

a.修改配置文件 keepalived.conf ,在Cluster架构中,所有调度机用相同的配置文件

vim /etc/keepalived/keepalived.conf

#keepalived的全局配置global_defs {

notification_email {

lxcong@gmail.com

}

notification_email_from lvs_notice@gmail.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id Ospf_LVS_1

}

#VRRP实例,在这个架构下所有的LVS调度机都配置成MASTER

vrrp_instance LVS_Cluster{  ##创建实例 实例名为LVS_Cluster

state MASTER #备份服务器上将MASTER改为BACKUP

interface eth0    ##VIP 捆绑网卡

virtual_router_id 100##LVS_ID  在同一个网络中,LVS_ID是唯一的

priority 100#选举的优先级,优先级大的为MASTER  备份服务上将100改为99

advert_int 1#发送vrrp的检查报文的间隔,单位秒

authentication {  ##认证信息。可以是PASS或者AH

auth_type PASS

auth_pass 08856CD8

}

virtual_ipaddress {

1.1.1.1

}

}

#LVS实例,在本文采用的是DR模式,WRR调度方式。其实在这种架构下也只能使用DR模式

virtual_server 1.1.1.180 {

delay_loop 6

lb_algo wrr

lb_kind DR

persistence_timeout 60

protocol TCP

real_server 1.1.1.10080 {

weight 1                                           # 权重

inhibit_on_failure                               # 若此节点故障,则将权重设为零(默认是从列表中移除)

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 1.1.1.10180 {

weight 1                                   # 权重

inhibit_on_failure                               # 若此节点故障,则将权重设为零(默认是从列表中移除)

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 1.1.1.10280 {

weight 1                                           # 权重

inhibit_on_failure                               # 若此节点故障,则将权重设为零(默认是从列表中移除)

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

b.启动keepalived

/etc/init.d/keepalived start

chkconfig keepalived on

5.realserver配置

a.添加启动服务脚本/etc/init.d/lvs_realserver

请自行按需要修改脚本中SNS_VIP变量

#!/bin/sh

### BEGIN INIT INFO

# Provides: lvs_realserver

# Default-Start:  3 4 5

# Default-Stop: 0 1 6

# Short-Description: LVS real_server service scripts

# Description: LVS real_server start and stop controller

### END INIT INFO

#  Copyright 2013 lxcong

#

#  chkconfig: - 20 80

#

#  Author:xxxx@xxxx

#有多个虚拟IP,以空格分隔

SNS_VIP="1.1.1.1"

. /etc/rc.d/init.d/functions

if [[ -z "$SNS_VIP"  ]];then

echo 'Please set vips in '$0' with SNS_VIP!'

fi

start(){

num=0

for loop in $SNS_VIP

do

/sbin/ifconfig lo:$num $loop netmask 255.255.255.255 broadcast $loop

/sbin/route add -host $loop dev lo:$num

((num++))

done

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 -e -p >/dev/null 2>&1

}

stop(){

num=0

for loop in $WEB_VIP

do

/sbin/ifconfig lo:$num down

/sbin/route del -host $loop >/dev/null 2>&1

((num++))

done

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

sysctl -e -p >/dev/null 2>&1

}

case"$1"in

start)

start

echo "RealServer Start OK"

;;

stop)

stop

echo "RealServer Stoped"

;;

restart)

stop

start

;;

*)

echo "Usage: $0 {start|stop|restart}"

exit 1

esac

exit 0

b.启动服务

service lvs_realserver start

chkconfig lvs_realserver on

总结

到这里,LVS Cluster架构已部署完了,如果各位有其他更好的LVS扩展方式请留意或者联系我,互相交流 QQ:83766787。另外以前做了一个LVS的管理平台,但是一直都做得不好,也希望有相关平台开发经验的能联系我,交流交流、

OSPF + LVS ,突破LVS瓶颈 (转)的更多相关文章

  1. 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区

    突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS)

  2. LVS+Nginx(LVS + Keepalived + Nginx安装及配置)

    (也可以每个nginx都挂在上所有的应用服务器)  nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单.配置简单.相关材料也特别多. lvs是国内的章文嵩博士的大作,比nginx被广 ...

  3. PHP程序员如何突破成长瓶颈

    PHP因为简单而使用,但不能因为它的简单而限制我们成长!文章给PHP工程师突破成长瓶颈提了一些建议,希望PHPer能够突破自己,有更好的发展. AD: 作为Web开发中应用最广泛的语言之一,PHP有着 ...

  4. 安装LVS安装LVS和配置LVS的工作比较繁杂

    安装LVS安装LVS和配置LVS的工作比较繁杂,读者在配置的过程中需要非常细心和耐心.在本节我们将对其进行详细地介绍.主要包括如下几个核心步骤:1.获取支持LVS的内核源代码如果读者需要使用LVS,需 ...

  5. 想突破学习瓶颈,为什么要认真的学一下Dubbo?

    今天有学生在问,在学习dubbo的时候遇到瓶颈了怎么办,一些东西就感觉就在那里,但是,就是碰不到,摸不着,陷入了迷茫,今天在这里,就跟大家讲一下怎么突破这个瓶颈 先自我介绍一下哈,我是鲁班学院的周瑜老 ...

  6. 如何突破Jenkins瓶颈,实现集中管理、灵活高效的CI/CD

    在过去的几年间,随着DevOps的兴起,持续集成(Continuous Integration)与持续交付(Continuous Delivery)的热度也水涨船高.在本文中,我们将首先带您了解热门的 ...

  7. PHP程序员如何突破成长瓶颈(php开发三到四年)

    看了这篇博文,我正好处于这个阶段,也有心要突破自己,呵呵! 作为Web开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题, ...

  8. lvs之 lvs原理架构介绍

    一. 概念 lvs的术语: Router:GWIP vs:virtual server,director rs:real server CIP:client IP VIP:virtual server ...

  9. 负载均衡集群介绍 LVS介绍 LVS调度算法 LVS NAT模式搭建

    LVS BAT模式搭建 更改主机名: hostnamectl set-hostname centos7-three bash 准备工作 • 三台机器 • 分发器,也叫调度器(简写为dir) • 内网: ...

随机推荐

  1. android camera(四):camera 驱动 GT2005

    摄像头主要参数: 1.MCLK  24MHz: 2.PCLK  48~52MHz~: 3.电压 1.8V(1.5V).2.8V: 4.scl(IIC时钟)100KHz或者400KHz. 下载:常用摄像 ...

  2. 1 weekend110的Linux带图形系统安装 + 网络配置 + 静态IP设置

    一.weekend110的Linux带图形系统安装 二.网络配置 明明是配置好的啊,只能说是域名出现问题了, 出现ping:unknow host www.baidu.com的问题解决 解决Ubunt ...

  3. mysql left( right ) join 使用on 与where的差异

    之前一直很困扰为什么left join要么一查没有数据,要么出现很多条重复数据. 百思不得其解,后来在网上到处找资料,总算明白了. 一定要理解下面几点:  (1)主表条件在on后面时附表只取满足主表筛 ...

  4. spring boot 实践

    二.实践 一些说明: 项目IDE采用Intellij(主要原因在于Intellij颜值完爆Eclipse,谁叫这是一个看脸的时代) 工程依赖管理采用个人比较熟悉的Maven(事实上SpringBoot ...

  5. chromium截图实现

    声明:本blog是我自己写的,假设要转载,请注明:come from blog of niba! chromium终于显示是在ContentView上.但通过硬件加速.渲染合成的网页之前是在surfa ...

  6. 指向函数的指针 分类: C/C++ 2015-07-13 11:03 14人阅读 评论(0) 收藏

    原文网址:http://www.cnblogs.com/zxl2431/archive/2011/03/25/1995285.html 讲的很清楚,备份记录. (一) 用函数指针变量调用函数 可以用指 ...

  7. nginx图片过滤处理模块http_image_filter_module安装配置笔记

    http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时 ...

  8. [rxjs] Demystifying Cold and Hot Observables in RxJS

    Cold: console.clear(); var Observable = Rx.Observable; var clock = Observable.interval(1000).take(10 ...

  9. Android 获取运营商信息(完整版)-解决高通,MTK等双卡问题

    由于国内的运营商问题,双卡手机获取IMSI号问题要根据厂商API 来实现. 下面我们就来做一套完整的分析运营商获取IMSI号逻辑. 1,首先我们要判断手机的平台. 1.1,判断手机是否MTK平台 1 ...

  10. thinkphp中session跨域问题

    问题描述 <thinkphp实现短信验证注册>中,小编不止记录了短信验证码的实现方法,同时还记录了图片验证码的实现方法. 本地使用,一切正常:后端项目和前端项目都部署到服务器,一切正常:后 ...