集群之heartbeat

来源:互联网 发布:淘宝内衣模特王文雨 编辑:程序博客网 时间:2024/06/01 12:18

集群

1)集群技术

高可用:HA即(high available)高可用,又被叫做双机热备,用于关键性业务。简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务。
负载均衡:
负载均衡, 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

高性能计算:
高性能计算(High performance computing, 缩写HPC) 指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计 算资源操作)的计算系统和环境。有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。大多数基于集群的HPC系统使用高性能网络互连,比如那些来自 InfiniBand 或 Myrinet 的网络互连。基本的网络拓扑和组织可以使用一个简单的总线拓扑,在性能很高的环境中,网状网络系统在主机之间提供较短的潜伏期,所以可改善总体网络性能和传输速率。

3)实现高可用集群

•RHCS
•Heartbeat
•keepalived
•pacemaker

4)实现负载均衡

•nginx
•lvs
•haproxy

5)利用heartbeat实现集群功能

环境:Vm4---->server4 172.25.30.4  (master)Vm4---->server5 172.25.30.5  (backup)准备:heartbeat-3.0.4-2.el6.x86_64.rpm        heartbeat-libs-3.0.4-2.el6.x86_64.rpmheartbeat-devel-3.0.4-2.el6.x86_64.rpm  ldirectord-3.9.5-3.1.x86_64.rpmHttpd 

工作原理:
1.集群由多台台运行Heartbeat的服务器组成,拓扑图:
这里写图片描述
2.高可用负载均衡系统:
这里写图片描述

一 实现高可用
1.安装

yum install -y /rhel6/heartbeat-*scp * server5:

2.更改配置

cd /usr/share/doc/heartbeat-3.0.4/cp ha.cf authkeys haresources /etc/ha.d/##拷贝文件cd /etc/ha.dvim ha.cf  34 logfacility         local0  日志文件 48 keepalive 2       心跳的时间间隔,默认单位时间秒 56 deadtime 30      超出该时间间隔未收到对方节点的心跳,则认为对方死亡 61 warntime 10      发出警告并记录在日志中 71 initdead 60       系统重启之后需要多长时间正常工作 76 udpport 724      广播通信使用的端口 91 bcast   eth0      # Linux  157 auto_failback on   主节点和从节点,遇到故障时主节点把资源交给从节点 211 node    server4   节点主机名 212 node    server5 220 ping 172.25.30.250 253 respawn hacluster /usr/lib64/heartbeat/ipfail 该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测  网络连接 259 apiauth ipfail gid=haclient uid=haclustervim authkeys ##认证文件  auth 1     1 crc  #2 sha1 HI!  #3 md5 Hello!chmod 600 authkeys    ##权限为600vim haresources   server4 IPaddr::172.25.30.100/24/eth0 httpd   #节点的主机名 vip  执行脚本ll /etc/init.d/ -ddrwxr-xr-x. 2 root root 4096 Jul 25 09:41 /etc/init.d/scp ha.cf authkeys haresources server5:/etc/ha.d/

3.启动服务(server4、server5的httpd关闭)

/etc/init.d/heartbeat starttail -f /var/log/messages     ##查看日志信息Jul 25 10:20:04 server4 heartbeat: [2067]: info: glib: UDP Broadcast heartbeat started on port 724 (724) interface eth0Jul 25 10:20:04 server4 heartbeat: [2067]: info: glib: UDP Broadcast heartbeat closed on port 724 interface eth0 - Status: 1Jul 25 10:20:04 server4 heartbeat: [2067]: info: glib: ping heartbeat started.Jul 25 10:20:04 server4 heartbeat: [2067]: info: G_main_add_TriggerHandler: Added signal manual handlerJul 25 10:20:04 server4 heartbeat: [2067]: info: ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 52:54:00:dd:bc:0e brd ff:ff:ff:ff:ff:ff    inet 172.25.30.4/24 brd 172.25.30.255 scope global eth0    inet 172.25.30.100/24 brd 172.25.30.255 scope global secondary eth0    inet6 fe80::5054:ff:fedd:bc0e/64 scope link        valid_lft forever preferred_lft forever

4.server5配置

[root@server5 ~]# lsheartbeat-3.0.4-2.el6.x86_64.rpm        heartbeat-libs-3.0.4-2.el6.x86_64.rpmheartbeat-devel-3.0.4-2.el6.x86_64.rpm  ldirectord-3.9.5-3.1.x86_64.rpmyum install -y heartbeat-*/etc/init.d/heartbeat start   ###启动(server4 先启动正常)

5.测试:

当server4的hearbeat服务停止,仍可以继续访问server5;server4恢复,master变为为server4

二lvs实现负载均衡(通过ipvsadm命令配置)
1.安装

/etc/init.d/heartbeat stop    ###停止服务(server5也停止)yum install -y ipvsadm

2.添加策略

ipvsadm -A -t 172.25.30.100:80 -s rr## 定义一个VIP,使用轮询ip addr add 172.25.30.100/24 dev eth0## 添加一个虚拟ipip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00    inet 127.0.0.1/8 scope host lo    inet6 ::1/128 scope host        valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    link/ether 52:54:00:dd:bc:0e brd ff:ff:ff:ff:ff:ff    inet 172.25.30.4/24 brd 172.25.30.255 scope global eth0    inet 172.25.30.100/24 scope global secondary eth0    inet6 fe80::5054:ff:fedd:bc0e/64 scope link        valid_lft forever preferred_lft foreveripvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.30.100:http rripvsadm -a -t 172.25.30.100:80 -r 172.25.30.2:80 -g## 定义rs使用DR模式ipvsadm -a -t 172.25.30.100:80 -r 172.25.30.3:80 -gipvsadm -l  ##查看IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.30.100:http rr  -> server2:http                 Route   1      0          0           -> server3:http                 Route   1      0          0         /etc/init.d/ipvsadm save   ## 保存策略ipvsadm -lnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.30.100:80 rr  -> 172.25.30.2:80               Route   1      0          0           -> 172.25.30.3:80               Route   1      0          0         [root@server4 ha.d]# 

3.后端配置
server2 添加ip ,添加策略

[root@server2 ~]# /etc/init.d/httpd startip addr add 172.25.30.100/32 dev eth0yum install -y arptables_*arptables -LChain IN (policy ACCEPT)target     source-ip            destination-ip       source-hw          destination-hw     hlen   op         hrd        pro       Chain OUT (policy ACCEPT)target     source-ip            destination-ip       source-hw          destination-hw     hlen   op         hrd        pro       Chain FORWARD (policy ACCEPT)target     source-ip            destination-ip       source-hw          destination-hw     hlen   op         hrd        proarptables -A IN -d 172.25.30.100 -j DROParptables -A OUT -s 172.25.30.100 -j mangle --mangle-ip-s 172.25.30.2/etc/init.d/arptables_jf savecd /var/www/htmlvim index.html server3 同上

物理机:测试

[root@foundation30 Desktop]# arp -d 172.25.30.100[root@foundation30 Desktop]# arp -an |grep 100? (172.25.30.100) at <incomplete> on br0[root@foundation30 Desktop]# curl 172.25.30.100<h1>server3-www.westos.org</h1>[root@foundation30 Desktop]# curl 172.25.30.100<h1>hello eastos</h1>[root@foundation30 Desktop]# curl 172.25.30.100<h1>server3-www.westos.org</h1>[root@foundation30 Desktop]# curl 172.25.30.100<h1>hello eastos</h1> 

三 实现高可用+负载均衡
[root@server4 doc]# cd ldirectord-3.9.5/
scp ldirectord.cf /etc/ha.d/
cd /etc/ha.d/

vim ldirectord.cf checktimeout=3checkinterval=1autoreload=yesquiescent=novirtual=172.25.30.100:80        real=172.25.30.2:80 gate        real=172.25.30.3:80 gate        fallback=127.0.0.1:80 gate        service=http        scheduler=rr        #persistent=600        #netmask=255.255.255.255        protocol=tcp        checktype=negotiate        checkport=80        request="index.html"ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.30.100:http rr  -> server2:http                 Route   1      0          0           -> server3:http                 Route   1      0          0         ipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn/etc/init.d/ldirectord start/etc/init.d/httpd start/etc/init.d/ldirectord stop   #停止一个服务,heatbeat自启动ip addr del 172.25.30.100/24 dev eth0     ###删除vip,利用ldirectord加入vip/etc/init.d/httpd stopvim haresources server4 IPaddr::172.25.30.100/24/eth0 httpd ldirectord        ###加入服务scp haresources ldirectord.cf server5:/etc/ha.d   /etc/init.d/heartbeat startipvsadm -lIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  172.25.30.100:http rr  -> server2:http                 Route   1      0          0           -> server3:http                 Route   1      0          0         /etc/init.d/heartbeat stop[root@server5 ~]# yum install  ldirectord-3.9.5-3.1.x86_64.rpm

测试:
当server4停止服务,server5接管,仍可实现负载均衡。