扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
####heartbeat简介####
Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。
这个集群方案是利用第三方软件搭建的,要比RedHat自带的集群软件在功能上简化一些,但是搭建起来非常的方便。而且是一种快速解决方案。
heartbeat的高可用集群采用的通信方式是udp协议和串口通信,而且heartbeat插件技术实现了集群间的串口、多播、广播和组播通信。它实现了HA 功能中的核心功能——心跳,将Heartbeat软件同时安装在两台服务器上,用于监视系统的状态,协调主从服务器的工作,维护系统的可用性。它能侦测服务器应用级系统软件、硬件发生的故障,及时地进行错误隔绝、恢复;通过系统监控、服务监控、IP自动迁移等技术实现在整个应用中无单点故障,简单、经济地确保重要的服务持续高可用性。 Heartbeat采用虚拟IP地址映射技术实现主从服务器的切换对客户端透明的功能。
但是单一的heartbeat是无法提供健壮的服务的,所以我们在后台使用lvs进行负载均衡。
####安装heartbeat####
一:设置环境
1.系统:redhat6.5 ;
2.节点:一共要用到四个虚拟机作为节点,其中server10与server11安装heartbeat和lvs,另外两个节点server12与server13只提供apache和vsftpd服务;
3.这四个节点之间的解析一定要做好;
4.防火墙关闭,时间同步,四个机子的系统版本最好相同。
二:安装heartbeat:(这个是第三方软件,不是redhat自带的,所以大家要自己去下载)
heartbeat-3.0.4-2.el6.x86_64.rpm
heartbeat-devel-3.0.4-2.el6.x86_64.rpm
heartbeat-libs-3.0.4-2.el6.x86_64.rpm
在下载之前还要修改本机的yum源配置
vim /etc/yum.repos.d/rhel-source.repo
######################################
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.60.250/rhel6.5/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.60.250/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.60.250/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.60.250/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.60.250/rhel6.5/ScalableFileSystem
gpgcheck=0
##############################################
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的铜陵网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
heartbeat的配置文件存放在/etc/ha.d/中
但是在默认情况下,配置文件中并没有,因此我们需要从其他地方拷贝
[root@server10 ~]# cd /usr/share/doc/heartbeat-3.0.4/
[root@server10 heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/
接下来编写配置文件:
[root@server10 ha.d]# vim ha.cf
#############################
29 logfile /var/log/ha-log ##日志存放位置
48 keepalive 2 ##设定heartbeat之间的时间间隔为2秒
56 deadtime 30 ##在30秒后宣布节点死亡。
61 warntime 10 ##在日志中发出“late heartbeat“警告之前等待的时间,单位为秒
71 initdead 120 ##在某些配置下,重启后网络需要一些时间才能正常工作。它的取值至少应该为通常deadtime的两倍
76 udpport 694 ##使用端口694进行bcast和ucast通信。这是默认的
91 bcast eth0
211 node server10 ##有两个节点安装heartbeat
212 node server11
#################################
[root@server10 ha.d]# vim authkeys
################
23 auth 1
24 1 crc
################
最后我们修改haresources,我们要在其中添加一个apache服务,但是我们要给它一个虚拟的ip(这个ip一定是没有被别人占用的),让这两个节点作它的论寻
[root@server10 ha.d]# vim haresources
#######################################################
149 server10 IPaddr::172.25.60.100/24/eth0 httpd
########################################################
在两边都安装httpd服务作为测试,为了区分,我们在他们的index.html中写入不同的内容
做完上述内容后开启两边的heartbeat服务及httpd服务:
[root@server10 ha.d]# /etc/init.d/heartbeat start
[root@server10 ha.d]# /etc/init.d/httpd start
然后我们来通过firefox检验效果:
然后我们让当前的节点heartbeat关闭,发现另外一个节点自动接管了:
再让刚才那个节点的heartbeat开启,因为它是主节点(server10),所以又接管回来了:
这样就起到了负载均衡的效果
####LVS简介####
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统
1.LVS的三种负载均衡技术:
(1).通过NAT实现虚拟服务器(VS/NAT)
(2).通过IP隧道实现虚拟服务器(VS/TUN
(3).通过直接路由实现虚拟服务器(VS/DR)
####LVS的安装和配置####
首先下载ipvsadm
[root@server10 ha.d]# yum install ipvsadm -y
[root@server10 ha.d]# ipvsadm -l ##查看调度,此时应当没有任何调度
接下来添加虚拟ip作为公共访问ip
[root@server10 ha.d]# ifconfig eth0:0 172.25.60.200 netmask 255.255.255.0 up
我们添加虚拟ip的httpd服务的端口,并且采用了轮叫的算法(RR):
[root@server10 ha.d]# ipvsadm -A -t 172.25.60.200:80 -s rr
[root@server10 ha.d]# ipvsadm -l ##再次查看调度时,会发现有了一条调度
允许server12和server13的httpd服务作为轮叫的节点:
[root@server10 ha.d]# ipvsadm -a -t 172.25.60.200:80 -r 172.25.60.12:80 -g
[root@server10 ha.d]# ipvsadm -a -t 172.25.60.200:80 -r 172.25.60.13:80 -g
在serevr12和server13上分别安装httpd服务:
server12和server13要能够识别172.25.60.200这个虚拟IP,所以他们也要添加这个虚拟网卡。
[root@server12 ~]# ifconfig eth0:0 172.25.60.200 netmask 255.255.255.0 up
现在控制节点和提供真实服务的节点都能够识别VIP(172.25.60.200),接下来我们要在提供服务的节点上添加策略,这个感觉和防火墙很类似,不过要安装一个额外的软件:
[root@server12 ~]# yum install arptable* -y
添加策略,把直接进来访问172.25.60.200的包全部丢弃,让从172.25.60.200出去的包从172.25.60.12出去(172.25.60.13同理)。
[root@server13 ~]# arptables -A IN -d 172.25.60.200 -j DROP
[root@server13 ~]# arptables -A OUT -s 172.25.60.200 -j mangle --mangle-ip-s 172.25.60.12
[root@server13 ~]# arptables -nL
[root@server13 ~]# /etc/init.d/arptables_jf save ##保存策略
现在我们通过浏览器反复访问172.25.60.200(确保服务节点的httpd服务开启),多刷新几次:
用ipvsdm -l查看访问之前控制节点记录的信息
在访问了12次之后,我们发现两个节点各轮叫了6次,但是访问的ip都是虚拟ip(172.25.60.200),这就是直连情况下的LVS方案
####heartbeat+lvs
让这两个软件能够互相协作,并且让该平台具有能够报警和挽救的机制,我们需要安装ldirectord软件。
ldirectord-3.9.2-1.2.x86_64.rpm
在server10和server11上安装ldirectord(因为包和系统的包有依赖性,所有使用yum安装
[root@server10 ha.d]# yum install ldirectord-3.9.2-1.2.x86_64.rpm -y
拷贝配置文件到heartbeat的配置文件目录下
[root@server10 ha.d]# cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
两边的节点上都安装perl-IO-Socket-INET6-2.56-4.el6.noarch:,否则后面的ldirectord会因为缺少脚本无法打开:
[root@server10 ha.d] yum install perl-IO-Socket-INET -y
编辑ldirectord的配置文件
[root@server10 ha.d] vim directord.cf
################################
25 virtual=172.25.60.200:80
26 real=172.25.60.12:80 gate
27 real=172.25.60.13:80 gate
28 fallback=127.0.0.1:80 gate
29 service=http
30 scheduler=rr
31 #persistent=600
32 #netmask=255.255.255.255
33 protocol=tcp
34 checktype=negotiate
35 checkport=80
36 request="index.html"
################################
我们指定两个真实服务的节点172.25.60.12和172.25.60.13,他们的访问顺序采用轮叫的方式,当两个节点都挂掉的话,172.25.60.10这个节点自己提供服务。
把这个配置文件拷贝到另外一个控制节点172.25.60.11的配置文件处:
[root@server10 ha.d]# scp ldirectord.cf 172.25.60.11:/etc/ha.d/
编辑haresources文件,添加ldirectord服务到heartbeat中:
[root@server10 ha.d]# vim haresources
##################################
149 server10 IPaddr::172.25.60.100/24/eth0 httpd ldirectord
##################################
在server11下也作同样的修改
这个时候我们直接启动heartbeat服务,他会自动调用ldirectord服务,而我们的ldirectord的配置文件里的内容完成着和LVS一样的调度功能,这样平台搭建基本完成:
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流