免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3242 | 回复: 0
打印 上一主题 下一主题

redhat4u2_lvs_DR_TUN_NAT_HA [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-30 09:28 |只看该作者 |倒序浏览
REDHAT  LINUX  AS 4U2  HA- LVS配置



Make:zhangdongsheng
Time:2007-4-28




1.        配置环境介绍:

调度器1地址:eth0:192.168.1.10/23;eth1:192.168.1.11/23
调度器2地址:eth0:192.168.1.20/23;eth1:192.168.1.21/23
应用服务器1地址:eth0:192.168.1.135/23;lo:0:192.168.1.130/23
应用服务器2地址:eth0:192.168.1.136/23;lo:0:192.168.1.130/23
VIP:192.168.1.130

2.结构图:


3.安装软件:
ipvsadm-1.24.tar.gz
heartbeat-2.0.5.tar.gz

4.安装过程:
(1)安装ipvsadm
#rpmbuild –tb ipvsadm-1.24.tar.gz  (编译时会出错:INCLUDE默认指向/usr/src/linux因为找不到/usr/src/linux,所以通过连接,解决此问题。)
#l ln -s /usr/src/kernels/2.6.9-22.EL-i686 /usr/src/linux
#rpmbuild –tb ipvsadm-1.24.tar.gz
# cd /usr/src/redhat/RPMS/i386/
#rpm –ivh *.*
(2)安装heartbeat软件包
#rpm -ivh glib-devel-1.2.10-15.i386.rpm
#rpm -ivh libgpg-error-devel-1.0-1.i386.rpm
#rpm -ivh libgcrypt-devel-1.2.0-3.i386.rpm
#rpm -ivh gnutls-devel-1.0.20-3.2.1.i386.rpm
#rpmbuild –rebuild libnet-1.1.2.1-1.rh.el.um.1.src.rpm
#rpm –ivh /usr/src/redhat/RPM/i386/lib*
#rpmbuild –tb heartbeat-2.0.5.tar.gz
#rpm -ivh heartbeat-pils-2.0.5-1.i386.rpm
#rpm -ivh heartbeat-stonith-2.0.5-1.i386.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 perl-Parse-RecDescent-1.94-1.rh.el.um.1.noarch.rpm
#rpm -ivh perl-Mail-IMAPClient-2.2.9-1.rh.el.um.1.noarch.rpm
#rpm -ivh perl-Authen-SASL-2.08-1.rh.el.um.1.noarch.rpm
#rpm -ivh perlrNet-SSLeay-1.25-3.2.el4.rf.i386.rpm
#rpm -ivh perl-IO-Socket-SSL-0.96-1.rh.el.um.1.noarch.rpm
#rpm -e perl-LDAP
#rpm -ivh perl-ldap-0.3202-1.rh.el.um.1.noarch.rpm
#rpm -ivh perl-modules-5.8.5-3.i386.rpm
#rpm -ivh --force perl-libnet-1.19-3.noarch.rpm      (用force的原因:安装包中man3里有                         10个文件与包perl.5.8.5-16中的相同)
#rpm -ivh heartbeat-ldirectord-2.0.5-1.i386.rpm
#rpm -ivh heartbeat-2.0.5-1.i386.rpm
*两个调度器都按照以上步骤安装。
(3)调度器配置
#chkconfig --del ldirectord
#chkconfig heartbeat on
ha配置文件样例在/usr/share/doc/heartbeat-2.0.5目录里
将文件ha.cf,haresource,authkey文件复制到 /etc/ha.d/
ldirectord样例文件在/usr/share/doc/heartbeat-ldirectord-2.0.4目录
将ldirectord.cf复制到/etc/ha.d/
#vi ha.cf
*********ha.cf**************************************************************
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
ucast eth1 92.168.1.* //ucast方式 心跳线网卡 ,对端ip
auto_failback on
node lvs1 //HA的两个节点,机器名要在hosts中定义
node lvs2
#vi haresources
*****************haresources文件********************************************
lvs1 IPaddr::192.168.1.130/23/eth0/192.168.1.255 ipvsadm ldirectord::/etc/ha.d/ldirectord.cf  LVSSyncDaemonSwap::master
**lvs1是指HA中的master
** IPaddr::192.168.1.130/23/eth0/192.168.1.255是HA的VIP/掩码/网卡/广播地址
** ipvsadm 是用HA来管理的服务(在/etc/init.d和/etc/ha.d/resource中定义的服务启动脚本)
** ldirectord::/etc/ha.d/ldirectord.cf 同上,ldirectord指服务,后边是其配置文件。
**haresources文件在HA的两个节点中,必须是相同的
#vi authkeys
******** ************authkeys文件***************************
定义HA节点间的认证方式,必须将此文件的权限设置为600 其书写格式如下
下面采用CRC认证方式
auth 1
1 crc
** 以上三个文件的配置详见http://www.linux-ha.org/GettingStarted
(4)配置ldirectord为服务转发提供ha冗余
#vi ldirectord
***************************ldirectord文件*********************************
checktimeout=1
checkinterval=1
#fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
quiescent=yes
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服务器状态的请求页面
**receive指定测试页面返回的值所包含的内容
**scheduler指定了算法,rr为轮训,wlc为权重
**virtualhost指定虚拟主机的域名
(5)为web服务器增加VIP
# vi /etc/sysconfig/network-script/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.130
NETMASK=255.255.255.255
ONBOOT=yes
ARP=no
#vi /etc/sysctel.conf文件
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
配置apache
另个 web做相同的配置 index.html 可以指定不同的内容便于测试
(如果是windows服务器,则需要增加windows loopback网卡(添加删除硬件-添加新硬件--microsoft loopback adapter),并将此网卡地址设置
为虚拟IP地址。通过修改注册表,将掩码更改为255.255.255.255,然后重新激活 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\Tcpip\ Parameters\Interfaces,找到相应的网卡,修改掩码)
重启两台web服务器加载VIP
(6)为调度器配置ipvsadm文件
配置完调度器后,重新启动,即可工作,但察看日志会有以下错误 ipvsadm: Applying IPVS configuration failed 只是因为ipvsadm启动时,默认会从/etc/sysconfig/ipvsadm读取配置文件。因为安装完成后,没有此配置文件,所以会报告错误。
#touch /etc/sysconfig/ipvsadm
#vi /etc/sysconfig/ipvsadm
*************ipvsadm*******************************************************
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
#vi /etc/sysctl.conf
net.ipv4.ip_forward = 1(设置转发,是两台主机有转发功能)
#server ipvsadm start
配置完成
以上为采用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
5.测试
(1)HA调度器测试
(2)HA+IPVS测试
(3)HA+IPVS+ldirector测试

6.ipvsadm命令参考
-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 目前的连接
--stats 显示统计信息
--rate 显示速率信息
--sort 对虚拟服务器和真实服务器排序输出
--numeric -n 输出IP 地址和端口的数字形式集群搭建相关链接:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP