http、mysql高可用 heartbeat v1

HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。

HA集群架构:

整体的HA结构分为三层:

1,Messaging Layer: 基础事务层

在基础架构上实现心跳信息探测。双方节点可以随时探测到对方的心跳信息,以实现对对方主机工作状态的探测。三类控制信息:心跳(Heartbeats ),集群事务信息(Cluster Transition Messages),重传信息(Retransmission Request)。 配置文件:/etc/ha.d/ha.cf。各节点间域共享密钥,实现节点间互相通信的认证。加密方式:MD5,HMAC-SHA1 。常用实现软件:HeartBeat、keepalived、ultramonkey、openais/corosync。红帽官方提供的集群套件RHCS底层使用的通信机制就是openais/corosync。

2,Cluster Resource Manager:集群资源管理层

在资源分配上定义资源种类,界定资源归属,每个服务需要哪些资源及这些资源之间的前后次序。

集群资源管理器(CRM,常用软件pacemaker),管理双方向外提供服务所需用到的资源,包括IP地址、Web服务、共享存储等等。而这些资源需要依靠集群信息库CIB(XML文件)来定义,同时还必须保证一旦某个节点上的XML文件更新,即刻通知其他节点上的XML也要及时更新。

heartbeat v1: 自带资源管理器haresources(配置接口:配置文件,文件名也叫haresources)

heartbeat v2: 自带资源管理器crm (各节点运行crmd进程,配置接口:命令行客户端crmsh,GUI客户端hb-gui)

heartbeat v3 = heartbeat + pacemaker + cluster-glue

策略引擎(PE Policy Engine):定义法定人数以及根据法定人数所做出的动作等等。

3,Local Resource Manager:本地资源管理层,监控本地某个资源的工作状况

RA本地资源代理(Resource Agent),脚本文件,一旦集群资源管理器发现某个资源工作异常,立即通知本地资源代理重启服务。常用方法:

(1)Heartbeat v1;

(2)使用脚本LSB scripts (Linux Standards Base );

(3)OCF  Open Cluster Format 开放集群格式(最佳方式)。

高可用集群常用架构模型

(1)一主一从架构;

(2)互为主从架构:两台主机分别提供两种不同的服务;

(3)多主机架构:N台主机组成一个集群,分别提供不同的服务,一台服务器空闲做备节点。或者全部处于工作状态,一台服务器出故障,立刻将服务转移到其他主机上。各节点之间需要以多播的形式将自己的健康情况发送给其他主机。

实验内容:

基于heartbeat v1实现http、mysql高可用,mysql数据放在nfs文件系统上。

两台单独的服务器为node1 ,node2 做http的高可用。两台单独的服务器做MySQL的主备服务器。两台http服务器上的数据需要完全一样。两台MySQL上数据也要同步。

应为实验需要的主机太多,设备有限,所以下边实验将MySQL的主和http的主节点放在同一主机上 ,NFS文件系统也放在node1上。当然这样node1挂掉会使整个MySQL的文件系统挂掉。所以实际应用中mysql,http,nfs都要分开来放,以保证各节点的无不干扰。

实验环境:

node1:172.16.18.1

配置程序:http,mysql,NFS

node2:172.16.249.138

配置程序:http,mysql

实验过程:

首先在node1,node2 两台主机上都装上heartbeat v1,因为在CentOS6以后不提供rpm包的安装,所以安装方法可以编译安装,也可以去网上下载制作好的rpm包,我们实验采用制作好的rpm包

在node1 和node2上都安装

[[email protected] ~]# yum install perl-TimeDate PyXML libnet net-snmp-libs -y

[[email protected] ~]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm 
Preparing... ########################################### [100%] 
1:heartbeat-pils ########################################### [ 33%] 
2:heartbeat-stonith ########################################### [ 67%] 
3:heartbeat ########################################### [100%]

时间同步:在node1主机和node2主机上执行时间同步命令。172.16.0.1为时间服务器。

[[email protected] ~]# ntpdate 172.16.0.1

node2

[[email protected] ~]# ssh-keygen -t rsa -P ‘‘     生成ssh密钥文件

[[email protected] .ssh]# scp id_rsa.pub [email protected]:/tmp

[[email protected] tmp]# cat /tmp/id_rsa.pub > /root/.ssh/authorized_keys

node1

[[email protected] ~]# ssh-keygen -t rsa -P ‘‘     生成ssh密钥文件

[[email protected] .ssh]# scp id_rsa.pub [email protected]:/tmp

[[email protected] tmp]# cat /tmp/id_rsa.pub > /root/.ssh/authorized_keys

验证是否可无需密钥访问:

node2主机执行

[[email protected] .ssh]# ssh node1.aolens.com ‘date‘;date 
Thu Sep 4 22:07:45 CST 2014 
Thu Sep 4 22:07:45 CST 2014

node1主机执行

[[email protected] .ssh]# ssh node2.aolens.com  ‘date‘;date 
Thu Sep 4 22:09:09 CST 2014 
Thu Sep 4 22:09:09 CST 2014

heartbeat 监听在694/tcp,udp上。

heartbeat的配置由三组组成:

主配置文件:ha.cf

认证密钥:authkeys, 其权限必须为组和其它无权访问; 是600 或400

用于资源的文件:haresources

主备节点的配置参数必须一样。主节点名称为进程平时启用的节点名称,只有主节点出现故障才会切到备用节点。

网卡别名,只需要制定在那块网卡上配置别名,而不用指定别名。

将node1配置为主服务节点。

第一配置ha.cf

[[email protected] ~]# cd /etc/ha.d/                                             #进入到/etc/ha.d/

[[email protected] ha.d]# ls /usr/share/doc/heartbeat-2.1.4/         #查看heartbeat下的文件    
apphbd.cf GettingStarted.html heartbeat_api.txt authkeys GettingStarted.txt logd.cf AUTHORS ha.cf README ChangeLog HardwareGuide.html Requirements.html COPYING HardwareGuide.txt Requirements.txt COPYING.LGPL haresources rsync.html DirectoryMap.txt hb_report.html rsync.txt faqntips.html hb_report.txt startstop faqntips.txt heartbeat_api.html

[[email protected] ha.d]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys}  ./           #copy主配置文件,认证密钥,资源文件到/etc/ha.d/

[[email protected] ha.d]# ll                  #查看authkeys的权限    
total 48 
-rw-r--r-- 1 root root 645 Sep 4 22:41 authkeys 
-rw-r--r-- 1 root root 10539 Sep 4 22:41 ha.cf 
-rwxr-xr-x 1 root root 745 Sep 10 2013 harc 
-rw-r--r-- 1 root root 5905 Sep 4 22:41 haresources 
drwxr-xr-x 2 root root 4096 Sep 4 22:26 rc.d 
-rw-r--r-- 1 root root 692 Sep 10 2013 README.config 
drwxr-xr-x 2 root root 4096 Sep 4 22:26 resource.d 
-rw-r--r-- 1 root root 7864 Sep 10 2013 shellfuncs 
[[email protected] ha.d]# chmod 600 authkeys                #修改权限。

[[email protected] ha.d]# vim ha.cf

logfile /var/log/ha-log                            #启用日志

#logfacility local0                                #注释local 0的日志保存位置。

mcast eth0 225.18.18.100 694 1 0                   #定义组播地址。并启用

auto_failback on                                   #确定启用

#node kathy 
node node1.aolens.com                              #添加node节点    
node node2.aolens.com

ping 172.16.0.1                                    #ping节点指向网关

配置ok

[[email protected] tmp]# openssl rand -hex 8                #生成随机密钥    
d83e19f1c779c57c

[[email protected] ha.d]# vim authkeys                      #在最后添加加密数据

auth 1

1 sha1 d83e19f1c779c57c

[[email protected] ha.d]# vim haresources

node1.aolens.com 172.16.18.1/16/eth0/172.16.255.255 httpd mysqld

配置完成文件配置.

[[email protected] ha.d]# scp /etc/ha.d/{ha.cf,haresources,authkeys} node2:/etc/ha.d/         复制配置文件去node2节点。

启动node1,node2上的heartbeat文件

[[email protected] ha.d]# service heartbeat start          #启动node1    
Starting High-Availability services: 
2014/09/05_22:50:49 INFO: Resource is stopped 
Done. 
[[email protected] ha.d]# ss -unl 
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
UNCONN 0 0 225.18.18.100:694 *:*                     #查看被监听的资源,在UDP/694端口    
[[email protected] ha.d]# ifconfig                          #查看网卡IP配置是否OK

eth0 Link encap:Ethernet HWaddr 00:0C:29:64:42:F1 
inet addr:172.16.249.138 Bcast:172.16.255.255 Mask:255.255.0.0 
inet6 addr: fe80::20c:29ff:fe64:42f1/64 Scope:Link 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:870175 errors:0 dropped:0 overruns:0 frame:0 
TX packets:119166 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:1000 
RX bytes:119105660 (113.5 MiB) TX bytes:18401479 (17.5 MiB) 
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:64:42:F1 
inet addr:172.16.18.18 Bcast:172.16.255.255 Mask:255.255.0.0 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
lo Link encap:Local Loopback 
inet addr:127.0.0.1 Mask:255.0.0.0 
inet6 addr: ::1/128 Scope:Host 
UP LOOPBACK RUNNING MTU:16436 Metric:1 
RX packets:3357 errors:0 dropped:0 overruns:0 frame:0 
TX packets:3357 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
RX bytes:261024 (254.9 KiB) TX bytes:261024 (254.9 KiB)

[[email protected] ha.d]# ss -tnl 
State Recv-Q Send-Q Local Address:Port Peer Address:Port              #查看监听的服务OK    
LISTEN 0 128 :::80 :::* 
LISTEN 0 128 *:3306 *:*

[[email protected] ha.d]# ssh node2.aolens.com ‘service heartbeat start‘     #在node1上启动node2.    
logd is already running 
Starting High-Availability services: 
2014/09/05_20:34:12 INFO: Resource is stopped 
Done. 
[[email protected] ha.d]# ssh node2.aolens.com ‘ss -unl‘ 
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
UNCONN 0 0 225.18.18.100:694 *:* 
[[email protected] ha.d]# ssh node2.aolens.com ‘ifconfig‘ 
eth0 Link encap:Ethernet HWaddr 00:0C:29:83:02:FD 
inet addr:172.16.18.1 Bcast:172.16.255.255 Mask:255.255.0.0 
inet6 addr: fe80::20c:29ff:fe83:2fd/64 Scope:Link 
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 
RX packets:133603 errors:0 dropped:0 overruns:0 frame:0 
TX packets:47903 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:1000 
RX bytes:20224936 (19.2 MiB) TX bytes:9346583 (8.9 MiB) 
lo Link encap:Local Loopback 
inet addr:127.0.0.1 Mask:255.0.0.0 
inet6 addr: ::1/128 Scope:Host 
UP LOOPBACK RUNNING MTU:16436 Metric:1 
RX packets:4198 errors:0 dropped:0 overruns:0 frame:0 
TX packets:4198 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
RX bytes:700967 (684.5 KiB) TX bytes:700967 (684.5 KiB)

[[email protected] ha.d]# service heartbeat stop                   #关闭主服务器,看被服务能否启动

[[email protected] ha.d]# ssh node2.aolens.com ‘ss -tnl‘           #备服务启动    
State Recv-Q Send-Q Local Address:Port Peer Address:Port 
LISTEN 0 128 :::80 :::* 
LISTEN 0 128 *:3306 *:*

[[email protected] ha.d]# service heartbeat start                  #启动主服务器,夺回资源。

[[email protected] ha.d]# ss -tnl 
State Recv-Q Send-Q Local Address:Port Peer Address:Port    #查看监听的服务OK    
LISTEN 0 128 :::80 :::* 
LISTEN 0 128 *:3306 *:*

基于httpd,mysql的高可用配置成功。

下来我们来配置mysql的数据存放位置,nfs文件系统。

在node1 上配置。

没有安装nfs-utils的自行安装;

[[email protected] ~]# vim /etc/exports                             #创建nfs共享目录    
/nfsserver 172.16.0.0/16(rw,async,no_root_squash)

给共享目录apache用户的rwx权限:

setfacl -m u:apache:rwx /nfsserver/data/

重启服务:service nfs restart

[[email protected] ~]# showmount -a 172.16.249.138                  #在node2查看NFS    
All mount points on 172.16.249.138:    
[[email protected] ~]# mount -t nfs 172.16.249.138:/nfsserver/data/ /mydata/data/    #挂载nfs

[[email protected] mysql]# cd /usr/local/                           #切换到mysql的安装目录下

[[email protected] local]# mysql_install_db --user=mysql --datadir=/mydata/data/     #初始化mysql

然后在node1上启动mysql时,mysql会自己初始化,

[[email protected] data]# service mysqld start

Initializing MySQL database: Installing MySQL system tables...OK

Filling help tables...OK

To start mysqld at boot time you have to copy

support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !

To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password ‘new-password‘

/usr/bin/mysqladmin -u root -h node1.aolens.com password ‘new-password‘

Alternatively you can run:

/usr/bin/mysql_secure_installation

which will also give you the option of removing the test

databases and anonymous user created by default. This is

strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:

cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl

cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script![ OK ]

Starting mysqld: [ OK ]

此时两个不同主机所使用的mysql数据目录是一个。当然要注意的是两个节点的mysql版本要完全一样。

此时启动node1 和node2的heartbeat

访问172.16.18.18

如果将node1 上的heartbeat stop     访问到的结果将是。

实验到此结束!

时间: 09-20

http、mysql高可用 heartbeat v1的相关文章

heartbeat v2配置高可用web集群和基于nfs搭建MySQL高可用集群

安装环境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2 提供两台机器node1和node2,在/etc/hosts文件中添加名称解析,并且主机名称要与节点名称要相同,即uname -n的名称要和hosts定义的名称必须一样. #   IP                         HOSTNAME             ALIAS 10.204.80.79     node1.mylinux.com     node1 10.204.80.80  

基于heartbeat v2 crm实现基于nfs的mysql高可用集群

前言 因heartbeat v1内置的资源管理器haresource功能比较简单,且不支持图形化管理,所以heartbeat v2不再支持haresource,转而使用更加强大的资源管理器crm进行集群管理.本文将讲解如何基于heartbeat v2 crm实现基于nfs的mysql高可用集群. 高可用实现 实验拓扑 实验环境 node1:172.16.10.123 mariadb-5.5.36 CentOS6.6 node2:172.16.10.124 mariadb-5.5.36 CentO

Mysql+DRBD+Heartbeat 实现mysql高可用的双击热备(DRBD篇)

DRBD官方tar包下载地址:   http://oss.linbit.com/drbd/ 环境介绍: 系统版本:CentOS 6.4 (64位) 内核版本  2.6.32-358.el6.x86_64 软件版本:drbd-8.4.3.tar.gz 主:10.0.0.1   从:10.0.0.2 两台机器上的hosts都需要修改: [[email protected] ~]# vim /etc/hosts 10.0.0.1    node1 10.0.0.2    node2 两台服务器双网卡,

Mysql+DRBD+Heartbeat 实现mysql高可用的双机热备(mysql+heartbeat篇)

*************************************部署MYSQL******************************************* yum -y install  gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake bison* useradd mysql -d /usr/loc

Heartbeat+Drbd+MySQL高可用

一.环境介绍 继续使用之前heartbeat+drbd+nfs的环境,192.168.49.0/24网段用来ssh远程连接,172.16.49.0/24用来做心跳连接,并且也做drbd同步数据使用.因为中间做了好多改变,这里再次给出环境的配置情况. 主机名 角色 IP地址 heartbeat01.contoso.com heartbeat+drbd+mysql(节点1) eth0:192.168.49.133 eth1:172.16.49.133 heartbeat02.contoso.com

Heartbeat+DRBD+MySQL高可用方案

Heartbeat+DRBD+MySQL高可用方案 =============================================================================== 概述: =============================================================================== 方案介绍  1.方案介绍及优缺点 ★方案介绍 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数

15、 Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节

15. Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 参考自:http://oldboy.blog.51cto.com/2561410/1240412 heartbeat和keepalived应用场景及区别 很多网友说为什么不使用keepalived而使用长期不更新的heartbeat,下面说一下它们之间的应用场景及区别: 1.对于web,db,负载均衡(lvs,haproxy,nginx)等,heartbeat和keepalived都可以实现 2.lvs最好和keepa

mysql高可用集群——heartbeat+drbd

heartbeat+drbd+mysql是一种早期的mysql高可用技术. 资料来源:http://www.drbd.org DRBD原理:DRBD是对磁盘块操作的复制,可看做网络raid1.不复制磁盘内容,只复制操作.原理可见下图 架构描述 服务器列表 192.168.1.82 192.168.1.1 3306 主 /dev/drbd0 192.168.1.82 192.168.1.2 3306 备 /dev/drbd0 架构图 安装配置: 配置drbd 1.检查机器名解析: 1.查看解析 s

Heartbeat+DRBD+MySQL高可用方案【转】

转自Heartbeat+DRBD+MySQL高可用方案 - yayun - 博客园 http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主mysql提供服务. 2.方案优缺点 优点:安全性高.稳