centos6 搭建heartbeat
Heartbeat是High-Availability Linux Project (Linux下的高可用性项目)的产物,是一套提供防止业务主机因不可避免的意外性或计划性宕机问题的高可用性软件。Heartbeat可以从Linux-HA 项目Web 站点免费获得,它提供了所有HA (高可用性)系统所需要的基本功能,如启动和停止资源、监测群集中系统的可用性、在群集中的节点间转移共享IP 地址的所有者等。它通过串行线、以太网接口或同时使用两者来监测特定服务(或多个服务)的运行状况。
Heartbeat实现了HA 功能中的核心功能——心跳,将Heartbeat软件同时安装在两台服务器上,用于监视系统的状态,协调主从服务器的工作,维护系统的可用性。它能侦测服务器应用级系统软件、硬件发生的故障,及时地进行错误隔绝、恢复;通过系统监控、服务监控、IP自动迁移等技术实现在整个应用中无单点故障,简单、经济地确保重要的服务持续高可用性。
Heartbeat采用虚拟IP地址映射技术实现主从服务器的切换对客户端透明的功能。
实验环境
centos6.5_x64
master eth0 192.168.1.128
eth1 192.168.1.129
slave eth0 192.168.1.130
eth1 192.168.1.131
vip 192.168.1.200
实验软件
epel-release-6-8.noarch.rpm
nginx.x86_64
heartbeat.x86_64
软件安装
rpm -ivh epel-release-6-8.noarch.rpm
yum install -y libnet heartbeat* nginx* glib*
vim /etc/hosts
centos6 192.168.1.128 添加两行配置 master/slave相同操作 uname -n名字
centos6-1 192.168.1.130
less /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
centos6 192.168.1.128
centos6-1 192.168.1.130
ssh-keygen -t rsa master/slave 相同操作
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
scp /root/.ssh/id_rsa.pub root@192.168.1.128:/root/.ssh/authorized_keys
scp /root/.ssh/id_rsa.pub root@192.168.1.130:/root/.ssh/authorized_keys ssh信任
scp /root/aa.txt root@192.168.1.128:/root/
aa.txt 100% 0 0.0KB/s 00:00
scp /root/bb.txt root@192.168.1.130:/root/
bb.txt 100% 0 0.0KB/s 00:00
如果使用scp命令没有提示输入密码表示ssh信任成功
service nginx start
chkconfig --level 35 nginx on
cd /usr/share/doc/heartbeat-3.0.4/ master/slave相同操作
cp authkeys ha.cf haresources /etc/ha.d/
vim /etc/ha.d/authkeys
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello! 找到
#auth 1
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello! 改为 第一种是CRC循环冗余校验,第二种是SHA1哈希算法,第三种是MD3哈希算法
chmod 600 /etc/ha.d/authkeys
vim /etc/ha.d/haresources
centos6 192.168.1.200/24/eth0:0 nginx master端配置
centos6-1 192.168.1.200/24/eth0:0 nginx slave端配置
设定虚拟IP和对应的接口,并且指定启动虚拟IP时启动NGINX服务
vim /etc/ha.d/ha.cf
#debugfile /var/log/ha-debug 找到
debugfile /var/log/ha-debug 改为
touch /var/log/ha-debug
#logfile /var/log/ha-log 找到
logfile /var/log/ha-log 改为 日志文件位置
touch /var/log/ha-log
logfacility local0
#keepalive 2 找到 检查时间间隔
keepalive 2 改为
#deadtime 30 找到 设定死亡时间
deadtime 30 改为
#warntime 10 找到 设定告警时间
warntime 10 改为
#initdead 120 找到 设定初始化时间
initdead 20 改为
#udpport 694 找到
udpport 694 改为 udp端口号
#ucast eth0 192.168.1.2 找到
ucast eth1 192.168.1.131 改为 master端配置 eth1为心跳线ip 192.168.1.131为slave端ip
ucast eth1 192.168.1.129 改为 slave端配置 eth1为心跳线ip 192.168.1.129为master端ip
auto_failback on 找到 启动抢占模式(主在挂了以后重新起来后备会自动切换成备)auto_failback auto_failback on 改为
node centos6 指定负载节点
node centos6-1
#ping 10.10.10.254 找到
ping 192.168.1.101 改为
#respawn hacluster /usr/lib/heartbeat/ipfail 找到
respawn hacluster /usr/lib64/heartbeat/ipfail 改为
chmod 600 /etc/ha.d/ha.cf
service heartbeat start master/slave端相同操作
netstat -tuplna | grep heartbeat
udp 0 0 0.0.0.0:56611 0.0.0.0:* 6831/heartbeat: wri
udp 0 0 0.0.0.0:694 0.0.0.0:* 6831/heartbeat: wri
ps -ef | grep heartbest
root 8034 8015 0 00:27 pts/0 00:00:00 grep heartbest
tail -f /var/log/ha-log
ip-request-resp(default)[12892]: 2017/10/25_01:25:59 received ip-request-resp 192.168.1.200/24/eth0:0 OK yes
ResourceManager(default)[12915]: 2017/10/25_01:26:00 info: Acquiring resource group: centos6 192.168.1.200/24/eth0:0 nginx
/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.1.200)[12943]: 2017/10/25_01:26:00 INFO: Resource is stopped
ResourceManager(default)[12915]: 2017/10/25_01:26:00 info: Running /etc/ha.d/resource.d/IPaddr 192.168.1.200/24/eth0:0 start
IPaddr(IPaddr_192.168.1.200)[13076]: 2017/10/25_01:26:00 INFO: Adding inet address 192.168.1.200/24 with broadcast address 192.168.1.255 to device eth0 (with label eth0:0)
IPaddr(IPaddr_192.168.1.200)[13076]: 2017/10/25_01:26:00 INFO: Bringing device eth0 up
IPaddr(IPaddr_192.168.1.200)[13076]: 2017/10/25_01:26:00 INFO: /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-192.168.1.200 eth0 192.168.1.200 auto not_used not_used
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:45:17:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.129/24 brd 192.168.1.255 scope global eth1
inet6 fe80::20c:29ff:fe45:1773/64 scope link
valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:45:17:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0:0
inet6 fe80::20c:29ff:fe45:1769/64 scope link
valid_lft forever preferred_lft forever master端
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:3d:5b:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.130/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0:0
inet6 fe80::20c:29ff:fe3d:5b1b/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:3d:5b:25 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.131/24 brd 192.168.1.255 scope global eth1
inet6 fe80::20c:29ff:fe3d:5b25/64 scope link
valid_lft forever preferred_lft forever slave端
看到eth0:0 说明配置成功
echo nginx_master > /usr/share/nginx/html/index.html master端
echo nginx_slave > /usr/share/nginx/html/index.html slave端
nginx -s reload
本文转自 mailfile 51CTO博客,原文链接:http://blog.51cto.com/mailfile/1975846,如需转载请自行联系原作者
相关文章:

标准C++中的string类的用法总结
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用M…

NCEPU:线下组队学习周报(007)
线下组队学习 经过一段时间的准备,我们组织的线下组队学习逐步进入正轨。欢迎华北电力大学保定校区的伙伴加入进来大家一起学习一起成长。 我们开展组队学习的内容为: (1)周志华的《机器学习》(西瓜书) …

java培训面试技巧分享
很多人在学会java技术之后,就开始筹备自己的面试了,java技术在互联网行业的需求是很大的,所以内卷是很严重的,在面试环节一定要全力以赴才行,下面小编就教大家一些java培训面试技巧,希望能帮助到大家。 jav…

Python线程锁
多线程适用于IO密集型,多线程实现方式有两种,详见下方例子 例子: import threading class MyThread(threading.Thread): def __init__(self, args): #使用super写法,按照父类.方法的方式直接重写 super(MyThread, self).__init__(…

session_id
<?php session_start(); echo session_id(); // 输出 dqr58dnuqj2gufvg4o3tmjb9v4?>设置 session_id()<?php session_id("NowaMagic"); session_start(); echo session_id(); ?>程序恢复session,首先要知道session_id,大家通过…

【青少年编程】【二级】寻找宝石
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档&…

零基础参加java培训主要学什么
互联网行业永远是一个需求非常大的行业,尤其是技术人员岗位,java技术岗一直很受大家的关注,不少学员都是零基础开始学,那么零基础参加java培训主要学什么呢?来看看下面的详细介绍。 零基础参加java培训主要学什么?其实无论学什么…

python pexpect
123456789101112131415161718192021222324252627282930313233343536373839404142434445Python 远程批量修改密码脚本#tar -zxvf pexpect-3.0.tar.gz#cd pexpect-3.0#python setup.py install#!/usr/bin/env python#coding:utf8import pexpect impo…
牧小熊:Adobe Illustrator 在科研作图中的应用!
聂雄伟,华中农业大学,Datawhale原创作者。 关于大数据的完整讲解!电商数据分析项目总结!数据项目总结:蛋壳公寓租金分析!数据项目总结:王者荣耀总决赛预测!你要的用户画像实践来了&…

win7,windowsXP安装mysql-5.1.49-win32,中文版、英文版,通吃
安装过程与其它Windows安装程序一样,首先出现的是安装向导欢迎界面[img]file:///C:/Users/房继诺/AppData/Roaming/Tencent/Users/1194361820/QQ/WinTemp/RichOle/0U9%7BVWW%60KM~S2X)VM2QF0N.jpg[/img] 直接点击“Next”,继续,选择安装类型这…

UI设计培训教程分享:UI设计师的色彩使用技巧
作为一名合格的UI设计师,色彩的使用是非常重要的,一个专业的UI设计师对于UI设计色彩的搭配是非常的出色的,下面小编就为大家分享UI设计培训教程:UI设计师的色彩使用技巧 UI设计培训教程分享:UI设计师的色彩使用技巧 一…

hive 使用技巧笔记
来源:http://michael-roshen.iteye.com/blog/2115268 例子: INSERT OVERWRITE TABLE prices_collected_${hiveconf:wid_version} select pc.collect_id as product_id , regexp_extract(pc.price,(\\d*\\.?\\d),1) as price , pc.region, as location…

GNU make manual 翻译( 一百四十九)
继续翻译 5.7.4 The --print-directory Option ------------------------------------If you use several levels of recursive make invocations, the -w or --print-directory option can make the output a lot easier to understand by showing each directory as make sta…

【青少年编程】马雷越:商品价格竞猜
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档&…

女生参加web前端培训压力大吗
女生参加web前端培训压力大吗?这个问题很多人都是想知道的,因为对于互联网行业来说,大部分都是男性,尤其是技术岗位,女生做前端压力大小和能力也有很大的关系,前端技术好工作效率高,那么压力相对较低。 女…

Android 入门开发
哈哈 我已经学会Android开发了 而且还发布了两款产品 转载于:https://www.cnblogs.com/Aixieer/archive/2012/10/04/2711443.html

整理了一下Asp.net源码常见问题(完善中...),欢迎大家补充修正(最后更新于06-01)!...
以下是一些51aspx网友经常反馈的问题,特总结放在下面,本部分内容会陆续更新。同时也提醒广大网友在仔细查看源码项目对应的运行环境及每个代码中所附的文本文件《51aspx源码必读.txt》。 Q:打开51aspx上网站源码项目需要什么样的软件环境&…

谢文睿:西瓜书 + 南瓜书 吃瓜系列 1. 一元线性回归
Datawhale南瓜书是经典机器学习教材《机器学习》(西瓜书)的公式推导解析指南,旨在让在学习西瓜书的过程中,再也没有难推的公式,学好机器学习。 相关内容: 西瓜书公式推导讲解来了!0. 导学 后台…

Python培训教程分享:“高效实用” 的Python工具库
作为一名合格Python技术员,对于Python工具库的使用是少不了的,本期Python培训教程就为大家分享的是““高效实用” 的Python工具库”,希望能够帮助到大家。 Python培训教程分享:“高效实用” 的Python工具库: 1、Reque…

LNMP安装与启动脚本编写
1、安装mysql 1cd /usr/local/src/ 下载mysql: 1wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.72-linux-x86_64-glibc23.tar.gz 解压: 1tar zxvf/usr/local/src/mysql-5.1.72-linux-x86_64-glibc23.tar.gz 更改命名: 1mv mysql-5…

Flash Builder 找不到所需的Adobe Flash Player调试器版本的解决办法
Flash Builder在Debug时出现的问题:Flash Builder 找不到所需的Adobe Flash Player调试器版本 解决方法: 1. 进入Flash Builder的安装目录 C:\Program Files\Adobe\Adobe Flash Builder 4.6\player\win\11.1 2. 安装flashplayer_11_plugin_debug.exe&…

谢文睿:西瓜书 + 南瓜书 吃瓜系列 2. 多元线性回归
Datawhale南瓜书是经典机器学习教材《机器学习》(西瓜书)的公式推导解析指南,旨在让在学习西瓜书的过程中,再也没有难推的公式,学好机器学习。 以往内容: 西瓜书公式推导讲解来了!0. 导学1. 一…

UI设计培训分享:ui设计师如何培养设计思维?
作为一名UI设计师,工作上经常会遇到思维碰撞的问题,培养自己的设计思维是大部分UI设计师都需要的,那么ui设计师如何培养设计思维呢?来看看下面的详细介绍。 UI设计培训分享:ui设计师如何培养设计思维? 一、因舍而得 正如我们看到…

[转载红鱼儿]kbmmw 开发点滴:ErrorTable用法
TkbmMWClientQuery有一个ErrorTable属性,用于记录提交Query时返回的错误结果。当用户保存修改的业务数据,出错时,可以用ErrorTable定位出错的记录并提示错误信息。 下面是实现代码: procedure TForm2.Button4Click(Sender: TObjec…

ijkplayer iOS集成
2019独角兽企业重金招聘Python工程师标准>>> http://www.jianshu.com/p/1f06b27b3ac0 如果按楼主的方式配置后还编译报错,可能的原因是,需要将环境设置成C混编环境,可以直接将AppDelegate.m 改名成AppDelegate.mm 即可 转载于:htt…

【Whalepaper】CV论文研读 - OneNet:Towards End-to-End One-Stage Object Detection
Whalepaper是由周郴莲负责的一个每周分享论文的活动。 NLP 论文分享:每周日 晚上 九点CV 论文分享: 每周日 晚上 九点Res 论文分享:每周六 晚上 九点半 欢迎对paper感兴趣的人加入我们的分享啊!!! 分享人…

软件测试培训分享:做软件测试工作如何清楚的描述一个bug
一名合格的软件测试工程师是需要清楚的交代自己的工作任务的,必须要清楚的告诉技术员出现的bug,那么做软件测试工作如何清楚的描述一个bug呢?来看看下面的详细介绍。 软件测试培训分享:做软件测试工作如何清楚的描述一个bug? 发现问题的版本…

kvm虚拟化学习笔记(十七)之KVM到KVM之v2v迁移
1.源KVM虚拟主机node1(1).查看源KVM虚拟主机上的虚拟机列表,本文计划将CentOS6.5-01虚拟机迁移到其它KVM虚拟主机中。[rootnode1 ~]# virsh list --allId Name State ----------------------------------------------------- CentOS6.5-01 …

UVA 216 Getting in Line
大意:给你一些定点,让你以代价最小的边将所有的点连起来。 思路:数据范围很小,可以通过最小生成树或者回溯来解决。 最小生成树去写时不知道哪错了,于是用回溯模拟了一遍,相当于模拟一个数组的全排列。 AC …

【青少年编程】【三级】猜数字
Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 猜数字…