设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
Linux 发行版讨论区 —— LinuxSir.cn
›
Slackware Linux
›
slackware+lvs实现NAT方式的负载平衡Cluster
返回列表
查看:
2721
|
回复:
2
slackware+lvs实现NAT方式的负载平衡Cluster
[复制链接]
babo
babo
当前离线
积分
1259
IP卡
狗仔卡
发表于 2005-5-22 03:42:44
|
显示全部楼层
|
阅读模式
一篇用slackware+lvs架势负载平衡集群的实例
文章刚刚在我的站点写好。因为内容比较多还有很多图片,所以先给大家个链接看看。
等我明天有时间,就给贴过来。
文章链接如下
http://www.slack.cn/modules/wordpress/index.php?p=15
作者:babo
主页:
slackware中文社区
已经把文章贴过来了,图弄的不好,大家多包涵
最近一直在弄Linux的集群。这篇文章这是一个开始,还有很多功能没有实现。最基本的负载平衡功能是有了。
使用的系统和软件:
slackware 10.1 Linux系统
LVS 的ipvsadm-1.21-11.tar.gz
如何获得软件:
slackware如何获得可以参考下面地址
http://www.slack.cn/modules/wordpress/index.php?p=6
ipvsadm可以从下面地址下载,但要注意和内核版本相对
http://www.linuxvirtualserver.org/software/ipvs.html#kernel-2.4
架设集群环境
我的集群环境是在自己的机器上用VMware模拟出来的4个linux架设而成的。
真实主机配置: 2.53G的cpu、512M内存和一块网卡
模拟主机配置: cpu一样,64M内存
网络结构如下
图中四台主机全部用VMware 5虚拟,其中只有负载平衡一台是双网卡。
建立第一台Linux虚拟机(用来作负载平衡的这台,以后就较这台为VS)
打开虚拟机后,点击File菜单中的new,在弹出的菜单选择Virtual Machine。如下图
在弹出的窗口选择“下一步”按钮,然后在弹出的窗口选择Typical单选框后,点下一步。如下图
接着在弹出的窗口Guest operating system项选择Linux,在Version的下拉列表中选择Other Linux 2.4.x kernel。选好后点“下一步”按钮。如下图
在接下来弹出的窗口中Virtual machine name项添入vs,至于Location项选择自己硬盘空间大的盘就可以了。最后就一路“下一步”到虚拟机建立出来。
建立出虚拟机后我们在此虚拟机的界面选择左面的edit virtual maching settings(下图用红笔圈出)来设置虚拟机的硬件。如下图
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
注册
x
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
babo
babo
当前离线
积分
1259
IP卡
狗仔卡
楼主
|
发表于 2005-5-22 10:05:43
|
显示全部楼层
将多余的硬件删掉,最终如下图现实
双击上图左边的Memory项调整内存大小为64M(因为我主机就512M,一共要建立4台虚拟主机,所以每台只能分给64M)。如下图
全部修改好后,就可以在这台虚拟机上安装slackware系统了。
如何安装slackware
请参考本站其他文章
建立两台real server(以后分别叫rs1和rs2)
将第一台虚拟机的vs目录,分别拷贝为rs1和rs2目录。然后修改目录里other24xlinux.vmx文件里面的displayName = “vs"一项为对应的displayName = “rs1″和displayName = “rs2″
然后保存。
建立客户机(以后叫client)
用同样的方法拷贝vs目录为client目录,然后修改other24xlinux.vmx文件里面的displayName = “vs"一项为displayName = “client”
这样就有了我们需要的四台机器了,因为全部拷贝的是vs这台,所以网卡的mac地址会冲突。所以我们要给每个虚拟机删掉现在的网卡,重新添加一块。然后再给vs添加上第二个网卡。
这样基本就完成了虚拟机的建立。
网络环境的建立
因为我们的负载平衡主机有两块网卡,一块负责连接内网(和rs1与rs2连接)。另一块负责连接外网(用来提供这个集群的虚拟IP,即VIP)。所以我们将vs的第一块网卡设置为属于vmnet1网络,如下图
这样vs的网卡设置完毕了(一个网卡连接一个网段)。
接着我们再把rs1和rs2的网卡设置为属于VMnet2网段,这样可以于vs的第二块网卡连接。
最后把client的网卡设置为属于VMnet1网段,这样可以于vs的第一块网卡连接。
到这里,网络环境设置完毕。
在VS上安装ipvsadm软件
关于如何安装ipvsadm请参考下面文章
http://www.slack.cn/modules/wordpress/index.php?p=10
配置VS实现负责平衡
1 用vi修改/etc/HOSTNAME文件
vi /etc/HOSTNAME
HOSTNAME内容如下
vs.test.com
复制代码
2 用vi修改/etc/rc.d/rc.inet1.conf文件
vi /etc/rc.d/rc.inet1.conf
修改后,内容如下
# /etc/rc.d/rc.inet1.conf
#
# This file contains the configuration settings for network interfaces.
# If USE_DHCP[interface] is set to “yes”, this overrides any other settings.
# If you don’t have an interface, leave the settings null ("").
# Config information for eth0:
IPADDR[0]="192.168.0.1″
NETMASK[0]="255.255.255.0″
USE_DHCP[0]="no”
DHCP_HOSTNAME[0]="”
# Config information for eth1:
IPADDR[1]="10.0.0.10″
NETMASK[1]="255.255.255.0″
USE_DHCP[1]="no”
DHCP_HOSTNAME[1]="”
复制代码
3用vi在/etc/rc.d/目录下创建一个rc.ipvsadm脚本。内容如下
#!/bin/sh
echo “0″>/proc/sys/net/ipv4/conf/all/send_redirects
echo “0″>/proc/sys/net/ipv4/conf/default/send_redirects
echo “0″>/proc/sys/net/ipv4/conf/eth0/send_redirects
ifconfig eth0:101 192.168.0.101 broadcast 192.168.0.255 netmask 255.255.255.0
route add default gw 192.168.0.254 netmask 0.0.0.0 metric 1
ipvsadm -C
ipvsadm -A -t 192.168.0.101:telnet -s rr
ipvsadm -a -t 192.168.0.101:telnet -r 10.0.0.11:telnet -m -w 1
ping -c 1 10.0.0.11
ipvsadm -a -t 192.168.0.101:telnet -r 10.0.0.12:telnet -m -w 1
ping -c 1 10.0.0.12
ipvsadm
复制代码
使这个脚本有执行权限
chmod +x /etc/rc.d/rc.ipvsadm
再在/etc/rc.d/rc.local里面加入/etc/rc.d/rc.ipvsadm来调用这个脚本。
配置rs1和rs2
1用vi在/etc/rc.d/目录下建立rc.lvs脚本,内容如下
route add default gw 10.0.0.10
netstat -rn
ping -c 1 10.0.0.10
ping -c 1 192.168.0.101
echo “0″>/proc/sys/net/ipv4/ip_forward
复制代码
用chmod +x /etc/rc.d/rc.ipvsadm来使这个脚本可以执行
在/etc/rc.d/rc.local里面添加rc.lvs调用这个脚本
2启用telnet服务
修改/etc/inetd.conf文件,将如下内容前面的#去掉
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
复制代码
然后重新起动vs、rs1、rs2
检测负责平衡
重新起动后,在VS这台机器上用ipvsadm命令就可以看到如下内容
IP Virtual Server version 1.0.12 (size="4096)<br ” />Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.110:telnet rr
-> 10.0.0.12:telnet Masq 1 0 0
-> 10.0.0.11:telnet Masq 1 0 0
复制代码
我们用client这台机器来telnet到192.168.0.101这台集群系统,看看是否实现了负责平衡。
我们首先telnet到192.168.0.101,然后到vs察看ipvsadm的变化,内容如下
IP Virtual Server version 1.0.12 (size="4096)<br ” />Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.110:telnet rr
-> 10.0.0.12:telnet Masq 1 1 0
-> 10.0.0.11:telnet Masq 1 0 0
复制代码
我们可以发现这次的telnet被分配到了10.0.0.12这台rs2上。接下来我们在client上用Ctrl+Alt+F2到另一个终端,继续telnet 到192.168.0.101这台集群系统。
这次ipvsadm的内容如下
IP Virtual Server version 1.0.12 (size="4096)<br ” />Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.110:telnet rr
-> 10.0.0.12:telnet Masq 1 1 0
-> 10.0.0.11:telnet Masq 1 1 0
复制代码
和我们的设想一样,这次的telnet请求被分配到了10.0.0.11这台rs1上了。
通过上面的测试证明我们的负责平衡集群正常工作了。
总结
这次配置这个负责平衡集群,完全是一种实验并没有实用价值。如果要在实际环境下使用,还要添加很多内容。
1、比如实际中不会对telnet来作负责平衡的,之所以用telnet只是为了测试方便。
2、如果实际用来对web作负责平衡,那么还要有一个共享存储设备来确保两台realserver上的web内容一致。
3、还要添加HA功能(负责平衡的机器一旦检测到realserver里面有机器down掉了,就不再把请求分配给它)。这个功能很重要,因为没有这个功能,一旦集群里面有服务器down掉了,负责平衡的机器还分配请求给它,就会造成客户的请求无法正常处理。
因为接触lvs实际不长加上我的水平有限,上面提到的三点我会继续学习,并在slackware下配置完成的。
希望可以给想在slackware下作集群的朋友一些提示。
转载请注明:
作者:babo
出处:
www.slack.cn
slackware中文社区
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
注册
x
回复
支持
反对
使用道具
举报
显身卡
fei2
fei2
当前离线
积分
76
IP卡
狗仔卡
发表于 2005-5-22 10:25:46
|
显示全部楼层
好贴-请加精。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Archlinux讨论区
Linux 程序设计专题讨论
开源软件专题讨论
BSD 讨论专题
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表