免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: @kang
打印 上一主题 下一主题

[FreeBSD] FreeBSD6.x(7.x) +CARP+IPVS双机热备份负载均衡Ver1.0 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2006-12-08 11:48 |显示全部楼层
Sorry,剛才IE有點問題,連續帖了3次。

论坛徽章:
0
22 [报告]
发表于 2006-12-09 08:26 |显示全部楼层

IPVS-Readme

關於IPVS,我也只是參考了Readme,如下:

LVS on FreeBSD Version 0.4.0

Install:
   1.        Patch the FreeBSD kernel:
          cp patch/OS-RELEASE/* /usr/src;
          cd /usr/src;
          patch -p0 < uipc_socket.c.patch
          patch -p0 < ip_input.c.patch
          patch -p0 < socketvar.h.patch
          patch -p0 < sys_conf_options.patch
          patch -p0 < sys_i386_conf_GENERIC.patch
   2.        Rebuilding FreeBSD kernel:
          cd /usr/src/sys/arch/i386/conf;
          config GENERIC;
          cd ../compile/GENERIC;
          make depend;
          make;
          make install;
   3.        Compile ipvs module:
          cd ipvs/
          make;
          cd ipvsadm/
          make install;
   4.        Compile ipvs scheduler module:
          cd ipvs/
          cd schedulers/
           cd SCHEDULER-NAME/
          make
   5.        Reboot with new kernel:
          reboot;

Let's assume your cluster has the following configuration:
Workstation with address:192.168.1.23 runs as dispatcher(FE:front end),
Workstations with address:192.168.1.33 and 192.168.1.38 run as real server(BE:back
end).
Thay all share address:192.168.1.36,which is saw by client.

Start:

Assume using 'rr' schedule algorithm(optional: dh, lblc, lblcr, lc, nq, rr,
sed, sh, wlc, wrr).

LVS/DR:
   1.        kldload ./ipvs.ko
   2.        kldload schedulers/rr/ip_vs_rr.ko
   3.        ./ipvsadm -A -t 192.168.1.36:80 -s rr
   4.        ./ipvsadm -a -t 192.168.1.36:80 -r 192.168.1.33:80 -g
   5.        ./ipvsadm -a -t 192.168.1.36:80 -r 192.168.1.38:80 -g

LVS/TUN:
   1.   kldload ./ipvs.ko
   2.        kldload schedulers/rr/ip_vs_rr.ko
   3.   ./ipvsadm -A -t 192.168.1.36:80 -s rr
   4.   ./ipvsadm -a -t 192.168.1.36:80 -r 192.168.1.33:80 -i
   5.   ./ipvsadm -a -t 192.168.1.36:80 -r 192.168.1.38:80 -i

Stop:
   1.        ./ipvsadm -C
   2.        kldunload ip_vs_rr
   3.        kldunload ipvs

Noteo not use other commands of ipvsadm,for maybe it is not implemented.        
Feedback
--------
Welcome your comments, bug reports, bug fixes, and ideas

Thanks,

Li Wang
dragonfly@linux-vs.org

论坛徽章:
0
23 [报告]
发表于 2006-12-09 11:57 |显示全部楼层
有時間試下ucarp。

论坛徽章:
0
24 [报告]
发表于 2006-12-14 19:03 |显示全部楼层
原帖由 硬-盘 于 2006-12-14 14:15 发表

请问楼主,这句有何作用?谢谢。

以下命令
srv01# kldload /boot/modules/ipvs.ko
srv01# kldload /boot/modules/rr/ip_vs_rr.ko
srv01# ipvsadm –A –t 192.168.2.144:80 -s rr
srv01# ipvsadm -a -t  ...

sysctl net.inet.carp.preempt=1
是指:允許carp搶占,就是說當某台主機的物理網卡故障(down)時,carp interfaces的advskew值將變為240,該主機的角色將被其他主機代替。

[ 本帖最后由 @kang 于 2006-12-14 19:48 编辑 ]

论坛徽章:
0
25 [报告]
发表于 2006-12-14 19:14 |显示全部楼层
srv01# kldload /boot/modules/ipvs.ko
srv01# kldload /boot/modules/rr/ip_vs_rr.ko
以上行為加載ipvs相關模塊,如果不加載則ipvsadm命令無法使用。

srv01# ipvsadm –A –t 192.168.2.144:80 -s rr          #在虛擬服務器表中添加一條新的虛擬服務器記錄(httpd服務)
srv01# ipvsadm -a -t 192.168.2.144:80 -r 192.168.2.133:80 -g
srv01# ipvsadm -a -t 192.168.2.144:80 -r 192.168.1.130:80 –g
以上三行為:在虛擬服務器表中添加一條新的真實服務器記錄,該服務為httpd(80 port)服務。以實現httpd的負載均衡。

srv01#ipvsadm -l            #設定好以後查看虛擬服務器情況。

IP Virtual Server version 1.0.10 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.144:http rr
  -> srv01:http  Route   1      0          0         
  -> srv02:http  Route   1      0          0

[ 本帖最后由 @kang 于 2006-12-14 19:49 编辑 ]

论坛徽章:
0
26 [报告]
发表于 2006-12-14 19:34 |显示全部楼层
...机器重启后岂不又要重做?有没有办法让机器重启后自动执行以上命令?...

建立開機自啟動腳本如下:
srv01#vi /usr/local/etc/rc.d/LVS.sh    #srv01主機

#!/bin/sh

sysctl net.inet.carp.preempt=1
ifconfig carp0 create
ifconfig carp0 vhid 1 pass 123456 192.168.2.144/32 up
kldload /boot/modules/ipvs.ko
kldload /boot/modules/ip_vs_rr.ko
ipvsadm -A -t 192.168.2.144:80 -s rr
ipvsadm -a -t 192.168.2.144:80 -r 192.168.2.133:80 -g
ipvsadm -a -t 192.168.2.144:80 -r 192.168.2.130:80 -g

srv01#chmod 555 /usr/local/etc/rc.d/LVS.sh

srv02#vi /usr/local/etc/rc.d/LVS.sh    #srv02主機

#!/bin/sh

sysctl net.inet.carp.preempt=1
ifconfig carp0 create
ifconfig carp0 vhid 1 advskew 100 pass 123456 192.168.2.144/32 up
kldload /boot/modules/ipvs.ko
kldload /boot/modules/ip_vs_rr.ko
ipvsadm -A -t 192.168.2.144:80 -s rr
ipvsadm -a -t 192.168.2.144:80 -r 192.168.2.133:80 -g
ipvsadm -a -t 192.168.2.144:80 -r 192.168.2.130:80 -g

srv02#chmod 555 /usr/local/etc/rc.d/LVS.sh

论坛徽章:
0
27 [报告]
发表于 2006-12-14 19:59 |显示全部楼层

ipvsadm的用法和格式

ipvsadm的用法和格式如下:

ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface]
ipvsadm --stop-daemon
ipvsadm -h

命令选项解释:
命令选项长短格式具有相同的意思。在实际使用时,两种都可以。
-A --add-service 在虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器,每个服务为一条记录。
-E --edit-service 编辑虚拟服务器表中的一条虚拟服务器记录。
-D --delete-service 删除虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R选项可读的格式
-a --add-server 在虚拟服务器表里添加一条新的真实服务器记录。
-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示虚拟服务器表
-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
--set tcp tcpfin udp 设置连接超时值
--start-daemon 启动同步守护进程。它后面可以是master或backup,用来说明LVS Router是master或是backup。在这个功能上也可以采用keepalived的VRRP功能。
--stop-daemon 停止同步守护进程
-h --help 显示帮助信息
其它的选项:
-t --tcp-service service-address 说明虚拟服务器提供的是tcp的服务
-u --udp-service service-address 说明虚拟服务器提供的是udp的服务
-f --fwmark-service fwmark 说明是经过iptables标记过的服务类型。
-s --scheduler scheduler 使用的调度算法,有这样几个选项rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
默认的调度算法是: wlc.
-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout的默认值为300秒。
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真实的服务器
-g --gatewaying 指定LVS的工作模式为直接路由模式(也是LVS默认的模式)
-i --ipip 指定LVS的工作模式为隧道模式
-m --masquerading 指定LVS的工作模式为NAT模式
-w --weight weight 真实服务器的权值
--mcast-interface interface 指定组播的同步接口
-c --connection 显示LVS目前的连接 如:ipvsadm -L -c
--timeout 显示tcp tcpfin udp的timeout值 如:ipvsadm -L --timeout
--daemon 显示同步守护进程状态
--stats 显示统计信息
--rate 显示速率信息
--sort 对虚拟服务器和真实服务器排序输出
--numeric -n 输出IP地址和端口的数字形式

论坛徽章:
0
28 [报告]
发表于 2006-12-21 20:31 |显示全部楼层
原帖由 caicheng1015 于 2006-12-20 16:42 发表

我按照你的文章,测试过后,怎么两台电脑全是MASTER呀,还有一个问题就是IPVS,如果在一台机器上加了IPVS命令后,是可以访问网站的,如果两台电脑全加了IPVS命令后,就不能访问网站了。

SRV01
srv01# sysctl net.inet.carp.preempt=1
srv01# ifconfig carp0 create
srv01# ifconfig carp0 vhid 1 pass password 192.168.2.144/24 up     #password随便输入,但srv01和srv02必需一致。
SRV02
srv02# sysctl net.inet.carp.preempt=1
srv02# ifconfig carp0 create
srv02# ifconfig carp0 vhid 1 advskew 100 pass yourpassword 192.168.2.144/24 up

注意红色部分,advskew 的值越大优先权越小默认为0。

论坛徽章:
0
29 [报告]
发表于 2006-12-21 20:33 |显示全部楼层
如果还是有问题,请把你的设置贴出来看看。

论坛徽章:
0
30 [报告]
发表于 2006-12-26 17:08 |显示全部楼层
原帖由 dcat1 于 2006-12-24 10:26 发表
unix# cd /usr/src/sys/i386/conf
unix# config LVS
LVS: unknown option "NF_SOCKOPT"

出錯原因是/usr/src/sys/kern/uipc_socket.c 文件中沒有包含 #include "opt_nfsockopt.h" 。
詳細如下:
a.在核心配置文件中添加对CARP的支持和options NF_SOCKOPT(ipvs需要) 选项
Srv01# cd /usr/src/sys/i386/conf/
Srv01# cp GENERIC LVS
Srv01# vi LVS
添加以下选项:
options                NF_SOCKOPT
device                 carp

b. Freebsd6.1 的uipc_socket.c中没有#include "opt_nfsockopt.h" ,需手动添加否则编译将出错。
vi /usr/src/sys/kern/uipc_socket.c
找到#include "opt_compat.h"这一行,在下面加上 #include "opt_nfsockopt.h"

c. 打ipvs for freebsd6.1补丁(patch)。
Srv01# cd /usr/ports/net/ipvs
Srv01# make patch-system         #具体说明可以查看当前目录下的Makefile

d. 编译核心
Srv01# cd /usr/src/sys/i386/conf
Srv01# config LVS
Srv01# cd ../compile/LVS
Srv01# make depend
Srv01# make
Srv01# make install
Srv01# reboot
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP