共计 5508 个字符,预计需要花费 14 分钟才能阅读完成。
这篇文章主要为大家展示了“怎么搭建 Lvs+heartbeat 高可用高性能 web 站点”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“怎么搭建 Lvs+heartbeat 高可用高性能 web 站点”这篇文章吧。
说明:每台服务器需要有两块网卡:eth0 连接内网的交换机,用私网 ip,实现服务器间内部访问;eth2 连接公网交换机,供外网访问。如果想节约成本可以只用一个交换机,划分 2 个 vlan 分别连接内网和外网也可以,但这样有风险,一旦交换机出问题,内网和外网都不能访问,一定要权衡一下得失。
各个服务器 ip 配置如下:
主 ha eth2:1.1.1.14 eth0:192.168.1.8(心跳)
从 ha eth2:1.1.1.15 eth0:192.168.1.30(心跳)
real1:eth2:1.1.1.16 eth0:192.168.1.9
real1:eth2:1.1.1.16 eth0:192.168.1.10
real1:eth2:1.1.1.16 eth0:192.168.1.11
real1:eth2:1.1.1.16 eth0:192.168.1.12
一. 主 ha 的配置:
1. hosts 文件的内容如下(如果有自己的 DNS 的话,也可以用 DNS 做解析):
127.0.0.1 primary.fantong.com localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
1.1.1.14 primary.fantong.com
192.168.1.8 primary.fantong.com
1.1.1.15 backup.fantong.com
192.168.1.30 backup.fantong.com
2. 修改主机名: 编辑 /etc/sysconfig/network
HOSTNAME=primary.fantong.com
3. 用命令修改一下主机名:
#hostname primary.fantong.com
4. 安装软件
yum -y install libnet
yum -y install heartbeat-*
yum -y install heartbeat(如果报错,再安装一次就 ok 了)
yum -y install ipvsadm
如果是 redhat 系统没有 yum 源的话,可以参考我的一篇博客文章来更改 yum 的一些设置: http://gehailong.blog.51cto.com/765312/610127
5. 软件安装完成以后会生成目录 /etc/ha.d,该目录下存放 heartbeat 的配置文件,验证文件,资源文件 (脚本, 注意:在 heartbeat 中,脚本都被称为资源) 等,这三个文件是必不可少的,本文中这三个文件都是我手工写的。
1). Heatbeat 的主配文件:/etc/ha.d/ha.cf/ha.cf
logfile /var/log/ha-log
debugfile /var/log/ha-debug
logfacility local0
keepalive 2 #主从切换的保持时间
deadtime 30 #宣布对方死亡时间
warntime 10 #警告时间
udpport 694 #主从之间的通信端口
ucast eth0 192.168.1.30 #采用单播方式探测心跳,bcast 是广播方式;后面的地址是对端地址
auto_failback on #自动恢复,就是说如果主从故障中恢复会抢回主的位置
node primary.fantong.com #主节点主机名
node backup.fantong.com #从节点主机名
ping 192.168.1.30
ping_group lbgroup 1.1.1.14 1.1.1.15
ping_group lbgroup 192.168.1.8 192.168.1.30
respawn hacluster /usr/lib64/heartbeat/ipfail #如果是 32 位系统,则目录应该为 /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster #验证用的用户和组 ID(已经自动建好了)
2). 资源列表 /etc/ha.d/haresources 后面跟的是资源名(脚本),要保证跟 backup 的内容完全一致。
primary.fantong.com lvs ldirectord
3). 验证文件 /etc/ha.d/authkeys 主从验证 testlab 验证密码,要保证跟 backup 的内容一致,否则主从验证失败。注意:改为该文件权限必须为 600
auth2
1 sha1 testlab
6. 在安装 heatbeat-* 的时候会安装一个叫 heartbeat-ldirectord 的文件,他的作用是管理后端的 realserver。比如后端某个 realserver 死掉了,他会自动从列表当中删除该资源,当该资源恢复后再自动添加进去。配置文件是:/etc/ha.d/ldirectord.cf,内容如下(是我自己手工写的):
# Global Directives 监控 realserver
checktimeout=3 #realserver 超时时间
checkinterval=1 #检查的间隔时间
fallback=127.0.0.1:80 #如果所有 realserver 宕机,由谁来承担
autoreload=yes
logfile= /var/log/ldirectord.log
emailalert= ftyw@fantong.com #出问题发邮件给谁(可以定义邮件组)
emailalertfreq=3600
emailalertstatus=all
quiescent=no #如果 realserver 出问题,立即从资源列表删除
# Sample for an http virtual service
virtual=1.1.1.13:80 #(注意这个文件的格式,下面的内容必须至少空 4 格)
real=1.1.1.16:80 gate #gate 表示采用的是 lvs 中 DR 模式,有关 lvs 的模式和工作原理大家可以查找相关资料来了解一下。
real=1.1.1.17:80 gate
real=1.1.1.18:80 gate
real=1.1.1.19:80 gate
fallback=127.0.0.1:80 gate
service=http
scheduler=wrr #realserver 的调动方法:加权轮训
persistent=5 #客户端连接的持久时间
protocol=tcp
checktype=connect
checkport=80
7. 该脚本的作用是启动资源 /etc/init.d/lvs
#!/bin/bash
# description: start LVS of DirectorServer
#Written by :NetSeek http://www.linuxtone.org GW=192.168.1.254
# website director vip.
GW=1.1.1.13 #网关地址千万不要填错了,否则你的辅助(浮动)ip 是无法访问的。
WEB_VIP=1.1.1.13
WEB_RIP1=1.1.1.16
WEB_RIP2=1.1.1.17
WEB_RIP3=1.1.1.18
WEB_RIP3=1.1.1.19
. /etc/rc.d/init.d/functions
logger $0 called with $1
case $1 in
start)
# Clear all iptables rules.
/sbin/iptables –F #这个地方要注意一下,如果公司最外端有防火墙,就可以清空 iptables 内容(都做允许,或者停止),把改行注释掉;如果没有就需要有防火墙了,自己写策略或者写脚本。
# Reset iptables counters.
/sbin/iptables –Z #同上
# Clear all ipvsadm rules/services.
/sbin/ipvsadm -C
#set lvs vip for dr
/sbin/ipvsadm –set 30 5 60
/sbin/ifconfig eth2:0 $WEB_VIP broadcast $WEB_VIP netmask 255.255.255.255 up
/sbin/route add -host $WEB_VIP dev eth2:0
/sbin/ipvsadm -A -t $WEB_VIP:80 -s wrr -p 3
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP1:80 -g -w 1
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP2:80 -g -w 1
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP3:80 -g -w 1
/sbin/ipvsadm -a -t $WEB_VIP:80 -r $WEB_RIP4:80 -g -w 1
touch /var/lock/subsys/ipvsadm /dev/null 2 1
# set Arp
/sbin/arping -I eth2 -c 5 -s $WEB_VIP $GW /dev/null 2 1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth2:0 down
route del $WEB_VIP /dev/null 2 1
rm -rf /var/lock/subsys/ipvsadm /dev/null 2 1
/sbin/arping -I eth2 -c 5 -s $WEB_VIP $GW
echo ipvsadm stoped
;;
status)
if [! -e /var/lock/subsys/ipvsadm];then
echo ipvsadm is stoped
exit 1
else
ipvsadm -ln
echo ……….ipvsadm is OK.
fi
;;
*)
echo Usage: $0 {start|stop|status}
exit 1
esac
exit 0
8. 做一下两步操作:
chmod 755 /etc/init.d/lvs
ln -s /etc/init.d/lvs /etc/ha.d/resource.d #启动 ldirectord 的时候它会从 /etc/init.d 和 /etc/ha.d/resource.d 目 录里面搜索资源(脚本)。
9. 让 heartbeat 开机自启动。
chkconfig heartbeat on
二. backup 上面的配置
1. 安装软件包,同 primary
2. 把 primary 上所有的脚本拷贝到 backup 上面,包括 hosts 文件,/etc/ha.d/* 里面的所有的内容。
3. 修改 /etc/ha.d/ha.cf。其他文件的内容与主的保持一致就可以。
ucast eth0 192.168.1.8 #采用单播方式探测心跳,bcast 是广播方式;后面的地址是对端地址(主的 ip)
………
ping 192.168.1.8
4. chkconfig heartbeat on
三. realserver 的配置
1. 编写脚本 /root/real.sh,主要作用是屏蔽 arp,否则的话会与其他 realserver 和 ha 的地址发生冲突,脚本内容如下:
#/bin/sh
VIP=1.1.1.13
source /etc/rc.d/init.d/functions
case $1 in
start)
echo start LVS of RealServer
/sbin/ifconfig lo:0 ${VIP} broadcast ${VIP} netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo Close LVS of RealServer
echo 0 /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 /proc/sys/net/ipv4/conf/lo/arp_announce
echo 0 /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo wrong,please use start|stop
exit 1
esac
2. 修改一下脚本权限:chmod 755 real.sh
3. 启动脚本 /root/real.sh start
4. 加入启动项:
修改 /etc/rc.local 在最后写入一行
/root/real.sh start
四. 测试。
1. 在主从上面分别启动 heartbeat。(注意:先主后从)
service heartbeat start
2. 观察主日志文件 /var/log/ha-log
看到后面两行表示已经启动完毕,资源加载成功。
3. 观察从日志文件 /var/log/ha-log
看到最后一行,表示从启动成功,它并不启动资源。
以上是“怎么搭建 Lvs+heartbeat 高可用高性能 web 站点”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!