之前一直使用nginx做负载均衡,没有使用过lvs,趁着年假有点时间赶紧学习一下充充电。
一、lvs-net 模式实践
1.准备3台centos5.6 虚拟机
其中:
centos作为DS(DirectorServer 负载均衡服务器),双网卡,IP配置如下:
centos_2 ,centos_3为RS(RealServer),IP配置如下:
服务器名称 |
IP |
作用 |
Centos |
Eth0:192.168.184.135 Eth1:10.0.0.1 |
负载均衡器 |
VIP |
192.168.184.100 |
虚拟IP(对外开放),配置在负载均衡器上。 |
Centos_2 |
Eth0:10.0.0.11 |
应用服务器 |
Centos_3 |
Eth0:10.0.0.12 |
应用服务器 |
2.安装必要的软件
2.1在Centos上安装ipvsadm软件,并启用
测试是否成功:
2.2在Centos_2,Centos_3 上安装httpd,启动,并建立一个网页作为测试。
yum install httpd
service httpd start
vi /var/www/html/index.html
内容随便写。比如一个写:web 11,另一个写web12
3. 配置ipvsadm
创建脚本:lvsnet,并放到 /etc/init.d/目录下
#!/bin/bash #LVS script NAT VIP=192.168.184.100 RIP1=10.0.0.11 RIP2=10.0.0.12 case "$1" in start) echo "1">/proc/sys/net/ipv4/ip_forward /sbin/iptables -F /sbin/ipvsadm -C /sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -m /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -m /sbin/ipvsadm echo "start LVS of DirectorServer NAT" ;; stop) echo "0" > /proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ifconfig eth0:0 down echo "stop LVS of DirectorServer NAT" ;; *) echo "Usage: $0 {start|stop}" exit 1
esac |
4. 启动lvs 服务:
service lvsnet start
5.测试负载均衡效果:
6. 查看ipvsadm 负载统计:
负载分布很均匀。
二、lvs-dr 模式实践
1. 准备3台机器,ip规划如下:
服务器名称 |
IP |
作用 |
VIP |
192.168.184.9 |
虚拟IP(对外开放) |
Centos |
Eth0:192.168.184.10 |
负载均衡器 |
Centos_2 |
Eth0: 192.168.184.11 |
应用服务器 |
Centos_3 |
Eth0: 192.168.184.12 |
应用服务器 |
2. 在Centos机器上创建脚本 lvsdsdr,并放到/etc/init.d/目录下
#!/bin/bash #description: start LVS of Directorserver DR VIP=192.168.184.9 RIP1=192.168.184.11 RIP2=192.168.184.12 . /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of DirectorServer DR" /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 /sbin/ipvsadm -C /sbin/ipvsadm -A -t $VIP:80 -s rr /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g /sbin/ipvsadm ;; stop) echo " stop LVS of DirectorServer DR" echo "0" >/proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ifconfig eth0:0 down ;; *) echo "Usage: $0 {start|stop}" exit 1 esac |
运行脚本
chmod +x /etc/init.d/lvsdsdr
service lvsdsdr start
启动后网卡信息:
3.节点服务器配置
建立脚本 /etc/init.d/lvsrsdr
#!/bin/bash #description : start realserver DR VIP=192.168.184.9 . /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of RealServer DR" /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
;; stop) /sbin/ifconfig lo:0 down echo "close LVS of RealServer DR" 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 "Usage: $0 {start|stop}" exit 1 esac |
运行:
chmod+x lvsrsdr
service lvsrsdr start
把脚本复制到另一个节点上,两个节点操作完全一样
scp /etc/init.d/lvsrsdr 192.168.184.12:/etc/init.d/lvsrsdr
启动后网卡信息:
另一个节点:
4.测试负载均衡效果:
5.查看ipvsadm 负载统计: