Linux中使用ipvsadm配置LVS集群的基本方法

   LVS集群有DR、TUN、NAT三种配置模式,可以对www服务、FTP服务、MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置。

  一、 Director Server的配置

  在Director Server上配置LVS负载均衡集群,有两种方法:

  a. 通过ipvsadm命令行进行配置

  b. 通过Redhat提供的工具piranha来配置LVS

  通过ipvsadm命令行方式配置LVS

  安装IPVS后,就可以配置LVS集群了,首先在Director Server上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务,执行如下命令:

  复制代码

  代码如下:

  [root@localhost ~]#ifconfig eth0:0 192.168.60.200 broadcast 192.168.60.200 netmask 255.255.255.255 up

  此处在eth0设备上绑定了一个虚拟设备eth0:0,同时设置了一个虚拟IP是192.168.60.200,也就是上面我们规划的IP地址,然后指定广播地址也为192.168.60.200,需要特别注意的是,这里的子网掩码为255.255.255.255。

  然后给设备eth0:0指定一条路由,执行如下指令:

  代码如下:

  [root@localhost ~]#route add -host 192.168.60.200 dev eth0:0

  接着启用系统的包转发功能,从而使系统充当路由器,执行如下指令:

  代码如下:

  [root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward

  指令中,参数值为1时启用ip转发,为0时禁止ip转发。其实在DR模式中,开启系统的包转发功能不是必须的,而在NAT模式下此操作是必须的。

  然后开始配置ipvs,执行如下操作:

  代码如下:

  [root@localhost ~]#ipvsadm -C

  [root@localhost ~]#ipvsadm -A -t 192.168.60.200:80 -s rr -p 600

  [root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g

  [root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 -g

  上面操作中,第一行是清除内核虚拟服务器列表中的所有记录,第二行是添加一条新的虚拟IP记录。这个新的IP是192.168.60.200,同时指定 持续服务时间为600秒。第三、四行是在新加虚拟IP记录中添加两条新的Real Server记录,并且指定LVS 的工作模式为直接路由模式。

  最后,启动LVS服务,执行如下操作:

  代码如下:

  [root@localhost ~]#ipvsadm

  这样,LVS在Director Server上的配置就完成了。

  为了管理和配置的方便,可以将上面的操作写出一个脚本文件,脚本内容如下:

  代码如下:

  #!/bin/bash

  VIP=192.168.60.200

  RIP1=192.168.60.132

  RIP2=192.168.60.144

  GW=192.168.60.1

  # set the Virtual IP Address

  /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  /sbin/route add -host $VIP dev eth0:0

  echo "1" >/proc/sys/net/ipv4/ip_forward

  #Clear IPVS table

  /sbin/ipvsadm -C

  #set LVS

  /sbin/ipvsadm -A -t $VIP:80 -s rr -p 600

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

  #Run LVS

  /sbin/ipvsadm

  #end

  也可以写成可启动与停止的服务脚本,脚本内容如下:

  代码如下:

  #!/bin/sh

  # description: Start LVS of Director server

  VIP=192.168.60.200

  RIP1=192.168.60.132

  RIP2=192.168.60.144

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

  case "$1" in

  start)

  echo " start LVS of Director Server"

  # set the Virtual IP Address and sysctl parameter

  /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  echo "1" >/proc/sys/net/ipv4/ip_forward

  #Clear IPVS table

  /sbin/ipvsadm -C

  #set LVS

  /sbin/ipvsadm -A -t $VIP:80 -s rr -p 600

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g

  /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g

  #Run LVS

  /sbin/ipvsadm

  ;;

  stop)

  echo "close LVS Directorserver"

  echo "0" >/proc/sys/net/ipv4/ip_forward

  /sbin/ipvsadm -C

  /sbin/ifconfig eth0:0 down

  ;;

  *)

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

  exit 1

  esac

  将此脚本命名为lvsDR文件,然后把文件放到/etc/init.d下,执行:

  代码如下:

  [root@localhost ~]#chomd 755 /etc/init.d/lvsDR

  最后可以通过下面命令启动或停止LVS服务:

  代码如下:

  service lvsDR {start|stop}

  到此为止,命令行方式配置Director Server完毕。

  二、Real server 的配置

  在lvs的DR和TUn模式下,用户的访问请求到达真实服务器后,是直接返回给用户的,而不再经过前端的Director Server,因此,就需要在每个Real server节点上增加虚拟的VIP地址,这样数据才能直接返回给用户,增加VIP地址的操作可以通过创建脚本的方式来实现,创建文件/etc /init.d/lvsrs,脚本内容如下:

  代码如下:

  #!/bin/bash

  VIP=192.168.60.200

  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up

  /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

  echo “1″ >/proc/sys/net/ipv4/conf/all/arp_ignore

  echo “2″ >/proc/sys/net/ipv4/conf/all/arp_announce

  sysctl -p

  #end

  此操作是在回环设备上绑定了一个虚拟IP地址,并设定其子网掩码为255.255.255.255,与Director Server上的虚拟IP保持互通,然后禁止了本机的ARP请求。

  PS:ipvsadm命令的用法和格式如下:

  ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]

  ipvsadm -D -t|u|f virtual-service-address

  ipvsadm -C

  ipvsadm -R

  ipvsadm -S [-n]

  ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port

  [-g|i|m] [-w weight]

  ipvsadm -d -t|u|f service-address -r server-address

  ipvsadm -L|l [options]

  ipvsadm -Z [-t|u|f service-address]

  ipvsadm --set tcp tcpfin udp

  ipvsadm --start-daemon state [--mcast-interface interface]

  ipvsadm --stop-daemon

  ipvsadm -h

  命令选项解释:

  有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可以。

  -A --add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。

  -E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。

  -D --delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。

  -C --clear 清除内核虚拟服务器表中的所有记录。

  -R --restore 恢复虚拟服务器规则

  -S --save 保存虚拟服务器规则,输出为-R 选项可读的格式

  -a --add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器

  -e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录

  -d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录

  -L|-l --list 显示内核虚拟服务器表

  -Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)

  --set tcp tcpfin udp 设置连接超时值

  --start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是aster 或是backup。在这个功能上也可以采用keepalived 的VRRP 功能。

  --stop-daemon 停止同步守护进程

  -h --help 显示帮助信息

  其他的选项:

  -t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]

  -u --udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]

  -f --fwmark-service fwmark 说明是经过iptables 标记过的服务类型。

  -s --scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默认的调度算法是: wlc.

  -p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。

  -M --netmask netmask persistent granularity mask

  -r --real-server server-address 真实的服务器[Real-Server:port]

  -g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)

  -i --ipip 指定LVS 的工作模式为隧道模式

  -m --masquerading 指定LVS 的工作模式为NAT 模式

  -w --weight weight 真实服务器的权值

  --mcast-interface interface 指定组播的同步接口

  -c --connection 显示LVS 目前的连接 如:ipvsadm -L -c

  --timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout

  --daemon 显示同步守护进程状态

  --stats 显示统计信息

  --rate 显示速率信息

  --sort 对虚拟服务器和真实服务器排序输出

  --numeric -n 输出IP 地址和端口的数字形式

时间: 2024-12-22 12:50:30

Linux中使用ipvsadm配置LVS集群的基本方法的相关文章

全是干货---Linux 高可用(HA)集群基本概念详解

http://www.linuxidc.com/Linux/2013-08/88522.htm 高可用集群的衡量标准    HA(High Available), 高可用性群集是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的.工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性.于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%   具体HA衡量标准: 99% 一年宕机时间不超

Windows Server 2003 下配置 MySQL 集群(Cluster)教程

  这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本文先是讲解了原理知识,然后给出详细配置步骤和操作方法,需要的朋友可以参考下 MySQL 群集是 MySQL 适合于分布式计算环境的高可用.高冗余版本.它采用了 NDB Cluster 存储引擎,允许在 1 个群集中运行多个 MySQL 服务器.在 MySQL 5.0 及以上的二进制版本中,以及与最新的 Linux 版本兼容的 RPM 包中提供了该存储引擎. MySQL 群集是一种技术,

《Hadoop实战第2版》——2.4节安装和配置Hadoop集群

2.4 安装和配置Hadoop集群 2.4.1 网络拓扑 通常来说,一个Hadoop的集群体系结构由两层网络拓扑组成,如图2-3所示.结合实际应用来看,每个机架中会有30~40台机器,这些机器共享一个1GB带宽的网络交换机.在所有的机架之上还有一个核心交换机或路由器,通常来说其网络交换能力为1GB或更高.可以很明显地看出,同一个机架中机器节点之间的带宽资源肯定要比不同机架中机器节点间丰富.这也是Hadoop随后设计数据读写分发策略要考虑的一个重要因素. 2.4.2 定义集群拓扑 在实际应用中,为

使用虚拟机在 Oracle Enterprise Linux 上免费试用 Oracle 真正应用集群 10g 第 2 版

修订者Wilson注: 为了方便初学者更好地完成本实验,Wilson对本文进行了若干注释 本文所需要的VMware server 1.0.3 注册码是: 注册码1: 98XY4-54VA4-4216V-4PDZ6 注册码2: WH0M5-XW50J-WA4FU-4MTZ3 此外,同学们还应该下载一个FTP客户端工具用于把各种软件从Windows主机传送到Linux虚拟机当中.最好该工具支持ssh2 over ftp协议的,推荐使用FileZilla: http://filezilla.sourc

Kafka详解二、如何配置Kafka集群

Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置 单节点:一个broker的集群 单节点:多个broker的集群 多节点:多broker集群 一.单节点单broker实例的配置 1. 首先启动zookeeper服务      Kafka本身提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在kafka/config/目录下),首先进入Kafka的主目录(可通过 whereis kafka命令查找到):      [roo

LVS集群的体系结构

LVS集群的体系结构,构建强壮的体系结构里负载均衡层.真实服务器层.后端共享存储层都是相辅相成 LVS集群的体系结构 LVS集群的体系结构如图9 所示 ,这里将它划分成三层,一个完整的LVS负载均衡项目,构建强壮的体系结构里负载均衡层.真实服务器层.后端共享存储层都是相辅相成,必不可少的部分. 软件工具的选择与优点 LVS优势 使用普通的服务器 + 开源软件,顶替昂贵的商业硬件设备,节省开销,特别是为在创业发展中的公司有效节约成本.LVS这种集群技术可以用最少的投资获得接近于大型主机的性能. L

Linux下安装memcached之Tomcat7集群

这两天,在捣鼓负载均衡的问题,使用的是memcached做session存储.但是你造吗?居然没有成功,都硕失败是成功之母,我想我快成功了. 安装环境 centos 6.5,apache-tomcat-7.0.63,Nginx memcached介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

[本文转载自kafka入门:简介.使用场景.设计原理.主要配置及集群搭建] 问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根本原因是什么? 一.入门     1.简介     Kafka is a distributed,partitioned,replicated commit logservi

运维小知识之nginx---nginx配置Jboss集群负载均衡

运维小知识之nginx---nginx配置Jboss集群负载均衡            背景          紧接着上一篇博客<运维小知识---CentOS6.5安装nginx配置nginx sticky>安装完成之后剩下的工作就是配置了,其实如果我们想要去做负载均衡session共享是一个绕不过去的问题,而解决session共享的方法有很多,我这里介绍的事使用nginx sticky,方便易用.            具体配置          由于目前的项目中会出现什么情况还不清楚,所以