加载中…
个人资料
黄炳哲
黄炳哲
  • 博客等级:
  • 博客积分:0
  • 博客访问:17,735
  • 关注人气:14
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

FreeBSD6.1 +CARP+IPVS双机热备份负载均衡

(2008-02-23 14:59:41)
标签:

杂谈

分类: 技术文章

FreeBSD6.1 +CARP+IPVS双机热备份负载均衡

作者 @kang

经过一个星期的找资料….测试….找资料….再测试……,终于测试成功Freebsd6.1+IPVS+CARP,实现双机热备份和负载均衡功能。其中:

IPVS: 实现负载均衡功能

CARP: 实现双机热备份

一 系统环境

FreeBSD 6.1 Release 最小化安装(完全安装也可以) + Kernel Source (ALL)

SRV01 192.168.2.133 255.255.255.0 (双机热备 主)

SRV02 192.168.2.130 255.255.255.0 (双机热备 辅)

Share IP 192.168.2.144 255.255.255.0 (主辅机器共享)

二 安装过程

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

以上操作在srv02上同样做一遍

三 具体配置

CARP 部分 (如果只需双机备份功能只配这部分就可以了)

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

 

IPVS 部分

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 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

srv01# ipvsadm –A –t 192.168.2.144:22 -s rr

srv01# ipvsadm -a -t 192.168.2.144:22 -r 192.168.2.133:22 –g

srv01# ipvsadm -a -t 192.168.2.144:22 -r 192.168.1.130:22 -g

这里我只测试了http(80)和ssh(22)服务,其它的服务配置方法一样。

以上操作在srv02上同样做一遍

清除 IPVS配置命令如下:

srv01# ./ipvsadm -C

srv01# kldunload ip_vs_rr

srv01# kldunload ipvs

四 测试

Srv01# ifconfig

sk0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::217:31ff:fe62:be1b%sk0 prefixlen 64 scopeid 0x1

inet 192.168.2.133 netmask 0xffffff00 broadcast 192.168.2.255

ether 00:17:31:62:be:1b

media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)

status: active

plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

inet6 ::1 prefixlen 128

inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3

inet 127.0.0.1 netmask 0xff000000

carp0: flags=49<UP,LOOPBACK,RUNNING> mtu 1500

inet 192.168.2.144 netmask 0xffffff00

carp: MASTER vhid 1 advbase 1 advskew 0

Srv02# ifconfig

rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500

options=8<VLAN_MTU>

inet6 fe80::217:31ff:fe62:be1b%sk0 prefixlen 64 scopeid 0x1

inet 192.168.2.130 netmask 0xffffff00 broadcast 192.168.2.255

ether 00:17:31:62:be:1b

media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)

status: active

plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> mtu 1500

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

inet6 ::1 prefixlen 128

inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3

inet 127.0.0.1 netmask 0xff000000

carp0: flags=49<UP,LOOPBACK,RUNNING> mtu 1500

inet 192.168.2.144 netmask 0xffffff00

carp: BACKUP vhid 1 advbase 1 advskew 100

从ifconfig结果可以看到srv01 为master,srv02为backup.

IPVS 测试

客户端访问 http://192.168.2.144 时,不停刷新web页面时,web页面会在srv01,srv02上切换(为使切换效果明显srv01,srv02用内容不同的主页),说明负载均衡功能已成功。

客户端访问 192.168.2.144:22 (ssh) 每次连接一台不同Server(srv01,srv02)。

CARP 测试

用ssh 到 192.168.2.144 可以看到主机名应为 srv01 。

在客户端上ping 192.168.2.144 –t 拔除 srv01 的网线,在丢失1个包后重新连通。

再次ssh 到 192.168.2.144 可以看到主机名应为 srv02,并且srv02自动提升为Master。

当重新连上srv02的网线时,srv02自动降为Backup。

这时说明双机热备份功能已经成功。

0

阅读 收藏 喜欢 打印举报/Report
后一篇:100 FreeBSD Tips
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有