- 浏览: 3500044 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
近期配了几个lvs 一是给自己个小结
二是 所查网上lvs 大多陈旧 或语焉不详 所以补个较新的 有不对之处请大家指正
vip :
192.168.1.198
虚拟 ip
master:192.168.1.196
主分发服务器
slave:
192.168.1.197
备份分发服务器
real1:
192.168.1.191
响应服务器 1
real2:
192.168.1.192
响应服务器 2
实现以下目的
一)配置基于 DR 模式简单 Lvs
集群配置基于隧道模式 Lvs
二)集群配置基于高可用 Lvs+heartbeat
三)双机 lvs-ha
一、
配置基于 DR 模式 Lvs 集群
1 、下载 ipvsadm 管理程序
ipvsadm-*.tar.gz
tar zxvf ipvsadm-*.tar.gz
cd ipvsadm-*
make && make install
注意在 make 时可能会出现很多错误的信息,请按照如下操作就可以心编译正常
ln -s /usr/src/kernels/2.6.9-22.EL-i686//usr/src/linux
cd ipvsadm-*
make && make install
我机器是 centos4
所以我 yum 安装
yum -y install ipvsadm
# ipvs 管理器
yum -y installlibnet
# 库文件
yum -y install e2fsprogs
# 库文件
yum -y installheartbeat
# linux-ha
yum –y installheartbeat-ldirectord
cp/usr/share/doc/heartbeat-2.1.*/ha.cf /etc/ha.d/
cp/usr/share/doc/heartbeat-2.1.*/authkeys /etc/ha.d/
cp/usr/share/doc/heartbeat-2.1.*/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-ldirectord-2.1.*/ldirectord.cf/etc/ha.d/
2 、配置 VIP 脚本
[root@ct1 ~]# more/etc/init.d/lvsdr-basic
#!/bin/sh
#
# This script willbe executed *after* all the other init scripts.
# You can put yourown initialization stuff in here if you don't
# want to do thefull Sys V style init stuff.
VIP=192.168.1.198
RIP1=192.168.1.191
RIP2=192.168.1.192
###########################
# ifconfig a
#
#/sbin/ifconfigeth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
#
############################
#/sbin/route add-host $VIP dev eth0:0
#echo "1"> /proc/sys/net/ipv4/ip_forward
/etc/rc.d/init.d/functions
case "$1"in
start)
echo "startLVS of DirectorServer"
#Set the Virtual IPAddress
/sbin/ifconfigeth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add-host $VIP dev eth0:1
#Clear IPVS Table
/sbin/ipvsadm -C
#Set Lvs
/sbin/ipvsadm -A -t$VIP:80 -s rr
/sbin/ipvsadm -a -t$VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t$VIP:80 -r $RIP2:80 -g
#Run Lvs
/sbin/ipvsadm
;;
stop)
echo "closeLVS Directorserver"
/sbin/ipvsadm -C
;;
*)
echo "Usage:$0 {start|stop}"
exit 1
esac
下例是其他类似的 lvsdr 配置文件
more /etc/init.d/lvsDR
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.1.198
RIP1=192.168.1.191
RIP2=192.168.1.192
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS ofDirectorServer"
# set the Virtual IP Address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr ( 如果需要session保持添加-p 默认保持300秒)
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
隧道模式
(tun )
more /etc/init.d/tunlvs
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.1.198
RIP1=192.168.1.191
RIP2=192.168.1.192
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS ofDirectorServer"
# set the Virtual IP Address
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
#/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
(-s rr 是使用了轮叫算法,可以自行选择相应的算法,更改rr就可以了,ipvsadm -h查看帮助。-g 是使用lvs工作DR直接路由模式,也可自行修改)
如果有多个realserver直接添加就可以了,之后启动此脚本就可以了。
NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(原地址NAT)。如果把NAT的过程稍微变化,就可以 成为负载均衡的一种方式。原理其实就是把从客户端发来的IP包的IP头目的地址在DR上换成其中一台REAL SERVER的IP地址并发至此REALSERVER,而REAL SERVER则在处理完成后把数据经过DR主机发回给客户端,DR在这个时候再把数据包的原IP地址改为DR接口上的IP地址即可。期间,无论是进来的流 量,还是出去的流量,都必须经过DR。
隧道模式则类似于 VPN 的方式,使用网络分层的原理,在从客户端发来的数据包的基础上,封装一个新的 IP 头标记(不完整的 IP 头,只有目的 IP 部)发给 REAL SERVER , REAL SERVER 收到后,先把 DR 发过来的数据包的头给解开,还原其数据包原样,处理后,直接返回给客户端,而不需要再经过 DR 。
直接路由模式比较特别,很难说和什么方面相似,前2种模式基本上都是工作在网络层上(三 层),而直接路由模式则应该是工作在数据链路层上(二层)。其原理为,DR和REAL SERVER都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有REALSERVER对本身这个IP的ARP请求保持静默。也就是说,网关 会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REALSERVER。这时REAL SERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和 REALSERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。
3、配置realserver脚本
#!/bin/bash
#description : start realserver
VIP=192.168.1.198
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
#end
此脚本使realserver不响应arp请求,将此脚本分别在realserver上执行就可以了。Ok后写入rc.local
测试:分别启动realserver上的httpd服务
在realserver1 执行 echo "191" /var/www/html/index.html
在realserver2 执行 echo "192" /var/www/html/index.html
打开浏览器输入http://192.168.1.198 应该可以分别看到:191 和 192.
以上是最简单的lvs 。 一个dr ,2个real 。 2个配置文件,几个rpm包。
我们需要的是高可用,主备dr,master down后 bak自动接管, master启动后bak交出管理权。
现在我们开始配置这样的lvs。
二是 所查网上lvs 大多陈旧 或语焉不详 所以补个较新的 有不对之处请大家指正
vip :
192.168.1.198
虚拟 ip
master:192.168.1.196
主分发服务器
slave:
192.168.1.197
备份分发服务器
real1:
192.168.1.191
响应服务器 1
real2:
192.168.1.192
响应服务器 2
实现以下目的
一)配置基于 DR 模式简单 Lvs
集群配置基于隧道模式 Lvs
二)集群配置基于高可用 Lvs+heartbeat
三)双机 lvs-ha
一、
配置基于 DR 模式 Lvs 集群
1 、下载 ipvsadm 管理程序
ipvsadm-*.tar.gz
tar zxvf ipvsadm-*.tar.gz
cd ipvsadm-*
make && make install
注意在 make 时可能会出现很多错误的信息,请按照如下操作就可以心编译正常
ln -s /usr/src/kernels/2.6.9-22.EL-i686//usr/src/linux
cd ipvsadm-*
make && make install
我机器是 centos4
所以我 yum 安装
yum -y install ipvsadm
# ipvs 管理器
yum -y installlibnet
# 库文件
yum -y install e2fsprogs
# 库文件
yum -y installheartbeat
# linux-ha
yum –y installheartbeat-ldirectord
cp/usr/share/doc/heartbeat-2.1.*/ha.cf /etc/ha.d/
cp/usr/share/doc/heartbeat-2.1.*/authkeys /etc/ha.d/
cp/usr/share/doc/heartbeat-2.1.*/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-ldirectord-2.1.*/ldirectord.cf/etc/ha.d/
2 、配置 VIP 脚本
[root@ct1 ~]# more/etc/init.d/lvsdr-basic
#!/bin/sh
#
# This script willbe executed *after* all the other init scripts.
# You can put yourown initialization stuff in here if you don't
# want to do thefull Sys V style init stuff.
VIP=192.168.1.198
RIP1=192.168.1.191
RIP2=192.168.1.192
###########################
# ifconfig a
#
#/sbin/ifconfigeth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
#
############################
#/sbin/route add-host $VIP dev eth0:0
#echo "1"> /proc/sys/net/ipv4/ip_forward
/etc/rc.d/init.d/functions
case "$1"in
start)
echo "startLVS of DirectorServer"
#Set the Virtual IPAddress
/sbin/ifconfigeth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add-host $VIP dev eth0:1
#Clear IPVS Table
/sbin/ipvsadm -C
#Set Lvs
/sbin/ipvsadm -A -t$VIP:80 -s rr
/sbin/ipvsadm -a -t$VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t$VIP:80 -r $RIP2:80 -g
#Run Lvs
/sbin/ipvsadm
;;
stop)
echo "closeLVS Directorserver"
/sbin/ipvsadm -C
;;
*)
echo "Usage:$0 {start|stop}"
exit 1
esac
下例是其他类似的 lvsdr 配置文件
more /etc/init.d/lvsDR
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.1.198
RIP1=192.168.1.191
RIP2=192.168.1.192
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS ofDirectorServer"
# set the Virtual IP Address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr ( 如果需要session保持添加-p 默认保持300秒)
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
隧道模式
(tun )
more /etc/init.d/tunlvs
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.1.198
RIP1=192.168.1.191
RIP2=192.168.1.192
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS ofDirectorServer"
# set the Virtual IP Address
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
#/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -i
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
(-s rr 是使用了轮叫算法,可以自行选择相应的算法,更改rr就可以了,ipvsadm -h查看帮助。-g 是使用lvs工作DR直接路由模式,也可自行修改)
如果有多个realserver直接添加就可以了,之后启动此脚本就可以了。
NAT用法本来是因为网络IP地址不足而把内部保留IP地址通过映射转换成公网地址的一种上网方式(原地址NAT)。如果把NAT的过程稍微变化,就可以 成为负载均衡的一种方式。原理其实就是把从客户端发来的IP包的IP头目的地址在DR上换成其中一台REAL SERVER的IP地址并发至此REALSERVER,而REAL SERVER则在处理完成后把数据经过DR主机发回给客户端,DR在这个时候再把数据包的原IP地址改为DR接口上的IP地址即可。期间,无论是进来的流 量,还是出去的流量,都必须经过DR。
隧道模式则类似于 VPN 的方式,使用网络分层的原理,在从客户端发来的数据包的基础上,封装一个新的 IP 头标记(不完整的 IP 头,只有目的 IP 部)发给 REAL SERVER , REAL SERVER 收到后,先把 DR 发过来的数据包的头给解开,还原其数据包原样,处理后,直接返回给客户端,而不需要再经过 DR 。
直接路由模式比较特别,很难说和什么方面相似,前2种模式基本上都是工作在网络层上(三 层),而直接路由模式则应该是工作在数据链路层上(二层)。其原理为,DR和REAL SERVER都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有REALSERVER对本身这个IP的ARP请求保持静默。也就是说,网关 会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REALSERVER。这时REAL SERVER收到这个数据包,则等于直接从客户端收到这个数据包无异,处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和 REALSERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。
3、配置realserver脚本
#!/bin/bash
#description : start realserver
VIP=192.168.1.198
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
#end
此脚本使realserver不响应arp请求,将此脚本分别在realserver上执行就可以了。Ok后写入rc.local
测试:分别启动realserver上的httpd服务
在realserver1 执行 echo "191" /var/www/html/index.html
在realserver2 执行 echo "192" /var/www/html/index.html
打开浏览器输入http://192.168.1.198 应该可以分别看到:191 和 192.
以上是最简单的lvs 。 一个dr ,2个real 。 2个配置文件,几个rpm包。
我们需要的是高可用,主备dr,master down后 bak自动接管, master启动后bak交出管理权。
现在我们开始配置这样的lvs。
二)集群配置基于高可用Lvs+heartbeat
主服务器配置:
1- 修改/etc/hosts文件
192.168.1.196 ct1
192.168.1.197 ct2
192.168.1.191 xxx
192.168.1.192 xxxx
1- 修改haresources文件
ct1 IPaddr::192.168.1.198 lvsdr-basic ldirectord
a. 定义主服务器和主服务器eth0虚拟ip,
b. 定义heartbeat启动监控的服务 ,ldirectord , lvsdr-basic
3- 修改authkeys文件 修改权限 chmod 600 authkeys
auth 1
1 crc
4- 修改ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
deadtime 20
initdead 20
#bcast eth1 在eth1上发送心跳广播
ucast eth1 192.168.2.20
auto_failback on
node ct1
node ct2
ping_group group1 192.168.1.196 192.168.1.197
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
authkeys
这个配置文件非常简单,就是在auth选择一个值。每个值对应一种算法,这个算法是在主节点和从节点间数据校验用的。这个配置文件权限必须是0600。
chmod 0600 authkeys
配置文件的值如下:
auth 3
1 crc
#2 sha1 HI!
#3 md5 Hello!
haresources
这个文件配置的是节点要管理的资源也就你的高可用服务,这些资源在主节点down调时候,从节点就会开启这些资源。Heartbeat认为
你配置资源名称 start/stop
就可以开启/停止这些资源。所以让你的资源支持start/stop。其实这你只需要对你的应用服务作个脚本,脚本接受start参数就会启动应用服务, 接受stop参数就会停止服务。个人建议,你什么都不要做,就把应用程序名当作资源名就可以了,启动资源名的时候就自动启动你的服务了。而在down机的 时候,所有的程序都死了,根本就不需要heartbeat调用
你配置资源名称stop
命令来结束程序。
在文件中找到:
#node1 10.0.0.170 Filesystem::/dev/sda1::/data1::ext2
这一项,去掉#号,根据格式配置你的资源。第一字段(Node1):主节点名称(必须uname –n的保持一致);第二字段(10.0.0.170):对外虚拟服务IP;第三字段(Filesystem::/dev/sda1:: /data1::ext2):Filesystem表示资源名称,/dev/sda1表示资源启动时的第一个参数,/data1表示第二个参数, /ext2表示第三个参数,依此类推。
ha.cf
这个配置文件比较复杂。我只配了关键的几项:
debugfile /var/log/ha-debug
说明:调试日志文件文件,取默认值
logfile /var/log/ha-log
说明:系统运行日志文件,取默认值
logfacility local0
说明:日志等级,取默认值
keepalive 1
说明:心跳频率,自己设定。1:表示1秒;200ms:表示200毫秒
deadtime 10
说明:节点死亡时间阀值,就是从节点在过了10后还没有收到心跳就认为主节点死亡,自己设定
warntime 5
说明:发出警告时间,自己设定
udpport 28855
说明:心跳信息传递的udp端口,自己设定
#bcast eth0 # Linux
说明:采用udp广播播来通知心跳,建议在副节点不只一台时使用
ucast eth0 xxx
说明:采用网卡eth0的udp单播来通知心跳,eth0的IP
#mcast eth0 225.0.0.1 694 1 0
说明:采用udp多播播来通知心跳,建议在副节点不只一台时使用
auto_failback off
说明:主节点重启成功后,资源是自动拿回到主节点还是等到副节点down调后拿回资源
node heartbeat1
说明:主节点名称,与uname –n保持一致。排在第一的默认为主节点,所以不要搞措顺序
node heartbeat2
说明:副节点名称,与uname –n保持一致
watchdog /dev/watchdog
说明:看门狗。如果本节点在超过一分钟后还没有发出心跳,那么本节点自动重启
以上这些是我个人认为必配项,下面这些是可选项。
stonith baytech /etc/ha.d/conf/stonith.baytech
说明:主/副等所有节点的一种校验。
respawn userid /path/name/to/run
说明:和heartbeat必须一起启动的本地服务
ping 10.10.10.254
说明:伪节点IP,伪节点就是其失效时主/副节点不会正常工作但本身不是主/副节点之一。
respawn hacluster /usr/lib/heartbeat/ipfail
说明:与ping选项一起使用,取默认值。
baud 19200
说明:串口波特率,与serial一起使用。
serial /dev/ttyS0 # Linux
说明:采用串口来传递心跳信息。
ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=no
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=192.168.1.198:80
real=192.168.1.191:80 gate
real=192.168.1.192:80 gate
service=http // 服务名称http
request="test.html" // lvs服务器测试代码
receive="Test" //
scheduler=sh // 按照source hash 调度
protocol=tcp
在192,191机器apache htdocs里建立test.html文件 输入Test 确保web页面可访问
checktimeout=3 (一个真实的服务器被认为出错所需的时间间隔)
checkinterval=1 (发出检查的时间间隔)
#autoreload=no (自动重载,默认值是no,选yes时配置文件发生变化后就会自动载入)
#callback=配置文件的路径(用来重载配置文件)
fallback=127.0.0.1:80 (当所有的真实服务器出错时,web服务重定向的地址)
#logfile="/var/log/ldirectord.log" (日志文件的目录)
#logfile="local0"
#execute=”configuration”(为这个配置文件启动ldirectord的实例)
quiescent=yes(当选择yes时,一台真实服务器down以后,并不是把它从lvs的表中删除,而是把它的权值设为0,新的链接将不可达)
virtual=192.168.1.198:80 (虚拟的ip和端口号)
real=192.168.1.191:80 gate ( 真实的服务器)
real=192.168.1.192:80 gate
fallback=127.0.0.1:80 gate
checktype=negotiate(检测类型,默认为negotiate)
service=http
checkport:80 (检查的端口号)
request="test.html" (负载平衡机将查询实际server的服务目录下面是不是 有该文件,如果有说明server还是在服务的,没有将认为它已经出错)
receive="Test "
scheduler=rr (调度算法)
#persistent=600
#netmask=255.255.255.255
protocol=tcp (协议)
3. 启动
输入 ldirectord start 启动服务,ldirectord stop停止服务,ldirectord rload 重新载入配置信息。
同样 bak服务器也配置如上。
另外,bak服务 cd /etc/ha.d
ln –s tmp/harc .
/etc/rc.d/rc.local 中写入 /etc/init.d/heartbeat start
主服务器rc.local 中写入 /etc/init.d/lvsdr-basic start
/etc/init.d/heartbeat start
内网服务器可关闭iptables
公网服务器最好是heartbeat通讯口专用 iptables相对应的网口过滤
Ok 到此为止 高可用配完
主服务器配置:
1- 修改/etc/hosts文件
192.168.1.196 ct1
192.168.1.197 ct2
192.168.1.191 xxx
192.168.1.192 xxxx
1- 修改haresources文件
ct1 IPaddr::192.168.1.198 lvsdr-basic ldirectord
a. 定义主服务器和主服务器eth0虚拟ip,
b. 定义heartbeat启动监控的服务 ,ldirectord , lvsdr-basic
3- 修改authkeys文件 修改权限 chmod 600 authkeys
auth 1
1 crc
4- 修改ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
deadtime 20
initdead 20
#bcast eth1 在eth1上发送心跳广播
ucast eth1 192.168.2.20
auto_failback on
node ct1
node ct2
ping_group group1 192.168.1.196 192.168.1.197
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
authkeys
这个配置文件非常简单,就是在auth选择一个值。每个值对应一种算法,这个算法是在主节点和从节点间数据校验用的。这个配置文件权限必须是0600。
chmod 0600 authkeys
配置文件的值如下:
auth 3
1 crc
#2 sha1 HI!
#3 md5 Hello!
haresources
这个文件配置的是节点要管理的资源也就你的高可用服务,这些资源在主节点down调时候,从节点就会开启这些资源。Heartbeat认为
你配置资源名称 start/stop
就可以开启/停止这些资源。所以让你的资源支持start/stop。其实这你只需要对你的应用服务作个脚本,脚本接受start参数就会启动应用服务, 接受stop参数就会停止服务。个人建议,你什么都不要做,就把应用程序名当作资源名就可以了,启动资源名的时候就自动启动你的服务了。而在down机的 时候,所有的程序都死了,根本就不需要heartbeat调用
你配置资源名称stop
命令来结束程序。
在文件中找到:
#node1 10.0.0.170 Filesystem::/dev/sda1::/data1::ext2
这一项,去掉#号,根据格式配置你的资源。第一字段(Node1):主节点名称(必须uname –n的保持一致);第二字段(10.0.0.170):对外虚拟服务IP;第三字段(Filesystem::/dev/sda1:: /data1::ext2):Filesystem表示资源名称,/dev/sda1表示资源启动时的第一个参数,/data1表示第二个参数, /ext2表示第三个参数,依此类推。
ha.cf
这个配置文件比较复杂。我只配了关键的几项:
debugfile /var/log/ha-debug
说明:调试日志文件文件,取默认值
logfile /var/log/ha-log
说明:系统运行日志文件,取默认值
logfacility local0
说明:日志等级,取默认值
keepalive 1
说明:心跳频率,自己设定。1:表示1秒;200ms:表示200毫秒
deadtime 10
说明:节点死亡时间阀值,就是从节点在过了10后还没有收到心跳就认为主节点死亡,自己设定
warntime 5
说明:发出警告时间,自己设定
udpport 28855
说明:心跳信息传递的udp端口,自己设定
#bcast eth0 # Linux
说明:采用udp广播播来通知心跳,建议在副节点不只一台时使用
ucast eth0 xxx
说明:采用网卡eth0的udp单播来通知心跳,eth0的IP
#mcast eth0 225.0.0.1 694 1 0
说明:采用udp多播播来通知心跳,建议在副节点不只一台时使用
auto_failback off
说明:主节点重启成功后,资源是自动拿回到主节点还是等到副节点down调后拿回资源
node heartbeat1
说明:主节点名称,与uname –n保持一致。排在第一的默认为主节点,所以不要搞措顺序
node heartbeat2
说明:副节点名称,与uname –n保持一致
watchdog /dev/watchdog
说明:看门狗。如果本节点在超过一分钟后还没有发出心跳,那么本节点自动重启
以上这些是我个人认为必配项,下面这些是可选项。
stonith baytech /etc/ha.d/conf/stonith.baytech
说明:主/副等所有节点的一种校验。
respawn userid /path/name/to/run
说明:和heartbeat必须一起启动的本地服务
ping 10.10.10.254
说明:伪节点IP,伪节点就是其失效时主/副节点不会正常工作但本身不是主/副节点之一。
respawn hacluster /usr/lib/heartbeat/ipfail
说明:与ping选项一起使用,取默认值。
baud 19200
说明:串口波特率,与serial一起使用。
serial /dev/ttyS0 # Linux
说明:采用串口来传递心跳信息。
ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=no
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=192.168.1.198:80
real=192.168.1.191:80 gate
real=192.168.1.192:80 gate
service=http // 服务名称http
request="test.html" // lvs服务器测试代码
receive="Test" //
scheduler=sh // 按照source hash 调度
protocol=tcp
在192,191机器apache htdocs里建立test.html文件 输入Test 确保web页面可访问
checktimeout=3 (一个真实的服务器被认为出错所需的时间间隔)
checkinterval=1 (发出检查的时间间隔)
#autoreload=no (自动重载,默认值是no,选yes时配置文件发生变化后就会自动载入)
#callback=配置文件的路径(用来重载配置文件)
fallback=127.0.0.1:80 (当所有的真实服务器出错时,web服务重定向的地址)
#logfile="/var/log/ldirectord.log" (日志文件的目录)
#logfile="local0"
#execute=”configuration”(为这个配置文件启动ldirectord的实例)
quiescent=yes(当选择yes时,一台真实服务器down以后,并不是把它从lvs的表中删除,而是把它的权值设为0,新的链接将不可达)
virtual=192.168.1.198:80 (虚拟的ip和端口号)
real=192.168.1.191:80 gate ( 真实的服务器)
real=192.168.1.192:80 gate
fallback=127.0.0.1:80 gate
checktype=negotiate(检测类型,默认为negotiate)
service=http
checkport:80 (检查的端口号)
request="test.html" (负载平衡机将查询实际server的服务目录下面是不是 有该文件,如果有说明server还是在服务的,没有将认为它已经出错)
receive="Test "
scheduler=rr (调度算法)
#persistent=600
#netmask=255.255.255.255
protocol=tcp (协议)
3. 启动
输入 ldirectord start 启动服务,ldirectord stop停止服务,ldirectord rload 重新载入配置信息。
同样 bak服务器也配置如上。
另外,bak服务 cd /etc/ha.d
ln –s tmp/harc .
/etc/rc.d/rc.local 中写入 /etc/init.d/heartbeat start
主服务器rc.local 中写入 /etc/init.d/lvsdr-basic start
/etc/init.d/heartbeat start
内网服务器可关闭iptables
公网服务器最好是heartbeat通讯口专用 iptables相对应的网口过滤
Ok 到此为止 高可用配完
三)双机lvs-ha
主服务器+真实的web服务器 :192.168.2.28
备服务器+ 真实的web服务器:192.168.2.20
Lvs director 配置在主服务器上,根据源地址分配服务器。
集群的虚拟ip为60.*.165,初始分配在主服务器的eth0, 主服务器宕机后,ip由备份服务器接管,分配在备份服务器的eth0.
二、集群软件安装
主服务器安装:
yum -y install ipvsadm # ipvs管理器
yum -y install libnet # 库文件
yum -y install e2fsprogs # 库文件
yum -y install heartbeat # linux-ha
yum –y install heartbeat-ldirectord # connector of linux-ha and lvs 【备份服务器不用安装】
2- 拷贝配置文件
cp /usr/share/doc/heartbeat-2.1.*/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.*/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.*/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-ldirectord-2.1.*/ldirectord.cf /etc/ha.d/【备份服务器不用】
三、集群配置
主服务器配置:
1- 修改/etc/hosts文件
192.168.2.28 name1
192.168.2.20 name2
2- 修改haresources文件
liuyuxi IPaddr::60.*.165 lvsdr-basic ldirectord
3- 修改authkeys文件 修改权限 chmod 600 authkeys
auth 1
1 crc
4- 修改ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
deadtime 20
initdead 20
ucast 192.168.2.20
auto_failback on
node name1
node name2
ping_group group1 192.168.2.28 192.168.2.20
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
5- ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=no
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=60.*.165:80
real=60.*.171:80 gate
real=60.*.164:80 gate
service=http
request="test.html"
receive="Test"
scheduler=sh
protocol=tcp
6- lvsdr-basic
/etc/init.d/lvsdr-basic
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
VIP=60.*.165
RIP1=60.*.171
RIP2=60.*.164
###########################
# ifconfig a
#
#/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
#
############################
/sbin/route add -host $VIP dev eth0:0
echo "1" > /proc/sys/net/ipv4/ip_forward
备份服务器配置:
1- 修改/etc/hosts文件 同主服务器
2- 修改haresources文件
liuyuxi switchdr IPaddr::60.*.165
虚拟ip地址是 60.*.165
备份服务器在接管主服务器前,执行switchdr start
备份服务器在移交主服务器前,执行switchdr stop
switchdr 见备份服务器配置第5条.
3- 修改authkeys文件 同服务器
4- 修改ha.cf 同主服务器 注意ucast
5- switchdr 脚本
/etc/init.d/switchdr
#!/bin/sh
# description: close lo0 and arp_ignore
VIP=60.*.165
./etc/rc.d/init.d/functions
case "$1" in
start)
echo "************* start director server and close tunl ***********"
ifconfig lo:0 down
echo 0>/proc/sys/net/ipv4/conf/all/arp_announce //允许arp解析虚ip
;;
stop)
echo "start Real Server"
// ---------------------------------------------------禁止arp 解析虚ip
ifconfig eth0:0 down
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
*)
echo "Usage: switchdr {start|stop}"
exit 1
esac
主服务器上:
/usr/local/apache/bin/apachectl start
/etc/init.d/heartbeat start
备服务器上:
/etc/init.d/httpd start
/etc/init.d/switchdr stop
/etc/init.d/heartbeat start
到此ok,如果有问题就是配置问题,好好检查你的log,所有的信息都在log上显示的。Ipvsadm可显示lvs连接,ipvsadm –l –c 命令查看当前响应。
最后感谢刘俊,ghbspecial 等同志 ,我是参照他们的文档作出的,
有问题请联系我 xu_pj#hotmail.com (#替代@)
主服务器+真实的web服务器 :192.168.2.28
备服务器+ 真实的web服务器:192.168.2.20
Lvs director 配置在主服务器上,根据源地址分配服务器。
集群的虚拟ip为60.*.165,初始分配在主服务器的eth0, 主服务器宕机后,ip由备份服务器接管,分配在备份服务器的eth0.
二、集群软件安装
主服务器安装:
yum -y install ipvsadm # ipvs管理器
yum -y install libnet # 库文件
yum -y install e2fsprogs # 库文件
yum -y install heartbeat # linux-ha
yum –y install heartbeat-ldirectord # connector of linux-ha and lvs 【备份服务器不用安装】
2- 拷贝配置文件
cp /usr/share/doc/heartbeat-2.1.*/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.*/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.*/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-ldirectord-2.1.*/ldirectord.cf /etc/ha.d/【备份服务器不用】
三、集群配置
主服务器配置:
1- 修改/etc/hosts文件
192.168.2.28 name1
192.168.2.20 name2
2- 修改haresources文件
liuyuxi IPaddr::60.*.165 lvsdr-basic ldirectord
3- 修改authkeys文件 修改权限 chmod 600 authkeys
auth 1
1 crc
4- 修改ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
deadtime 20
initdead 20
ucast 192.168.2.20
auto_failback on
node name1
node name2
ping_group group1 192.168.2.28 192.168.2.20
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
5- ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=no
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=60.*.165:80
real=60.*.171:80 gate
real=60.*.164:80 gate
service=http
request="test.html"
receive="Test"
scheduler=sh
protocol=tcp
6- lvsdr-basic
/etc/init.d/lvsdr-basic
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
VIP=60.*.165
RIP1=60.*.171
RIP2=60.*.164
###########################
# ifconfig a
#
#/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
#
############################
/sbin/route add -host $VIP dev eth0:0
echo "1" > /proc/sys/net/ipv4/ip_forward
备份服务器配置:
1- 修改/etc/hosts文件 同主服务器
2- 修改haresources文件
liuyuxi switchdr IPaddr::60.*.165
虚拟ip地址是 60.*.165
备份服务器在接管主服务器前,执行switchdr start
备份服务器在移交主服务器前,执行switchdr stop
switchdr 见备份服务器配置第5条.
3- 修改authkeys文件 同服务器
4- 修改ha.cf 同主服务器 注意ucast
5- switchdr 脚本
/etc/init.d/switchdr
#!/bin/sh
# description: close lo0 and arp_ignore
VIP=60.*.165
./etc/rc.d/init.d/functions
case "$1" in
start)
echo "************* start director server and close tunl ***********"
ifconfig lo:0 down
echo 0>/proc/sys/net/ipv4/conf/all/arp_announce //允许arp解析虚ip
;;
stop)
echo "start Real Server"
// ---------------------------------------------------禁止arp 解析虚ip
ifconfig eth0:0 down
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
*)
echo "Usage: switchdr {start|stop}"
exit 1
esac
主服务器上:
/usr/local/apache/bin/apachectl start
/etc/init.d/heartbeat start
备服务器上:
/etc/init.d/httpd start
/etc/init.d/switchdr stop
/etc/init.d/heartbeat start
到此ok,如果有问题就是配置问题,好好检查你的log,所有的信息都在log上显示的。Ipvsadm可显示lvs连接,ipvsadm –l –c 命令查看当前响应。
最后感谢刘俊,ghbspecial 等同志 ,我是参照他们的文档作出的,
有问题请联系我 xu_pj#hotmail.com (#替代@)
发表评论
-
几个负载均衡软件比较(Haproxy vs LVS vs Nginx)
2009-09-21 00:13 7013Nginx的优点: 性能好, ... -
Heartbeat2+iSASI+DRBD
2009-09-21 00:12 1947Step 1: 安装Heartbeat+DRBD 详细步 ... -
Heartbeat2+DRBD
2009-09-21 00:02 2397Prerequisites - Setup Minima ... -
mysql+drbd+heartbeat实现高可用性
2009-09-20 23:50 11053本文原址: http://bbs.yahunet.com/t ... -
centos 5.2 lvs+heartbeat+ldirectord集群
2009-09-17 00:26 3178关键字: centos lvs heartbeat ... -
较全的LVS和HA文档
2009-06-06 20:19 3971拓扑结构图 vip : 192.168.1.198 ... -
Linux系统性能测试与分析
2009-06-06 20:17 3965Linux 系统性能测试与分析 V ... -
REDHAT LINUX AS 4U4 HA- LVS配置
2009-06-06 19:44 3891简介:ha-lvs在集群的负载均衡中用的比较多,本人 ... -
使用 Linux Virtual Server 和 Linux-HA.org 的 Heartbeat
2009-06-06 18:14 2228使用 Linux Virtual Server 和 Linux ...
相关推荐
本文档主要讲解了Linux虚拟服务器(LVS)的基本概念和实现方法,涵盖了LVS的集群模式、LVS-NAT集群、LVS-DR集群等内容。同时,文档还提供了一些实际的案例,包括使用ipvsadm命令实现集群服务、部署LVS-NAT集群和部署...
本文档详细介绍了如何在 CentOS 7 系统上搭建 LVS+Keepalived 负载均衡集群,以应对单点故障问题,并提供了一个可实施的操作指南。 #### 二、Keepalived 简介及原理 **Keepalived** 是一款开源软件,用于实现 IPVS...
LVS+Keepalived 详细安装配置文档 LVS(Linux Virtual Server)是一种开源的负载均衡解决方案,通过 Keepalived 实现高可用性的虚拟服务器。下面将详细介绍 LVS+Keepalived 的安装配置过程和技术实现原理。 LVS ...
随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司...我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。
在构建大型、高可用性的FTP(File ...通过上述步骤,我们可以构建一个基于lvs+keepalived+vsftp的FTP服务器负载均衡环境,提供高可用性和良好的扩展性。记住,实施过程中应根据实际需求和服务器环境进行适当的调整。
LVS(负载均衡器) -> Nginx(反向代理服务器) -> LAMP(动态内容服务器) -> Mysql 双主(数据库服务器) -> NFS(文件存储服务器) IP 规划 以下是本架构的 IP 规划: 1. NFS 存储服务器:192.168.189.69/24 2...
搭建LVS+KEEPALIVED负载均衡 基于LVS(Linux Virtual Server)和KEEPALIVED的负载均衡技术,可以实现高可用性和高性能的服务器集群。下面是搭建LVS+KEEPALIVED负载均衡的详细步骤和知识点: 一、 环境准备 1. ...
本篇文档为Mysql双主热备+LVS+Keepalived高可用操作记录,可作为线上实操手册,有需要的朋友可以拿走,希望能帮助到有用到的人~
lvs+keepalived+mha+mysql 架构配置说明 LVS(Linux Virtual Server)是一种开源的负载均衡解决方案,旨在提高服务器集群的可用性和可扩展性。在高可用架构中,LVS 通常与 Keepalived 配合使用,以提供高可用的负载...
### LVS/NAT与LVS/DR模式集群的概述与配置 #### 一、集群及其重要性 **集群**的概念是指一组通过高速网络互连的计算单元,它们以单一系统的模式进行管理,对外提供一致的服务体验。集群技术的核心优势在于其能够...
本文档包括keepalived、ipvsadm安装软件以及LVS-DR安装文档(个人总结),还有Director和RealServer上执行的脚本:lvsdr.sh,lvs_real.sh 网络拓扑 lvs-master:192.168.5.240 lvs-backup:192.168.5.248 vip:192...
LVS+Keepalived+Nginx+Tomcat 高可用集群项目 本文主要讲述了如何构建一个高可用集群项目,使用 LVS、Keepalived、Nginx 和 Tomcat 实现高可用性和负载均衡。该项目的架构中,Keepalived 负责对 LVS 架构中的调度器...
### LVS-DR模式详解及配置 #### 一、引言 LVS(Linux Virtual Server)是一种基于Linux内核的高性能负载均衡解决方案,它能够通过不同的工作模式来实现对后端真实服务器(Real Server)的负载分发。本文将重点介绍...
通过“lvs+keepalived+mha+mysql架构配置实战演练.pdf”这份文档,你可以详细了解到每个步骤的实施过程,包括必要的命令行操作、配置文件示例以及可能遇到的问题和解决方法。这份实战演练将帮助你掌握高可用数据库...
### CentOS 7 上 LVS+Keepalived 部署详解 #### 一、环境准备与软件安装 根据提供的部分内容可以看出,本教程旨在演示如何在 CentOS 7 系统上安装配置 LVS(Linux Virtual Server)及 Keepalived 服务,以实现...
4. **CentOS5.5环境下布署LVS+keepalived.doc**:这个文档详细描述了在 CentOS 5.5 操作系统上部署LVS+keepalived的步骤,包括系统环境准备、软件安装、配置文件编写、服务启动与测试等环节。对于初学者来说,这是一...
LVS+Keepalived 是一种基于开源软件的架构,可以提供高性能高可用的服务器解决方案。 一、LVS 简介 LVS(Linux Virtual Server)是 Linux 虚拟服务器的简写,是一个虚拟的服务器集群系统。该项目于 1998 年 5 月由...
本篇文章将详细探讨如何搭建LVS-DR(Direct Routing)模式的集群,并结合Nginx和Apache进行配置。 **LVS-DR模式** LVS-DR模式是一种基于MAC地址的负载均衡方式,工作在网络层。在该模式下,Director服务器通过修改...