一般2.6.10以上内核版本都已经自带了ipvsadm,故不需要安装。

Ipvs 1.25编译

ipvsadm-1.25编译不过

  • 去掉netlink库的依赖:去掉libipvs/Makefile的CFLAGS += -DLIBIPVS_USE_NL,去掉Makefile的LIBS += -lnl。
  • 需要popt库解析命令行,在这里下载并安装http://freshmeat.net/projects/popt/.。

DR方式的LB

配置LVS主节点

1.修改proc参数

#vi /etc/sysctl.conf

net.ipv4.ip_forward = 1 
net.ipv4.conf.all.send_redirects = 0 
net.ipv4.conf.default.send_redirects = 0 
net.ipv4.conf.eth0.send_redirects = 0 
net.ipv4.conf.eth1.send_redirects = 0

#sysctl –p

2. 添加负载均衡规则

#cat > /etc/sysconfig/ipvsadm

ipvsadm -A -t 192.168.100.20:80 -s rr 
ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.116:80 -g -p60 
ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.117:80 -g -p60

如果添加realserver时设置了-p 60参数,则同一个客户端每次刷新页面时,连接的是同一个real server,否则会轮流更替,但我加了-p 参数会报错。 
设置连接保持(-p)参数是为了确保ftp、ssl等连接的稳定和可靠性。

3.添加虚拟IP地址

(比较郁闷的是,下面这个设置在机器上不生效,需要手动执行: ifconfig eth0:1 192.168.100.20 broadcast 192.168.100.255 netmask 255.255.255.0 )

#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1

DEVICE=eth0:0 
BROADCAST=192.168.100.255 
IPADDR=192.168.100.20 
NETMASK=255.255.255.0 
ONBOOT=yes 
TYPE=Ethernet

#service network restart

4. 保存规则并设置服务状态

#ipvsadm-save > /etc/sysconfig/ipvsadm 
#chkconfig --level 35 ipvsadm on 
#service ipvsadm start

配置各Real Server节点

1. 修改proc参数

#vi /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1 
net.ipv4.conf.all.arp_announce = 2 
net.ipv4.conf.lo.arp_ignore = 1 
net.ipv4.conf.lo.arp_announce = 2

#sysctl –p

2.添加虚拟地址及路由记录

#vi /opt/add_vip.sh

#!/bin/bash 
ifconfig lo:0 192.168.100.20 netmask 255.255.255.255 up 
route add -host 192.168.100.20 dev lo:0

#chmod +x /opt/add_vip.sh 
#/opt/add_vip.sh 
#echo "/opt/add_vip.sh"  >> /etc/rc.local

NAT方式的LB

在同一个网段内设置,没有成功,网上说需要设置iptables-nat,但同一个网段需要么?

验证LVS

在LVS主节点上执行

ipvsadm -L -n

LVS源码分析

LVS源码在下面网站中有详细分析,写得非常不错,如果想深入研究的,建议看一下。

http://www.yubo.org/ipvs/index.php

这儿有张netfilter的框架图,也值得看看

http://zh.linuxvirtualserver.org/files/linux2.6.32.2netfilter.JPG

最新文章

  1. Spark Streaming+Kafka
  2. Mysql 相关字段类型长度
  3. 修改mysql某一键为自增键
  4. reinstall_xbt: Linux中如何查看文件的最初创建时间
  5. 查看SqlServer的内存使用情况
  6. linux动态库默认搜索路径设置的三种方法
  7. prefuse学习(一)用非数据库连接和xml的方式读入数据
  8. C#.NET Winform 快速开发平台
  9. shadow projection
  10. Hibernate基础学习(七)—检索方式
  11. Visual Studio 自定义项目模板
  12. [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习使用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
  13. 4.2 PCIe体系结构的组成部件
  14. 新手上路、安装JDK教程
  15. python类与对象-如何让对象支持上下文管理
  16. 01_Mybaits逆向工程maven版
  17. 表情存储异常--mybatis抛出异常(java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1)
  18. Linux 内核的定时机制实验
  19. 算法笔记_232:提取拼音首字母(Java)
  20. Ubuntu Server对OpenStack的支持

热门文章

  1. 达梦数据库CAST与ROUND函数
  2. JDK7集合框架源码阅读(四) LinkedHashMap
  3. 洛谷 P1506 拯救oibh总部【DFS/Flood Fill】
  4. localize by triangle note
  5. (转)Limboy:自学 iOS 开发的一些经验
  6. 为Chrome多账户添加单独的快捷方式
  7. account for 与led to和result in的区别
  8. Jakarta雅加达项目简介
  9. 批量删除Redis中的key
  10. windows 用wireshark抓本机的包