当前位置: 移动技术网 > 科技>操作系统>Linux > Linux中使用ipvsadm配置LVS集群的基本方法

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

2018年05月08日  | 移动技术网科技  | 我要评论

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 地址和端口的数字形式

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网