Heartbeat+ipvsadm+ldirectord组建linux高可用集群

1. 系统环境:

RHEL6,组建选择base--默认,developmenttools—选择所有可选包。

对外虚拟IP:192.168.50.179

网关:192.168.50.254

负载节点:(eth0为外网卡)master-192.168.50.170

负载心跳:(eth1为心跳检查)192.168.94.10

备用节点:(eth0为外网卡)backup-192.168.50.171

备用节点心跳:(eth1为心跳检查)192.168.94.11

真实节点1:rs1-192.168.50.172

真实节点2:rs2-192.168.50.173

确保hostname==uname –n

编辑各机器/etc/hosts 文件,添加解析:

192.168.50.170 master

192.168.50.171 backup

192.168.50.172 rs1

192.168.50.173rs2

2.所需软件

Heartbeat2.1.3,ipvsadm1.24

安装heartbeat时需要:

Libnet  (此包系统中未包含需要下载,我下载的是libnet-1.1.5.tar.gz)

glib2-devel (系统自带)

libxml2-devel (系统自带)

bzip2-devel (系统自带)

Ldirector服务需要的依赖几个perl包(CPAN下载):

Socket6-0.23.tar.gz

IO-Socket-INET6-2.65.tar.gz

MailTools-1.74.tar.gz

依次安装以上各包以后应该可以安装heartbeat了。官网最新版的heartbeat3.0已分成3个组件包,安装时每个包时都需要去INTERNET验证大量XML文件,耗费的时间惊人,依赖包也比较多。Heartbeat2.1.4版本在rhe6上安装时需要大量依赖包,而且make install时报错,在网上也没找到相关的解决方案,所以退而求其次选择了heartbeat2.1.3版,此版安装时比较顺利,下面记录了我的安装过程。其中大部分配置都能从网上找到,我也只是借来用的,此文档的目的只是自己备忘,以及提示一下在安装过程中和我有同样错误的菜鸟们。涉及到版权问题还请见谅。并给我留言。

3.安装ipvsadm

#ln -s/usr/src/kernels/`uname -r` /usr/src/linux

#tar zxvfipvsadm-1.24.tar.gz

#cdipvsadm-1.24

#make;make install

---------------------------------------------------------------------------------------------------------------------------

4. 安装heartbeat

[root@mastersrc]# tar zxvf heartbeat-2.1.3.tar.gz

[root@mastersrc]# cd heartbeat-2.1.3

[root@masterheartbeat-2.1.3]# ./ConfigureMe configure

[root@masterheartbeat-2.1.3]#groupadd haclient

[root@masterheartbeat-2.1.3]#useradd -g haclient hacluster

[root@masterheartbeat-2.1.3]#./ConfigureMe make --enable-fatal-warnings=no

[root@masterheartbeat-2.1.3]#make install

[root@masterheartbeat-2.1.3]#cp doc/{authkeys,haresources,ha.cf} /etc/ha.d/

[root@master heartbeat-2.1.3]#cp ldirectord/ldirectord.cf /etc/ha.d/

配置heartbeat

-------------------------------------------------------------------------------------

(1)编辑authkeys文件:

[root@master heartbeat-2.1.3]# sed -e /^#/d /etc/ha.d/authkeys

auth 3

3 md5 Hello!

[root@masterheartbeat-2.1.3]#chmod 600 /etc/ha.d/authkeys

--------------------------------------------------------------------------------------

(2)编辑ha.cf文件:

[root@master heartbeat-2.1.3]# sed -e /^#/d /etc/ha.d/ha.cf

debugfile/var/log/ha-debug

logfile/var/log/ha-log

logfacility     local0

keepalive 2

deadtime 5

initdead 15   #此数值大于等于deadtime的两倍

udpport 694

ucast eth1192.168.94.11

auto_failback on   #负载节点重新恢复正常后从备用节点自动接管

node    master

node    backup

crm no    #禁用crm

-----------------------------------------------------------------------------------------

(3)编辑haresources文件

[root@masterheartbeat-2.1.3]# sed -e /^#/d /etc/ha.d/haresources

master 192.168.50.179 cluster ldirectord

#负载节点主机名 虚拟IP地址 要有heartbeat管理的程序

---------------------------------------------------------------------------------------------------------------------------

(4)编辑ldirectord文件

[root@masterheartbeat-2.1.3]# sed -e /^#/d /etc/ha.d/ldirectord.cf

checktimeout=3

checkinterval=1

autoreload=yes

logfile="/var/log/ldirectord.log"

logfile="local0"

quiescent=no  #自动删除down掉的真实节点

virtual=192.168.50.179:80

real=192.168.50.172:80 gate

real=192.168.50.173: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"   #向真实服务器请求的网页文件名

receive="Test Page"    #从真实服务器返回的网页内容,当检测不到此网页文件或返回的内容不正确时即认为真实 节点down掉

#virtualhost=www.x.y.z

(5)编辑cluster脚本文件(此脚本要放在/etc/init.d)下

[root@masterheartbeat-2.1.3]# vi /etc/init.d/cluster

#!/bin/bash

#description:start LVS of DirectorServer

#Writtenby qiu

# define used ip.

GW=192.168.50.254

VIP=192.168.50.179

RIP1=192.168.50.172

RIP2=192.168.50.173

./etc/rc.d/init.d/functions

case"$1" in

start)

#Clear all ipvsadmrules.

/sbin/ipvsadm -C

#set lvs vip fordr

/sbin/ipvsadm--set 30 5 60

/sbin/ifconfigeth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up

/sbin/route add-host $VIP dev eth0:0

/sbin/ipvsadm -A-t $VIP:80 -s rr -p 3  #-p选项设置session保持时间

/sbin/ipvsadm -a-t $VIP:80 -r $WEB_RIP1:80 -g -w 1

/sbin/ipvsadm -a-t $WEB_VIP:80 -r $RIP2:80 -g -w 1

touch/var/lock/subsys/ipvsadm > /dev/null 2>&1

# set Arp 当一台VS接管LVS服务时,可能会网络不通,这是因为路由器的MAC缓存表里无法及时刷新MAC.关于vip这个地址的MAC地址还是替换的VS的MAC,解决方法是使用arping命令.

/sbin/arping -Ieth0 -c 5 -s $VIP $GW > /dev/null 2>&1

;;

stop)

/sbin/ipvsadm -C

/sbin/ipvsadm -Z

ifconfig eth0:0down

route del $VIP

rm -rf /var/lock/subsys/ipvsadm> /dev/null 2>&1

/sbin/arping -Ieth0 -c 5 -s $VIP $GW

echo "ipvsadmstoped"

;;

status)

if [ ! -e/var/lock/subsys/ipvsadm ];then

echo "ipvsadmis stoped"

status)

if [ ! -e/var/lock/subsys/ipvsadm ];then

echo "ipvsadmis stoped"

exit 1

else

ipvsadm -ln

echo"..........ipvsadm is OK."

fi

;;

restart)

$0 stop

$0 start

;;

*)

echo "Usage:$0{start|stop|restart|status}"

exit 1

esac

exit 0

[root@masterheartbeat-2.1.3]#chmod 755 /etc/init.d/cluster

[root@masterheartbeat-2.1.3]#chkconfig -add heartbeat

至此负载节点已经安装配置完毕,把一下文件拷贝到相应备用节点的目录:

authkeys,ha.cf,haresources,ldirectord.cf,cluster

备用几点只需要改动ha.cf文件中 “ucast eth1 192.168.94.11”中的ip地址为负载节点的eth1所对应的ip即可。其他配置完全相同。

5.真实节点的相关操作

(1)在真实节点上安装lamp环境,或者其他应用程序,在制定存放网页的目录建立index.html文件,确保内容为“Test Page”

(2)在/etc/init.d下建立脚本文件:

#cat /etc/init.d/lvs_rs

#!/bin/sh

# chkconfig: 234572 08

# description:Config realserver lo:0 port and apply arp patch

VIP=192.168.50.179

./etc/rc.d/init.d/functions

case $1 in

start)

echo "lo:0 port starting"

echo "0">/proc/sys/net/ipv4/ip_forward

/sbin/ifconfig lo:0 $VIP broadcast $VIPnetmask 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

;;

stop)

echo "lo:0 port closing"

ifconfig lo:0 down

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

添加为系统启动服务:

#chkconfig –add lvs_rs

#chkconfig –level345 on

6.测试

在负载节点上运行  watch ipvsadm -ln  命令,此命令现实lvs的转发列表。

交替停掉或者全部停掉两台真实节点上的httpd服务,查看转发列表的变化。

停掉负载节点,查看备用节点是否接管任务。访问虚拟IP看是否能访问到两台真实节点的web服务。

7.维护

主要是查看 /var/log/messages;/var/log/ha-log;/var/log/ldirectord.log 中相关的日志信息做出调整

转载于:https://blog.51cto.com/xiaoo/1209463

Heartbeat+ipvsadm+ldirectord组建linux高可用集群相关推荐

  1. linux高可用集群(HA)原理详解

    高可用集群 一.什么是高可用集群 高可用集群就是当某一个节点或服务器发生故障时,另一个节点能够自动且立即向外提供服务,即将有故障节点上的资源转移到另一个节点上去,这样另一个节点有了资源既可以向外提供服 ...

  2. Linux高可用集群(Corosync+Pacemaker)

    说在前面: 这个编辑器也太霸道了,,两个浏览器,,一个不能粘贴,一个不能上图,只能保存草稿之后切换,   造孽啊! 写博不易,且看且珍惜   [蜡烛] ntp服务器配置 # vim /etc/ntf. ...

  3. 基于CENTOS7 Linux高可用集群LVS+Keepalived配置

    1.LVS安装配置 配置LVS负载均衡集群: 1.填写下列IP分配表 服务器角色 IP地址 DR 192.168.158.129 RS1 192.168.158.137 RS2 192.168.158 ...

  4. HA高可用集群与RHCS集群套件

    一.HA基本概念 linux高可用集群(HA)原理详解:https://blog.csdn.net/xiaoyi23000/article/details/80163344 负载均衡.集群.高可用(H ...

  5. Linux: CentOS 7下搭建高可用集群

    转载: http://linux.cn/article-3963-1.html 本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为 ...

  6. linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

    随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...

  7. linux集群-keepalived介绍-用keepalived配置高可用集群

    2019独角兽企业重金招聘Python工程师标准>>> linux集群介绍: 以功能划分:高可用和负载均衡 高可用集群:通常为两台服务器,一台工作,另外一台作为冗余.实现高可用的开源 ...

  8. centOS 7下安装与配置heartbeat高可用集群

    Heartbeat项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实 ...

  9. heartbeat+DRBD+mysql高可用集群实战

      heartbeat+DRBD+mysql高可用集群实战 四台主机 主机名                 IP地址             用途 dbm128                    ...

最新文章

  1. altair feko+winprop 2020中文版
  2. 乐Phone:还原联想的联想
  3. PHP返回数据json数据样式要求是对象{},而不是[]
  4. CometOJ#6 双倍快乐(简单DP)
  5. ACM竞赛常用STL(二)之STL--algorithm
  6. 创建组_在Allegro软件中的Groups组创建之后怎么进行打散呢?
  7. mysql和oracle的mybatis操作
  8. 【debug】UnboundLocalError local variable a referenced before assignment
  9. linux内核优化项,Linux内核优化配置
  10. 20210201:力扣第226周周赛(上)
  11. 泰斯花粉阻隔剂 怎么使用
  12. excel函数学习系列一
  13. 带有记忆的菲波那切数列
  14. Redis的持久化机制:RDB和AOF
  15. 百度网盘分享qt相关视频
  16. python爬取谷歌图片_Python 爬取谷歌街景图片
  17. matlab生成的图片里怎么加入字体,Matlab,Visio等生成的图片的字体嵌入问题解决方法...
  18. 手机无法连接wifi,提示正在获取ip, ip分配失败
  19. android 设置默认铃声,我的Android进阶之旅------gt;Android系统设置默认来电铃声、闹钟铃声、通知铃声,android进阶...
  20. 身份证、手机号、邮箱、银行卡、企业税号等正则校验

热门文章

  1. spring注解@service(service)括号中的service有什么用?
  2. python发送短信内容_通过Python发送短信
  3. linux进程故障如何修复,33.Linux开机过程及启动故障修复
  4. python命令式编程的概念,【Python】十分钟学会函数式编程
  5. iphone以旧换新活动_iPhone:我降价 1600 元!安卓:我有 5G
  6. vue中 .sync 修饰符 个人理解
  7. android 让item满屏,Android的全屏活动?
  8. linux下的geany源码安装,linux 下php开发工具geany-0.16的安装。
  9. pythonfor循环加2_python-for循环
  10. 数据结构实验之栈与队列五:下一较大值(一)