lvs
arp 3层协议
arp -a
arp -d
arp -a (linux,windows)
arp cache表双刃剑
1、减少广播风暴
2、arp 欺骗
arp 生产环境问题与解决办法
1、arp欺骗,违造mac-ip,网关的伪造。
高可用性arp cache 清空。
lvs+keeplived架构
culter:利用高速通信网络组成的计算机系统,每个节点都是一个进程。
集群:
lbc(负载均衡),lvs,nginx,haproxy,lighttpd
hac(高可用性),keepalived,heartbeat
lvs 只可以在unix上,节点可以是windows
ipvsadmin,keepalived管理工具
ipvs 实现调度
lvs 负载均衡技术是linux内核实现。
lvs术语
vip (给客户提供服务的IP)
rip(real servers ip)
dip(director ip address),物理网卡iP地址
cip(client ip address)
lvs 3种模式
nat
tun
dr
dr 模式*
是通过改写请求目标mac地址,将请求发给真实服务器,而真实服务器将响应后的处理结果直接返给客户端用户。
vip对应的mac改成rsmac
cip-vip-vip改变rmac-绑定(lo:vip;arp抑制)
好处:访问量大
rs上绑定
只改变mac地址,不会改port
dr模式效率高,但配置也麻烦。
nat 模式(不是很常用)
1、将请求报文和响应报文,通过lb地址重写然后转发给内部服务器,报文返回时改写成原来的用户请求地址。
2、只要在lb上配置wan IP即可,lb也要有私有lan内物理网卡地址
3、每rs网关必须是lb内网关
4、lb访问量大时不行的,最多10-20个节点。
5、nat模式与ip的转换如,请求10.0.0.1:80可以调度到rs上的8080(DR与tun不具备)
6、要开启iptables 的forward功能。
tun 模式(仅仅了解)
in:增加1个IP头。
lvs 的调度算法
固定高度方法:rr(轮训,rs性能相关不大的时候)
wrr(加权轮盾,性能好就多做点)
dh(目地)
sh (源hash)
动态
lc(最小连接数)
wcl(连接数少时,让谁来处理,依据状成态)
lvs 常用算术
http,mail,mysql
a.rr
b.wlc
c.wrr
lvs 实验
lvs:10.0.0.7(lb)
rs1:10.0.0.8
rs2:10.0.0.9
lvs 的安装
1.2.4
1.2.6(centos 6.X)
1、lsmod|grep ip_vs(内核支持调度)
ln -s /usr/src/kerner/2.6 /usr/src/linux
ll /usr/src/linux
2、安装lvs依赖的包
yum install -y wget make kernel-devel gcc gcc-c++ libnl* libpopt* popt-static
3、ln -sv /usr/src/kernels/2.6.32-573.8.1.el6.x86_64 /usr/src/linux
4、下载并安装lvsadmin
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
tar xf ipvsadm-1.26.tar.gz
cd ipvsadm
make
make install
报错:err
make[1]:** [libipvs.o] error 1
soluction: yum install libnl* libpopt* popt-static
5、内核加载
lsmod | grep ip_vs
modprobe ip_vs(/sbin/ipvsadm)
6、手动配置lvs转发
vip 配置
#ifconfig eth1:0 10.0.0.10/24 up
#ipvsadm --help
#ipvsadm --set 30 5 60 (tcp tcpfin udp)
#ipvsadm -A -t 10.0.0.10:80 -s rr -p 20 --添加一个ipvs虚拟服务,-t 指定IP:Port -s,轮询算法 -p 保持20s
#ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.8 -g -w 1
#ipvsadm -a -t 10.0.0.10:80 -r 10.0.0.9 -g -w 1
#ipvsadm -L -n 来查看rs-
7、rs配置好
8、绑定ip
rs1#ifconfig lo:0 10.0.0.10/32 up
rs2#ifconfig lo:0 10.0.0.10/32 up
#route add -host 10.0.0.10 dev lo
9、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
10、进行测试