1、环境准备:
三台虚拟机:分配ip(注意lvs调度器对外提供服务的VIP ,另外两台保证web可以提供正常服务)
2、工作中常用的版本1.24 和 1.2.6,如果是centos5用1.24,如果是6用1.26 (lvs不需要用高版本)
3、lsmod命令――显示已载入系统的内核模块 lsmod 其实就是list modules的缩写。
LB配置:
4、首先解决依赖关系:yum install libnl* popt* -y
5、下载lvs ,注意此处使用的是centos6,完成后解压编译。
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar zxf ipvsadm-1.26.tar.gz
cd ipvsadm-1.26
make
make install
lsmod |grep ip_vs
/sbin/ipvsadm #?modprobe ip_vs
cd ../
6、查看结果lsmod |grep ip_vs
ip_vs 125220 0
libcrc32c 1246 1 ip_vs
ipv6 317340 78 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6
7、因为lvs基于内核的 ,所以:ln -s /usr/src/kernels/2.6.32-431.el6.x86_64/ /usr/src/linux
如果没有,可能是缺少:kernel-devel-这个包。
7、手动配置lvs之前最好看看帮助信息,这里简单注释一下,不过够用了。
--add-service -A (虚拟服务添加)
add virtual service with options
--add-server -a 指定节点
add real server with options
--tcp-service -t service-address 节点ip
service-address is host[:port]
--tcp-service -t 指定一个vip地址和端口
service-address
--save -S 指定算法
save rules to stdout
--persistent -p [timeout] 汇话保持
persistent service
指定模式:-g DR模式 -i TUN模式 -m NAT模式
-w权重
8、添加一个vip 和两个节点。
网卡设置:
ifconfig eth0:0 10.10.70.14/24 up
检查:ping 10.10.70.14
PING 10.10.70.14 (10.10.70.14) 56(84) bytes of data.
64 bytes from 10.10.70.14: icmp_seq=1 ttl=64 time=0.238 ms
64 bytes from 10.10.70.14: icmp_seq=2 ttl=64 time=0.040 ms
注:工作中要将这个vip要绑定在域名上。
linux ARP广播而进行新的地址解析。
具体命令:
/sbin/arping -I eth0 -c 3 -s 10.0.0.162 10.0.0.253
/sbin/arping -U -I eth0 10.0.0.162
清空所有配置:
ipvsadm -C
设置超时:ipvsadm --set 30 5 60 (可以不配)
vip添加 : ipvsadm -A -t 10.10.70.14:80 -s rr -p 20
节点添加: ipvsadm -a -t 10.10.70.14:80 -r 10.10.70.10 -g -w 1
ipvsadm -a -t 10.10.70.14:80 -r 10.10.70.11 -g -w 1
9、查看:ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.70.14:80 rr persistent 20
-> 10.10.70.11:80 Route 1 0 0
-> 10.10.70.11:80 Route 1 0 0
10、节点删除范例:ipvsadm -d -t 10.10.70.14:80 -r 10.10.70.12
vip删除范例 :ipvsadm -D -t 10.10.70.14:80
节点配置:
12、在两台节点服务器上绑定vip:
ifconfig lo:0 10.10.70.14/32 up
注意:
a)vip绑定在环回接口lo 设备上(其广播地址是其本身),子网掩码是255.255.255.255,保证不冲突;
b)把绑定的vip做成配置文件,例如:vi /etc/sysconfig/network-scripts/lo:0
c)RS节点自身提供服务的检查(DR不能端口转换)
d)排查的工具tcpdump 或 ping 例如:tcpdump i eth0 port 80
13、抑制arp相应:
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
14、完毕后测试,也可以使用watch -n 1 ipvsadm -L -n 在LB上查看。
查看:ipvsadm -L -n --stats --sort 等等。
注意了:上边的全部配置都是临时配置。~~~~!!! 解决办法:写脚本。
如下:
#!/bin/bash
. /etc/init.d/functions
VIP=10.10.70.14
PORT=80
RIP=(
10.10.70.11
10.10.70.10
)
start(){
ifconfig eth0:0 $VIP/24 up
route add -host $VIP dev eth0
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t $VIP:$PORT -s rr -p 20
for ((i=0;i<${#RIP[*]};i++))
do
ipvsadm -a -t $VIP:$PORT -r ${RIP[$i]} -g -w 1
done
}
stop(){
ipvsadm -C
ifconfig eth0:0 down
route del -host $VIP dev eth0
}
case "$1" in
start)
start
echo "yes"
;;
stop)
stop
echo "no"
;;
restart)
echo "restart ok"
;;
*)
echo "USAGE:$0 {STOP|START|RESTAT}"
esac
本文出自 “思想大于技术” 博客,谢绝转载!