以后服务器只用CentOS和Ubuntu。下午用redhat装个lvs装了一下午都没搞好,TNND的。果断用Ubuntu,不到两个小时就搞定了。
原文参见:

我用的虚拟机(虚拟了两张网卡,eth0做外网,eth1做局域网,一下都针对eth1做设置)
1.LVSServer ip:192.168.196.6
2.WebServer Apache ip:192.168.196.168
2.Webserver Nginx ip:192.168.196.188
VIP:192.168.196.100

1,配置LVS机器:
在ubuntu server 10.4 默认安装是没有安装ipvsadm软件包的,在网上看了很多教程,都要编辑内核,但现在2.6.32内核已经不需要再编辑了。
sudo apt-get install ipvsadm

安装IPVS后,就可以配置LVS集群了,首先在LVSServer上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务,执行如下命令:
sudo ifconfig eth1:0 192.168.196.100 netmask 255.255.255.255 broadcast 192.168.196.100

此处在eth1设备上绑定了一个虚拟设备eth1:0,同时设置了一个虚拟IP是192.168.196.100,也就是上面我们规划的IP地址,然后指定广播地址也为192.168.196.100,需要特别注意的是,这里的子网掩码为255.255.255.255。
然后给设备eth1:0指定一条路由,执行如下指令:
sudo route add -host 192.168.196.100 dev eth1:0

然后开始配置ipvs,执行如下操作:
sudo ipvsadm -C
sudo ipvsadm -A -t 192.168.196.100:80 -s wrr
sudo ipvsadm -a -t 192.168.196.100:80 -r 192.168.196.168:80 -g
sudo ipvsadm -a -t 192.168.196.100:80 -r 192.168.196.188:80 -g
sudo ipvsadm -S
上面操作中,第一行是清除内核虚拟服务器列表中的所有记录,第二行是添加一条新的虚拟IP记录。这个新的IP是192.168.196.100。这里rr表示ipvsadm的8种算法中的轮询,做实验选这个算法,效果比较明显。第三、四行是在新加虚拟IP记录中添加两条新的WebServer记录,并且指定LVS 的工作模式为直接路由模式。-g,就是lvs的三种模式中的LVS-DR模式。-i 就是遂道LVS-TUN.第五行是保存设置。参数意义可以通过命令查看:ipvsadm -h

接着启用系统的包转发功能,从而使系统充当路由器。

修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth0.send_redirects=1
查看效果:
#sudo sysctl -p

LVSServer设置基本完成,可以重启一下网卡看一下eth1:0是不是有了ip地址,是不是可以ping通.这种方式做的参数设置并没有保存到服务器文件里,服务器重启后设置都会丢失。最后我将采用自启动Shell脚本的方法解决这个问题。
2.WebServer的设置
WebServer的设置比较简单。
直接上命令,如下:
sudo ifconfig lo:0 192.168.196.100 netmask 255.255.255.255 broadcast 192.168.196.100
sudo route add -host 192.168.196.100 dev lo:0

修改/etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
#sudo sysctl –p
为什么要修改 sysctl.conf可以参考:
http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.arp_problem.html
专门讲解了关于LVS的 ARP ,也有专门讲解了在LVS-DR模式中ARP问题及如何去解决ARP问题,也有arp_ingnore,arp_announce具体的意思。要想深入学习LVS,必须要看这个LVS-HOWTO

分别将两个不同的页面内容放到两台WebServer机器上。

OK!设置完成,请通过http访问一下你的ip:192.168.196.100,多刷新几次,如果访问的页面内容不同,实验是成功。

后记:
由于对linux不熟悉,做LVSServer启动自动设置的时候也遇到了不少问题。
首先对网卡设置eth1:0如下:
auto eth1:0
iface eth1:0 inet static
address 192.168.196.100
netmask 255.255.255.255
broadcast 192.168.196.100
实现这条命令(sudo ifconfig lo:0 192.168.196.100 netmask 255.255.255.255 broadcast 192.168.196.100)

然后对其他的进行设置
由于对权限不熟悉,在终端运行命令的时候都需要sudo,以为shell脚本里也需要,结果起动不起来,让输入密码(悲剧啊,谁家服务器起来还要输密码才能用啊。)。经过运维同事的指点和很多次的试验(运维用的CentOS,对Ubuntu也不熟悉)终于搞定,其实脚本里不用sudo,脚本如下:

/etc/init.d/lvs.sh

#! /bin/sh

ipvsadm -C
route add -host 192.168.196.100 dev eth1:0
ipvsadm -A -t 192.168.196.100:80 -s wrr
ipvsadm -a -t 192.168.196.100:80 -r 192.168.196.168:80 -g
ipvsadm -a -t 192.168.196.100:80 -r 192.168.196.188:80 -g
ipvsadm -S

脚本写完后,要运行,又测试搞了半天,最开始写到porfile文件里,不对,后来写到/etc/init.d/rc.local的最后一行
......
......
sh /etc/init.d/lvs.sh

开机:破费(Perfect)...

Ubuntu下配置LVS【h】的更多相关文章

  1. 转[开发环境配置]在Ubuntu下配置舒服的Python开发环境

    在Ubuntu下配置舒服的Python开发环境 Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的 ...

  2. Ubuntu下配置C/C++开发环境

    在 Ubuntu 下配置 C/C++ 开发环境 转自:白巴的临时空间 Submitted by 白巴 on 2009-04-27 19:52:12. 学习笔记 虽然 Ubuntu 的版本已经是9.04 ...

  3. (4)Linux(ubuntu)下配置Opencv3.1.0开发环境的详细步骤

    Ubuntu下配置opencv3.1.0开发环境 1.最近工作上用到在Ubuntu下基于QT和opencv库开发应用软件(计算机视觉处理方面),特把opencv的配置过程详细记录,以供分享 2.步骤说 ...

  4. Ubuntu下配置python完成爬虫任务(笔记一)

    Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...

  5. [转]Ubuntu下配置NFS服务

    [转]Ubuntu下配置NFS服务  http://blog.163.com/liu8821031%40126/blog/static/111782570200921021253516/ Table ...

  6. Ubuntu下配置tftp服务

    Ubuntu下配置tftp服务 1.安装TFTP软件 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是客户端,tftpd-hpa是服务器端 2.建立t ...

  7. ubuntu下配置Apache

    ubuntu下配置Apache Apache的默认文档根目录是在Ubuntu上的/var/www目录 配置文件是/ etc/apache2/apache2.conf配置存储在的子目录在/etc/apa ...

  8. ubuntu 下配置Web服务器

    ubuntu 下配置Web服务器 1.切换管理员身份 终端/文本界面输入命令: su 根据提示输入密码 注: 如果不能使用su 点击查看如何启用su2.安装MySQL5 apt-get install ...

  9. CentOS 与Ubuntu 下配置IP地址

    1.CentOS配置方法如下: 用vi打开配置文件 [root@haha3 ~]#  vi /etc/sysconfig/network-scripts/ifcfg-eth0 写入以下配置 DEVIC ...

随机推荐

  1. php面向对象之数据隐藏

    什么是数据隐藏? 看到这个有的人会觉得挺不理解的.在前面的文章中,介绍类的时候,我们说定义变量用的关键词是public,但是不止这一个,还有public.private.protected.stati ...

  2. Laravel Repository Pattern

    Laravel Repository Pattern   The Repository Pattern can be very helpful to you in order to keep your ...

  3. 理解 __declspec

    “__declspec”是Microsoft c++中专用的关键字,它配合着一些属性可以对标准C++进行扩充.这些属性有:align.allocate.deprecated. dllexport.dl ...

  4. hdu 6183

    给出二维平面$opt1.$ 对点 $(x, y)$ 增减颜色 $c$,$opt2.$ 询问矩形 $(1, y_1), (x, y_2)$ 内出现过的颜色种数$x, y <= 1e6, c < ...

  5. Luogu4688 [Ynoi2016]掉进兔子洞 【莫队,bitset】

    题目链接:洛谷 我们知道要求的是\([l_1,r_1],[l_2,r_2],[l_3,r_3]\)的可重集取交的大小,肯定是要用bitset的,那怎么做可重集呢? 那就是要稍微动点手脚,首先在离散化的 ...

  6. 前端代码规范-Javascript

    命名规范 ECMAScript 规范中标识符采用驼峰大小写格式,驼峰命名法由小(大)写字母开始,后续每个单词首字母都大写.根据首字母是否大写,分为两种方式: Pascal Case 大驼峰式命名法:首 ...

  7. Go语言之快速排序

    package main import "fmt" func partition(array []int, i int, j int) int { //第一次调用使用数组的第一个元 ...

  8. Linux下MySQL的操作(最全)

    注意:这里以mariadb为例 启动mysql服务 systemctl start mariadb 登录mysql mysql -u root -p SQL语言分类 - 数据定义语言:简称[DDL]( ...

  9. Tkinter 之CheckButton复选框标签

    一.参数说明 语法 作用 Checkbutton(root,text='xxxx') 复选框显示的文本 Checkbutton(root,variable=id) 通过变量的值确定哪些复选框被选中 C ...

  10. anzhuang ruanjian

    makepkg -i https://github.com/arch4edu/arch4edu/wiki/Add-arch4edu-to-your-Archlinux Add arch4edu to ...