Heartbeat+DRBD+MySQL高可用方案

Heartbeat+DRBD+MySQL高可用方案node

===============================================================================mysql

概述:linux


===============================================================================c++

方案介绍

 1.方案介绍及优缺点
sql

方案介绍shell

  • 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证。默认状况下只有一台mysql在工做,当主mysql服务器出现问题后,系统将自动切换到备机上继续提供服务,当主数据库修复完毕,又将服务切回继续由主mysql提供服务。数据库

方案优缺点vim

优势:后端

  • 安全性高、稳定性高、可用性高,出现故障自动切换。
    api

缺点:

  • 只有一台服务器提供服务,成本相对较高,不方便扩展,可能会发生脑裂。

 2.软件介绍

Heartbeat介绍

  • 官方站点:http://linux-ha.org/wiki/Main_Page

  • heartbeat能够将资源(VIP地址及程序服务)从一台有故障的服务器快速的转移到另外一台正常的服务器提供服务,heartbeat和keepalived类似,heartbeat能够实现failover功能,但不能实现对后端的健康检查;

DRBD介绍

方案拓扑及适用场景

wKiom1kAThmiD5t4AADnVtw4wzA400.png


适用场景:

  • 适用于数据库访问量不太大,短时间内访问量增加不会太快,对数据库可用性要求很是高的场景。

安装部署及测试

 1.测试环境介绍(均已关闭防火墙和selinux)

主机名
IP地址
系统 DRBD磁盘 heartbeat版本
per2 172.22.144.232 CentOS 6.5
/dev/sdb3 2.1.4-12
per3 172.22.144.233 CentOS 6.5 /dev/sdb3 2.1.4-12

 2.测试环境准备:

本地yum源配置

将装系统时使用的光盘上的全部文件拷贝到主机 /cdrom下

wKiom1kAXg7Alf0cAAAa3RQBrRs813.png

Ntpserver配置

集群服务各节点之间的时间必须是同步的,因此这里须要搭建一台NTP server,这里选择在一台服务器(node1)上搭建,其余节点(配置crontab)用ntpdate serverip进行同步,具体部署步骤以下:

wKioL1kAYAqiex35AAAvQExsPXo208.png

域名解析配置

将全部的IP和主机名写入一台服务器的/etc/hosts,而后scp到每一台服务器。

wKiom1kAYQ_jWj0UAAAF4pR1hRA200.png

主被服务器件双机互信通讯

wKioL1kAYXLAGoZaAAASHMA-_Yo530.png




DRBD安装配置及启动测试:

1.安装依赖包(node1和node2都要作)

yum install -y gcc gcc-c++ make glibc flex kernel-devel kernel-headers PyXML net-snmp-libs tigervnc-server

2.DRBD的安装及配置(node1和node2都要作)

1)安装包准备以下:

[root@node1 heartbeat+drbd+mysql]# cd drbd/
[root@node1 drbd]# ll
总用量 45652
-rw-r--r-- 1 root root   224376 4月  26 17:15 drbd83-utils-8.3.16-1.el6.elrepo.x86_64.rpm
-rw-r--r-- 1 root root   688328 4月  26 17:15 drbd-8.4.3.tar.gz
-rw-r--r-- 1 root root 30514788 4月  26 17:16 kernel-2.6.32-504.12.2.el6.x86_64.rpm
-rw-r--r-- 1 root root 15133064 4月  26 17:16 kernel-firmware-2.6.32-504.12.2.el6.noarch.rpm
-rw-r--r-- 1 root root   177360 4月  26 17:16 kmod-drbd83-8.3.16-3.el6.elrepo.x86_64.rpm

2)解压 drbd-8.4.3.tar.gz的压缩包,并进入到解压后的目录中,执行命令,以下:

# 解压
[root@node1 drbd]# tar -zxvf drbd-8.4.3.tar.gz
[root@node1 drbd]# cd drbd-8.4.3
[root@node1 drbd-8.4.3]# ls
autogen.sh  configure     documentation  drbd-kernel.spec.in  filelist-redhat  preamble         preamble-sles11  scripts
benchmark   configure.ac  drbd           drbd-km.spec.in      filelist-suse    preamble-rhel5   README           user
ChangeLog   COPYING       drbd_config.h  drbd.spec.in         Makefile.in      preamble-sles10  rpm-macro-fixes

[root@node1 drbd-8.4.3]# ./configure --prefix=/usr/local/drbd --with-km --with-heartbeat
[root@node1 drbd-8.4.3]# make KDIR=/usr/src/kernels/`uname -r`
[root@node1 drbd-8.4.3]# make install

# 编译完成后的文件在 /usr/local/drbd 路径下

3)进入 /usr/local/drbd 目录,完成后续操做以下:

[root@node1 drbd]# mkdir -p /usr/local/drbd/var/run/drbd
[root@node1 drbd]# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d

# 加入到服务中去
[root@node1 init.d]# chkconfig --add drbd
[root@node1 init.d]# chkconfig drbd on

4)加载drbd模块

[root@node1 init.d]# modprobe drbd

# 查看是否加载 drbd 模块
[root@node1 init.d]# lsmod |grep drbd
drbd                  326138  0 
libcrc32c               1246  1 drbd

3.DRBD的配置启动

1)编辑drbd的配置文件以下(node1和node2相同):

[root@node1 etc]# pwd
/usr/local/drbd/etc

[root@node1 etc]# vim drbd.conf 
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";
include "drbd.d/*.res";

resource data{                #建立一个资源,名字叫"data"
	protocol C;           #选择的是drbd的C 协议(数据同步协议,C为收到数据并写入后返回,确认成功)
	startup { wfc-timeout 0; degr-wfc-timeout 120;}
	disk { on-io-error detach;}
	net{
		timeout 60;
		connect-int 10;
		ping-int 10;
		max-buffers 2048;
		max-epoch-size 2048;
	}
	syncer { rate 100M;}
	on node1{			#设定一个节点,分别以各自的主机名命名			
		device /dev/drbd0;      #设定资源设备/dev/drbd0 指向实际的物理分区 /dev/sda3
		disk /dev/sdb3;
		address 172.21.1.112:7788;  #设定监听地址以及端口
		meta-disk internal;         #internal表示是在同一个局域网内
	} 
	on node2{
		device /dev/drbd0;
		disk /dev/sdb3;					
		address 172.21.1.113:7788;
		meta-disk internal;
	}
}

2)初始化资源并启动服务(node1和node2操做相同)

# /dev/sdb3 是 DRBD分区,在实验环境也多是逻辑卷,依据状况修改。
# 不这样作的话,在建立资源的时候报错
[root@node1 ~]# dd if=/dev/zero of=/dev/sdb3 bs=1M count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,3.33403 秒,31.5 MB/秒

[root@node1 ~]# drbdadm create-md data
you are the 57124th user to install this version
Writing meta data...
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
success

3)DRBD的启动与查看

[root@node1 init.d]# pwd
/etc/init.d

# 启动服务
[root@node1 init.d]# ./drbd start
Starting DRBD resources: [
     create res: data
   prepare disk: data
    adjust disk: data
     adjust net: data
]
outdated-wfc-timeout has to be shorter than degr-wfc-timeout
outdated-wfc-timeout implicitly set to degr-wfc-timeout (120s)

# 检查端口7788是否监听 
[root@node1 init.d]# netstat -tnp
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0    248 172.21.1.112:22             172.21.1.58:52000           ESTABLISHED 3922/sshd           
tcp        0      0 172.21.1.112:7788           172.21.1.113:50683          ESTABLISHED -                   
tcp        0      0 172.21.1.112:22             172.21.1.58:51494           ESTABLISHED 1893/sshd           
tcp        0      0 172.21.1.112:37965          172.21.1.113:7788           ESTABLISHED -

4)查看DRBD的状态,能够看到这时尚未主节点,两节点都为Secondary;

[root@node1 init.d]# ./drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@node1, 2017-04-28 10:22:42
m:res   cs         ro                   ds                         p  mounted  fstype
0:data  Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

[root@node1 sbin]# pwd
/usr/local/drbd/sbin
[root@node1 sbin]# ./drbd-overview 
  0:data/0  Connected Secondary/Secondary Inconsistent/Inconsistent C r-----

4.设置node1节点为主节点

[root@node1 ~]# drbdsetup /dev/drbd0 primary --force

# 再次查看能够发现数据同步过程已经开始
[root@node1 sbin]# ./drbd-overview 
  0:data/0  SyncSource Primary/Secondary UpToDate/Inconsistent C r---n- 
	[>....................] sync'ed:  0.2% (10236/10244)M
[root@node1 sbin]# ./drbd-overview 
  0:data/0  SyncSource Primary/Secondary UpToDate/Inconsistent C r---n- 
	[>...................] sync'ed:  7.7% (9464/10244)M	

[root@node1 init.d]# ./drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@node1, 2017-04-28 10:22:42
m:res   cs          ro                 ds                     p  mounted  fstype
...     sync'ed:    22.0%              (8000/10244)M
0:data  SyncSource  Primary/Secondary  UpToDate/Inconsistent  C

# 此时,可使用 watch -n 1 "./drbd-overview" 监控同步进度
# 等数据同步完成之后再次查看状态,能够发现节点已经牌实时状态,且节点已经有了主从
[root@node1 sbin]# ./drbd-overview 
  0:data/0  Connected Primary/Secondary UpToDate/UpToDate C r-----

5.建立文件系统,及查看最大挂载限制并解除

文件系统的挂载只能在Primary节点进行,所以,也只有在设置了主节点后才能对drbd设备进行格式化:

[root@node1 ~]# mkfs.ext4 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操做系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655776 inodes, 2622521 blocks
131126 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2688548864
81 block groups
32768 blocks per group, 32768 fragments per group
8096 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

################################################################################
# 查看最大挂载限制
[root@node1 ~]# tune2fs -l /dev/drbd0 | grep ^M
Mount count:              0
Maximum mount count:      38

# 解除最大挂载限制
[root@node1 ~]# tune2fs -i 0 -c 0 /dev/drbd0
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds

[root@node1 ~]# tune2fs -l /dev/drbd0 | grep ^M
Mount count:              0
Maximum mount count:      -1

注:

  • 若是drbd是由heartbeat管理,则两台机器都要设置为secondary

  • 从节点(备机)不能mkfs和mount;Secondary节点上不容许对DRBD设备进行任何操做,包括只读,全部的读写操做只能在Primary节点上进行,只有当Primary节点挂掉时,Secondary节点才能提高为Primary节点,继续工做;

6.DRBD主从切换,验证DRBD工做是否正确

1)主节点操做

[root@node1 ~]# mkdir /mydata

[root@node1 ~]# mount /dev/drbd0 /mydata

[root@node1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        97G  9.0G   83G  10% /
tmpfs           491M   72K  491M   1% /dev/shm
/dev/sda1       194M   29M  155M  16% /boot
/dev/drbd0      9.9G  151M  9.2G   2% /mydata

[root@node1 ~]# ls /mydata
lost+found

# 建立样例数据
[root@node1 ~]# echo 123456 > /mydata/testfile
[root@node1 ~]# ls /mydata
lost+found  testfile

# 解除主节点的挂载
[root@node1 ~]# umount /mydata
[root@node1 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3      100944296 9406416  86410152  10% /
tmpfs             502204      72    502132   1% /dev/shm
/dev/sda1         198337   29472    158625  16% /boot

# 主服务节点变成从节点
[root@node1 ~]# drbdsetup /dev/drbd0 secondary

2)从节点操做

# 从节点建立挂载目录
[root@node2 ~]# mkdir /mydata

# 升级从节点服务为主节点
[root@node2 ~]# drbdsetup /dev/drbd0 primary

# 挂载 drbd
[root@node2 ~]# mount /dev/drbd0 /mydata 

[root@node2 ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda3      100944296 5168556  90648012   6% /
tmpfs             502204      72    502132   1% /dev/shm
/dev/sda1         198337   29472    158625  16% /boot
/dev/drbd0      10325420  154140   9646776   2% /mydata

# 查看样例数据为node1上建立的数据
[root@node2 ~]# ls /mydata/
lost+found  testfile
[root@node2 ~]# cat /mydata/testfile 
123456

此时能够说明drbd 配置正确,且工做正常。

==============================================================================

MySQL安装配置及启动(两节点同时安装)

1.mysql安装,我这里为了简单直接安装编译好的二进制软件包(两台服务器都须要安装,操做同样,只是第二台mysql不须要初始化数据)

[root@node1 mysql]# ls
mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz  
[root@node1 mysql]# tar xvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

[root@node1 local]# cd /usr/local/mysql
[root@node1 local]# ln -s mysql-5.6.36-linux-glibc2.5-x86_64 mysql
[root@node1 local]# ll
总用量 48
drwxr-xr-x.  2 root root 4096 4月  27 10:07 bin
drwxr-xr-x   7 root root 4096 4月  28 10:23 drbd
drwxr-xr-x.  2 root root 4096 9月  23 2011 etc
drwxr-xr-x.  2 root root 4096 9月  23 2011 games
drwxr-xr-x.  3 root root 4096 4月  27 10:07 include
drwxr-xr-x.  4 root root 4096 4月  27 10:07 lib
drwxr-xr-x.  2 root root 4096 9月  23 2011 lib64
drwxr-xr-x.  2 root root 4096 9月  23 2011 libexec
lrwxrwxrwx   1 root root   34 4月  28 14:40 mysql -> mysql-5.6.36-linux-glibc2.5-x86_64
drwxr-xr-x  13 root root 4096 4月  28 14:37 mysql-5.6.36-linux-glibc2.5-x86_64
drwxr-xr-x.  2 root root 4096 9月  23 2011 sbin
drwxr-xr-x.  5 root root 4096 4月   6 18:50 share
drwxr-xr-x.  2 root root 4096 9月  23 2011 src

# 建立 mysql 用户和mysql 组,若是有的话就不须要建立
[root@192.168.0.10 local]# groupadd mysql
[root@192.168.0.10 local]# useradd -r -g mysql mysql

[root@node1 mysql]# pwd
/usr/local/mysql
[root@node1 mysql]# chown -R mysql.mysql *

2.建立/mydata/data 目录做为 mysql 数据库的datadir,并修改其属主和属组为mysql

[root@node1 ~]# mkdir /mydata/data
[root@node1 ~]# chown mysql.mysql /mydata/data/

3.初始化mysql数据库目录(只在第一台服务器上作)

注意:初始化数据库以前要挂载镜像分区/dev/drbd0到 /mydata,这里以 node1为例

1)首先提高node1为主节点,并挂载 /dev/drbd0 到 /mydata

[root@node1 ~]# drbdsetup /dev/drbd0 primary
[root@node1 ~]# mount /dev/drbd0 /mydata

[root@node1 ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda3      100944296 11479256  84337312  12% /
tmpfs             502204       72    502132   1% /dev/shm
/dev/sda1         198337    29472    158625  16% /boot
/dev/drbd0      10325420   154140   9646776   2% /mydata

[root@node1 sbin]# cd /usr/local/drbd/sbin
[root@node1 sbin]# ./drbd-overview 
  0:data/0  Connected Primary/Secondary UpToDate/UpToDate C r----- /mydata ext4 9.9G 151M 9.2G 2%

2)对node1主服务节点上的mysql数据库作初始化,以下:

[root@node1 scripts]# /usr/local/mysql/scripts
[root@node1 scripts]# ./mysql_install_db --user=mysql --datadir=/mydata/data/ --basedir=/usr/local/mysql

[root@node1 scripts]# ls /mydata/
data  lost+found  testfile

[root@node1 scripts]# ll /mydata/data/
总用量 110604
-rw-rw---- 1 mysql mysql 12582912 4月  28 15:24 ibdata1
-rw-rw---- 1 mysql mysql 50331648 4月  28 15:24 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 4月  28 15:23 ib_logfile1
drwx------ 2 mysql mysql     4096 4月  28 15:23 mysql
drwx------ 2 mysql mysql     4096 4月  28 15:23 performance_schema
drwx------ 2 mysql mysql     4096 4月  28 15:23 test

3)配置mysql启动(两节点同时作)

[root@node1 mysql]# pwd
/usr/local/mysql
[root@node1 mysql]# ls
bin  COPYING  data  docs  include  lib  man  my.cnf  mysql-test  README  scripts  share  sql-bench  support-files
[root@node1 mysql]# ll support-files/
总用量 32
-rwxr-xr-x 1 mysql mysql  1153 3月  18 15:06 binary-configure
-rw-r--r-- 1 mysql mysql   773 3月  18 14:43 magic
-rw-r--r-- 1 mysql mysql  1126 3月  18 15:06 my-default.cnf     # mysql的配置文件
-rwxr-xr-x 1 mysql mysql  1061 3月  18 15:06 mysqld_multi.server
-rwxr-xr-x 1 mysql mysql   894 3月  18 15:06 mysql-log-rotate
-rwxr-xr-x 1 mysql mysql 10565 3月  18 15:06 mysql.server       # mysql的启动脚本

[root@node1 mysql]# cp support-files/my-default.cnf /etc/my.cnf
[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@node1 mysql]# chmod 755 /etc/init.d/mysqld

4)修改mysql的启动配置文件 /etc/my.cnf(两节点同时作),并启动mysql服务;

[root@node1 init.d]# cat /etc/my.cnf
[mysqld]
datadir=/mydata/data
socket=/mydata/data/mysql.sock
user=mysql
character_set_server = utf8
init_connect = 'SET NAMES utf8'
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
skip_name_resolve
innodb_file_per_table=ON

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 启动服务
[root@node1 init.d]# ./mysqld status
MySQL is not running                                       [失败]

[root@node1 init.d]# ./mysqld start
Starting MySQL.........................................    [肯定]

# 由于系统以前默认安装过mysql,因此客户端查找的mysql.sock还在默认的/var/lib/mysql/mysql.sock路径下,而如今咱们指定的mysql.sock在/mydata/data下,因此会出现以下报错
[root@wztao data]# mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

# 解决此类问题,能够建立软链接,或者mysql客户端登录时指定mysql.sock文件路径(mysql -S /mydata/data/mysql.sock ),以下:
[root@wztao data]# mkdir /var/lib/mysql
[root@wztao data]# ln -s /mydata/data/mysql.sock /var/lib/mysql/mysql.sock
[root@wztao data]# ll /var/lib/mysql/mysql.sock
lrwxrwxrwx 1 root root 23 Feb 23 17:26 /var/lib/mysql/mysql.sock -> /mydata/data/mysql.sock

# 设置mysql的登陆密码,登陆数据库,并建立表
[root@node1 init.d]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SET PASSWORD=PASSWORD('admin');
Query OK, 0 rows affected (0.05 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database db1;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.01 sec)

mysql> \q
Bye

# 查看数据库目录,db1已经存在
[root@node1 init.d]# ls /mydata/data/
auto.cnf  db1  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql.sock  node1.pid  performance_schema  test

5)执行完以上操做后,在node1上执行如下命令,为部署heartbeat作准备:

# 中止mysql服务;
[root@node1 init.d]# ./mysqld stop
Shutting down MySQL..                                      [肯定]

# 解除drbd分区挂载:
[root@node1 ~]# umount /mydata/

# 把node1 降为从节点:
[root@node1 ~]# drbdsetup /dev/drbd0 secondary

[root@node1 ~]# /usr/local/drbd/sbin/drbd-overview 
  0:data/0  Connected Secondary/Secondary UpToDate/UpToDate C r-----

==============================================================================

Heartbeat安装配置及启动(node1和node2都要安装)

1.部署确认:

1)mysql 服务关闭,且关闭了开机自启动

[root@node1~] # /etc/init.d/mysqld stop
[root@node1 init.d]# chkconfig mysqld off
[root@node1 init.d]# chkconfig --list mysqld
mysqld         	0:关闭	1:关闭	2:关闭	3:关闭	4:关闭	5:关闭	6:关闭

2)drbd 服务必须打开,且两个节点都是Secondary状态

[root@node1 ~]# /usr/local/drbd/sbin/drbd-overview 
  0:data/0  Connected Secondary/Secondary UpToDate/UpToDate C r-----

3)主备机间的互信通讯;

[root@node1 ~]# date;ssh node2 date
2017年 05月 02日 星期二 13:16:06 CST
2017年 05月 02日 星期二 13:16:06 CST

2.安装及配置Heartbeat

1)安装heartbeat(注意,若是此前机器安装过heartbeat其余的版本须要将其卸载以后方可安装heartbeat-2.1.4,卸载时要将其依赖到的安装包一并卸载,不然安装会起冲突)

[root@node1 heartbeat]# ls
heartbeat-2.1.4-12.el6.x86_64.rpm      heartbeat-pils-2.1.4-12.el6.x86_64.rpm     libnet-1.1.6-7.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm  heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

[root@node1 heartbeat]# rpm -ivh libnet-1.1.6-7.el6.x86_64.rpm
[root@node1 heartbeat]# 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 heartbeat-gui-2.1.4-12.el6.x86_64.rpm
Preparing...                ########################################### [100%]
   1:heartbeat-pils         ########################################### [ 25%]
   2:heartbeat-stonith      ########################################### [ 50%]
   3:heartbeat              ########################################### [ 75%]
   4:heartbeat-gui          ########################################### [100%]

2)配置heartbeat,默认安装好的heartbeat没有配置文件,可是有样例文件,这里只须要两个配置文件ha.cf 和 authkeys

[root@node1 ~]# cp /usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf} /etc/ha.d/
[root@node1 ~]# cd /etc/ha.d/
[root@node1 ha.d]# ll
总用量 40
-rw-r--r-- 1 root root   645 5月   2 13:33 authkeys
-rw-r--r-- 1 root root 10539 5月   2 13:33 ha.cf
-rwxr-xr-x 1 root root   745 9月  10 2013 harc
drwxr-xr-x 2 root root  4096 5月   2 13:05 rc.d
-rw-r--r-- 1 root root   692 9月  10 2013 README.config
drwxr-xr-x 2 root root  4096 5月   2 13:05 resource.d
-rw-r--r-- 1 root root  7864 9月  10 2013 shellfuncs

# 修改其权限为600
[root@node1 ha.d]# chmod 600 authkeys 
[root@node1 ha.d]# ll
总用量 40
-rw------- 1 root root   645 5月   2 13:33 authkeys
-rw-r--r-- 1 root root 10539 5月   2 13:33 ha.cf
-rwxr-xr-x 1 root root   745 9月  10 2013 harc
drwxr-xr-x 2 root root  4096 5月   2 13:05 rc.d
-rw-r--r-- 1 root root   692 9月  10 2013 README.config
drwxr-xr-x 2 root root  4096 5月   2 13:05 resource.d
-rw-r--r-- 1 root root  7864 9月  10 2013 shellfuncs

3)配置文件修改以下:

[root@node2 ha.d]# vim authkeys
 auth 1
 1  md5 91961e19f5730f736d27c07ffbc093d1
 
[root@node1 ha.d]# vim ha.cf
 logfacility     local0
 keepalive    2                     #>>> 发送心跳的间隔时间
 udpport    694                     #>>> 通讯端口
 ucast      eth0 172.22.1.113       #>>>心跳线网口,对方心跳口ip;在psae2配置时写172.21.1.112
 auto_failback    on
 node    psae1                      #>>> 设置集群中的节点,节点名必须与uname -n 同样
 node    psae2
 crm     on                         #>>>启用crm

复制文件到psea2

复制以上2个配置文件到psae2上,并修改/etc/ha.d/ha.cf中的ucastip为psae1的ip

[root@node1 ha.d]# scp -p authkeys ha.cf node2:/etc/ha.d/
[root@node2 ~]# vim /etc/ha.d/ha.cf
 ucast eth0 172.21.1.112

3.检查配置文件没有错误后就能够启动heartbeat

[root@node1 ha.d]# service heartbeat start
Starting High-Availability services: 
Done.

[root@node2 ha.d]# service heartbeat start
Starting High-Availability services: 
Done.

[root@node1 ha.d]# netstat -unlp | grep 694
udp        0      0 0.0.0.0:694                 0.0.0.0:*                               4035/heartbeat: wri 

[root@node2 ha.d]# ss -tunlp |grep 694
udp    UNCONN     0      0                      *:694                   *:*      users:(("heartbeat",11523,9),("heartbeat",11524,9))

3.配置Heartbeat集群资源(只在一台完成便可)须要配置的集群资源:vip、drbd、mysql

1)为客户端连入服务端进行配置的用户设置密码 建议设置成pachira,主备服务器都要操做

[root@node1 ha.d]# passwd hacluster
更改用户 hacluster 的密码 。
新的 密码:
无效的密码: 它基于字典单词
无效的密码: 过于简单
从新输入新的 密码:
passwd: 全部的身份验证令牌已经成功更新。

2)执行 # hb_gui & 命令启动heartbeat图形化的客户端程序,用VNC链接linux桌面

wKioL1kIIQCRX5UXAAEFIaqsaZA181.png

资源添加顺序 组 --> vip --> drbd--> mysqld --> p_monitor

相关文章
相关标签/搜索