设为首页 收藏本站
查看: 303|回复: 0

[经验分享] Heartbeat+MySQL+NFS 实现高可用(HA)的MySQL集群

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-12 11:11:05 | 显示全部楼层 |阅读模式
一:试验目的
利用heartbeat心跳机制haresource实现高可用(HA)mysql数据库的搭建。
二:试验拓扑图
wKiom1QQCnijJSI_AACX2DDQw60183.png

三:安装前的环境准备
  规划IP为192.168.1.14为node1;IP为192.168.1.2为node2
1)修改各主机名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
修改node1主机名称
vim /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=node1 #修改主机名称为node1
vim /etc/hosts
    192.168.1.2 node2      
    192.168.1.14 node1
修改node2的主机名称
vim /etc/sysconfig/network
  NETWORKING=yes
  HOSTNAME=node2 #修改主机名称为node2
vim /etc/hosts
    192.168.1.2  node2     #添加解析地址  
    192.168.1.14 node1
     
添加完后测试可以ping的通
[iyunv@node2 ~]# ping node1
PING node1 (192.168.1.14) 56(84) bytes of data.
64 bytes from node1 (192.168.1.14): icmp_seq=1 ttl=64 time=7.64 ms
64 bytes from node1 (192.168.1.14): icmp_seq=2 ttl=64 time=0.731 ms
64 bytes from node1 (192.168.1.14): icmp_seq=3 ttl=64 time=0.533 ms
64 bytes from node1 (192.168.1.14): icmp_seq=4 ttl=64 time=0.501 ms

[iyunv@node2 ~]# ping node2
PING node2 (192.168.1.2) 56(84) bytes of data.
64 bytes from node2 (192.168.1.2): icmp_seq=1 ttl=64 time=4.79 ms
64 bytes from node2 (192.168.1.2): icmp_seq=2 ttl=64 time=0.154 ms
64 bytes from node2 (192.168.1.2): icmp_seq=3 ttl=64 time=0.123 ms



2)各节点之间ssh互信
1
2
3
4
5
6
node1:
ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ''  
ssh-copy-id -i .ssh/id_rsa.pub root@node2
node2:
ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@node1



3) 进行时间同步(node1和node2都要同步)
1
2
3
4
ntpdate 172.16.0.1  #后面的IP地址就是你所搭建的时间服务器IP地址
[iyunv@node1 ~]# ssh node2 'date';date
Wed Sep 10 17:44:44 CST 2014
Wed Sep 10 17:44:44 CST 2014                  #时间要保持一致




四:安装与配置heartbeat

   所要安装heartbeat包文件 http://down./data/1872114
1)安装heartbeat包文件(在centos6.5上安装包文件)
1
2
3
4
5
6
首先解决依赖关系
   yum install -y perl-TimeDate PyXML libnet net-snmp-libs
用rpm安装方式依次安装(因为在centos6.5上用yum安装时会出现更新安装的情况所以用rpm安装)
   rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm
   rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
   rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm



2)配置heartbeat
说明:默认安装好heartbeat没有配置文件,但是样例文件 有可以复制古来使用      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd /usr/share/doc/heartbeat-2.1.4/
cp cp ha.cf authkeys haresources /etc/ha.d
vim ha.cf #配置ha.cf文件
logfile /var/log/ha-log #启用logfile
mcast eth0 225.16.16.16 694 1 0  #配置广播地址
auto_failback on        #主节点,当主节点恢复后立即把资源抢夺回来
node    node2
node    node1            #两个节点
ping 172.16.0.1        #当只有偶数节点时,这是个仲裁机构

vim  haresources
node1 172.16.16.3/16/eth0:0/172.16.255.255 mysqld   #添加资源

vim authkeys
auth 2
2 sha1 1234567123    #这里可以添加随机数



3)复制以上三个配置文件到node2上
1
scp authkeys ha.cf haresources node2:/etc/ha.d/



4)启动节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[iyunv@node1 ha.d]# service heartbeat start
Starting High-Availability services:
2014/09/10_17:03:18 INFO:  Resource is stopped
Done.

[iyunv@node1 ha.d]# ssh node2 'service heartbeat start'   
Starting High-Availability services:
2014/09/10_17:04:26 INFO:  Resource is stopped
Done.

检查node1端口是否在监听状态
[iyunv@node1 ha.d]# ss -nul
State      Recv-Q Send-Q    Local Address:Port      Peer Address:Port
UNCONN     0      0                     *:111                  *:*     
UNCONN     0      0                     *:631                  *:*     
UNCONN     0      0                     *:647                  *:*     
UNCONN     0      0                     *:942                  *:*     
UNCONN     0      0          225.16.16.16:694                  *:*     #监听状态  
UNCONN     0      0                     *:839                  *:*     
UNCONN     0      0                     *:50761                *:*     
UNCONN     0      0                     *:847                  *:*     
UNCONN     0      0                     *:46824                *:*     
UNCONN     0      0                    :::111                 :::*     
UNCONN     0      0                    :::839                 :::*     
UNCONN     0      0                    :::36945               :::*

检查node2端口是否在监听状态
[iyunv@node2 ~]# ss -unl
State      Recv-Q Send-Q    Local Address:Port      Peer Address:Port
UNCONN     0      0                     *:111                  *:*     
UNCONN     0      0                     *:631                  *:*     
UNCONN     0      0                     *:47496                *:*     
UNCONN     0      0                     *:664                  *:*     
UNCONN     0      0          225.16.16.16:694                  *:*     #监听状态
UNCONN     0      0                     *:52941                *:*     
UNCONN     0      0                     *:725                  *:*     
UNCONN     0      0                    :::111                 :::*     
UNCONN     0      0                    :::664                 :::*     
UNCONN     0      0                    :::39515               :::*





五:配置NFS服务

1)在NFS文件服务器上创建服务文件
1
2
3
4
5
6
7
8
  pvcreate /dev/sdb #创建物理卷
  vgcreate myvg /dev/sdb #创建卷组
  lvcreate -L 10G -n mydata myvg #创建逻辑卷
  mke2fs -j /dev/myvg/mydata #格式化逻辑卷
  lvs #查看逻辑卷
  mkdir /mydata #创建挂载目录
  mount /dev/myvg/mydata /mydata/ #挂载
  cd /mydata/ #进入挂载目录



2)在node1和node2上创建data目录给予mysql用户和mysql组。


1
2
   mkdir data
   chown -R mysql:mysql data



3)修改nfs配置文件
1
2
3
4
[iyunv@localhost ~]# vim /etc/exports
/mydata  192.168.1.2(no_root_squash,rw,no_all_squash)  192.168.1.14(no_root_squash,r
w,no_all_squash)
[iyunv@localhost ~]# service nfs start   #启动NFS



4)挂在nfs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mount -t nfs 192.168.1.16:/mydata /data
[iyunv@node2 ~]# mount             #查看挂在情况
/dev/mapper/vg0-root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.16:/mydata on /data type nfs (rw,vers=4,addr=192.168.1.16,clientaddr=192.168.1.2)

node1 操作如上



5)二进制安装mysql
  二进制安装mysql请参考http://slayer.blog./4845839/1539643
  因为这里用到是NFS文件系统要对挂在的磁盘进行初始化,和修改mysql的配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
vim /etc/my.cnf
  
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 4
datadir = /data                #改为挂载的所在磁盘
innodb_file_per_table = 1      #innodb表单独表空间

[iyunv@node1 ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --da
tadir=/data --user=mysql   # 进行磁盘初始化

启动mysql
[iyunv@node1 mysql]# service mysqld start
Starting MySQL...                                          [  OK  ]

测试能否登录mysql
[iyunv@node1 ha.d]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or g.
Your MariaDB connection id is 1
Server version: 5.5.32-MariaDB-log MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

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

MariaDB [(none)]> show databases
    -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.06 sec)

MariaDB [(none)]>

配置node2的mysql (把启动脚本和主配置文件发给node2)
[iyunv@node1 ~]# scp /etc/my.cnf node2:/etc/
my.cnf                                             100% 4721     4.6KB/s   00:00
[iyunv@node1 ~]# scp /etc/init.d/mysqld node2:/etc/init.d/
mysqld                                             100%   11KB  10.6KB/s   00:00


测试node2能否启动
[iyunv@node2 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.5.32-MariaDB-log MariaDB Server

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>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.04 sec)

mysql>




OK  我们的Heartbeat+MySQL+NFS 实现高可用(HA)的MySQL集群基于heartbeat 的haresources配置完毕。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-24741-1-1.html 上篇帖子: 对MySQL数据库执行非热备操作的要点 下篇帖子: 基本heartbeat v1、V2实现mysql的高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表