分类: LINUX
2006-08-09 11:43:32
现在,就可以用此服务器作为director服务器,为后端web服务器等作负载均衡了.如下:先为服务器增加虚拟ip地址192.168.1.130
然后将访问http服务的请求转发到后端的 realserver192.168.1.135和192.168.1.136
#ifconfig eth0:0 192.168.1.130 netmask 255.255.254.0 broadcast 192.168.1.255 up
#ipvsadm -A -t 192.168.1.130:80 -s wlc
#ipvsadm -a -t 192.168.1.130:80 -r 192.168.1.135 -g
#ipvsadm -a -t 192.168.1.130:80 -r 192.168.1.136 -g
但此时,因为只有一台director服务器,容易发生单点故障,因为要对此服务器做冗余。采用HA集群来实现
3。安装heartbeat
下载软件包()
beat-stonith-1.2.3.cvs.20050927-1.centos4.i386.rpm
***本版本采用REDHAT AS4,用centos4兼容版本******
#rpm -ivh heartbeat-pils-1.2.3.cvs.20050927- 1.centos4.i386.rpm
#rpm -ivh net-snmp-libs-5.1.2-11.i386.rpm
#rpm -ivh heartbeat-stonith-1.2.3.cvs.20050927-1.centos4.i386.rpm
#rpm -ivh heartbeat-1.2.3.cvs.20050927-1.centos4.i386.rpm
#rpm -ivh perl-Net-DNS-0.48-1.i386.rpm
#rpm -ivh perl-Digest-HMAC-1.01-13.noarch.rpm
#rpm -ivh perl-Digest-SHA1-2.07-5.i386.rpm
#rpm -ivh perl-Digest-HMAC-1.01-13.noarch.rpm
#rpm -ivh perl-Net-DNS-0.48-1.i386.rpm
#rpm -ivh heartbeat-ldirectord-1.2.3.cvs.20050927-1.centos4.i386.rpm --nodeps
4。配置
配置文件有3个,ha.cf haresources authkeys
在安装完成以后生成模版,位于/usr/share/doc/heartbeat-1.2.3.cvs.20050927-1.centos4下,将这三个文件拷贝至/etc/ha.d/目录下,进行修改
*********ha.cf*************
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
ucast eth0 172.0.0.2 //ucast方式 心跳线网卡 ,对端ip
auto_failback on
node lvs1 //HA的两个节点,机器名要在hosts中定义
node lvs2
**********************************
*****************haresources文件*******************
lvs1 IPaddr::192.168.1.130/23/192.168.1.255 ipvsadm ldirectord::/etc/ha.d/ldirectord.cf
***lvs1指HA中的master为LVS1
***IPaddr::192.168.1.130/23/192.168.1.255 是HA的虚拟IP/掩码/广播地址
***ipvsadm 是用HA来管理的服务(在/etc/init.d和/etc/ha.d/resource中定义的服务启动脚本)
***ldirectord::/etc/ha.d/ldirectord.cf 同上,ldirectord指服务,后边是其配置文件。
********haresources文件在HA的两个节点中,必须是相同的********
************authkeys文件***************************
定义HA节点间的认证方式,必须将此文件的权限设置为600
其书写格式如下
auth
下面采用CRC认证方式
auth 1
1 crc
*****************************************************
以上三个文件的配置祥见
5。配置ldirectord为服务转发提供HA冗余
/usr/share/doc/heartbeat-ldirectord-1.2.3.cvs.20050927/ldirectord.cf文件为配置文件的样本。将此文件拷贝至/etc/ha.d/目录下,可以修改成其他名字,但名字必须与haresources文件中指定的配置文件名相同(如果将文件改名为,则在haresources文件中必须指定为
ldirectord::/etc/ha.d/
配置为两台web服务器(192.168.1.135/192.168.1.136)提供负载均衡
virtual=192.168.1.130:80
real=192.168.1.135:80 gate
real=192.168.1.136:80 gate
fallback=127.0.0.1:80 gate
service=http
request=".testpage"
receive="ok"
# virtualhost=some.domain.com.au
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
virtual指定了虚拟的IP地址
real指定了后端真正web服务器的IP地址
fallback
service指定服务
request指定测试web服务器状态的请求页面(现指定为.testpage页面)
receive指定测试页面返回的值所包含的内容(现指定为“ok”)
********如果请求页面不存在,或返回值不包含“ok”则认为服务失效,将不再为其转发请求********************************
scheduler指定了算法,rr为轮训,wlc为权重
virtualhost指定虚拟主机的域名(如一台realserver上有多个站点,可以通过此域名来区分
详细请参见网站
5。在web服务器上指定测试页面
在192.168.1.135上,执行echo “ok”> /var/www/html/.testpage
在192.168.1.136上,执行echo “ok”> /var/www/html/.testpage
6.为web服务器增加虚拟IP地址
在192.168.1.135上执行
ifconfig lo:0 192.168.1.130 netmask 255.255.255.255 broadcast 192.168.1.130 up
在192.168.1.136上执行
ifconfig lo:0 192.168.1.130 netmask 255.255.255.255 broadcast 192.168.1.130 up
如果是windows服务器,则需要增加windows loopback网卡(添加删除硬件-添加新硬件--microsoft loopback adapter),并将此网卡地址设置为虚拟IP地址。通过修改注册表,将掩码更改为255.255.255.255,然后重新激活(\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\Tcpip\ Parameters\Interfaces,找到相应的网卡,修改掩码)
7.重新启动HA-ipvsadm服务器,配置完成
8。****以上为采用DR方式,只能为与virtual IP位于同一网段的REALserver进 行负载均衡。
****采用NAT方式,可以将Real Server的内网地址,通过virtual的公网IP地址进行NAT翻译。除以上配置以外,还需在lvs服务器上打开ip_forward
#echo 1 > /proc/sys/net/ipv4/ip_forward
ldirectord.cf配置为
virtual=192.168.1.130:80
real=192.168.1.135:80 masq
real=192.168.1.136:80 masq
fallback=127.0.0.1:80 masq
service=http
request=".testpage"
receive="ok"
# virtualhost=some.domain.com.au
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
另外需要将RealServer的默认网关更改为LVS服务器。
这种方式,效率最低。适用于公网IP不够用的情况
另外,因为realserver需要指定LVS服务器的内网地址作为网关,但如果指定为主LVS服务器的地址,则主服务器出现故障是,LVS切换至辅LVS服务器,但是realserver的网关仍然指向主LVS服务器,因为切换以后出现问题,导致客户端无法访问web站点。必须在LVS服务器切换的同时,将realserver的网关地址也同时切换。实现方法如下:
修改/etc/ha.d/haresources文件,加入
lvs1 IPaddr::172.0.0.10/24/172.0.0.255
这样,切换lvs服务是会同时起动两个虚拟地址,一个为外网提供访问的地址,一个为realserver提供的网关地址(172.0.0.10)
*******采用IP/TUN方式。lvs将请求打包,通过Ip/tun方式发送至RealServer,RealServer解包后,直接将请求结果返回给客户端,而不通过lvs。这种方式可以支持lvs与Realserver不在同一网络,可以跨网络,地域来实现负载均衡
LVS需要启用IP转发
#echo 1 > /proc/sys/net/ipv4/ip_forward
ldirectord.cf配置为
virtual=192.168.1.130:80
real=192.168.1.135:80 ipip
real=192.168.1.136:80 ipip
fallback=127.0.0.1:80 ipip
service=http
request=".testpage"
receive="ok"
# virtualhost=some.domain.com.au
scheduler=rr
#persistent=600
#netmask=255.255.255.255
protocol=tcp
realserver上
ifconfig tunl0 192.168.1.130 netmask 255.255.255.255 broadcast 192.168.1.130 up
9.配置完成后,重新启动,即可工作,但察看日志会有以下错误
ipvsadm: Applying IPVS configuration failed
只是因为ipvsadm启动时,默认会从/etc/sysconfig/ipvsadm读取配置文件。因为安装完成后,没有此配置文件,所以会报告错误。只需建立此文件,并将ldirectord。cf的配置按照ipvsadm的命令语法写入此文件即可
如下:
#touch /etc/sysconfig/ipvsadm
#vi /etc/sysconfig/ipvsadm
-A -t 192.168.1.130:80 -s rr
-a -t 192.168.1.130:80 -r 192.168.1.135:80 -g/-m/-i -w 1
-a -t 192.168.1.130:80 -r 192.168.1.136:80 -g/-m/-i -w 1
******-g/-m/-i分别代表直接路由方式/NAT方式/IP tunl方式********
9。测试
测试分为三部分进行
1。HA调度器测试
2。HA+ipvs测试
3。HA+ipvs+ldirector测试
10.附录:各机器配置如下
LVS1: eth0 192.168.1.131 eth1 172.0.0.1(心跳连接线)
LVS2: eth0 192.168.1.133 eth1 172.0.0.2(心跳连接线)
WEB1: eth0 192.168.1.135 lo:0 192.168.1.130
WEB2: eth0 192.168.1.136 lo:0 192.168.1.130
VIRTUAL IP: 192.168.1.130
ipvsadm命令参考
对ipvsadm 的命令参考,并根据自己使用的经验,进行了一个简单的翻译,希望
对ipvsadm 的使用者有一定的帮助。
为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍
一下:
1,virtual-service-address:是指虚拟服务器的ip 地址
2,real-service-address:是指真实服务器的ip 地址
3,scheduler:调度方法
(lna@networksbase.com 翻译 ipvsadm v1.21 2004 年4 月)
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 的服务
[vip:port] or [real-server-ip:port]
-u --udp-service service-address 说明虚拟服务器提供的是udp 的服务
[vip:port] or [real-server-ip:port]
-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 真实的服务器[Real-Server:port]
-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 地址和端口的数字形式
集群搭建相关链接:
(来源)