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

[经验分享] 基于heartbeat v2 crm实现配置基于nfs的mysql HA集群

[复制链接]

尚未签到

发表于 2019-1-7 13:38:26 | 显示全部楼层 |阅读模式
  主机规划:
  高可用服务器安装v2版本的heartbeat,同时这两个节点上安装有mysql,运行时只有一个节点可以运行mysql,另外一个节点备用,后端有一个nfs共享存储,用于提供共享目录,用于存储数据库的数据。
  IP地址设置为:
  HA1:172.16.103.1
  HA2:172.16.103.2
  NFS:172.16.103.3
  

  实验过程:
  一、准备NFS服务器
# mkdir -pv /nfs/shared
# groupadd -g 3306 mysql
# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql
# chown -R mysql.mysql /nfs/shared
# vim /etc/exports
nfs/shared 172.16.0.0/16(no_root_squash,rw,async)
# service nfs start  二、配置HA1和HA2两台服务器,使得它们之间可以基于ssh公钥方式通信,而且数据交互基于hosts文件来解析对方的主机名,并且同步好时间,这些是配置后面步骤的前提。具体步骤,请参考前面的博客内容。
  配置HA1:

  安装mysql前准备工作:
# groupadd -g 3306 mysql
# useradd -u 3306 -g mysql -s /sbin/nologin -M mysql
# mkdir -pv /mydata/data
# chown -R mysql.mysql /mydata/data  初始化数据库:

# mount -t nfs 172.16.103.3:/nfs/shared /mydata/data
# tar xf mariadb-5.5.30-linux-x86_64.tar.gz -C /usr/local/
# cd /usr/local
# ln -sv mariadb-5.5.39-linux-x86_64.tar.gz mysql
# cd mysql
# chown -R mysql.mysql ./
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# cp support-files/my-large.cnf /etc/my.cnf  #添加数据库的数据目录
# vim /etc/my.cnf
datadir = /mydata/data
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld  尝试启动数据库并测试是否可以正常访问,注意这时已经挂载了nfs,如果以后需要启动或者停用数据库,一定要注意nfs共享目录是否在挂载状态:
# service mysqld start  另外一个高可用的节点HA2的数据库初始化方式和HA1是一致的,就不再重复。

  

  在HA1和HA2两个基点上安装heartbeat:

  解决依赖关系:
# yum install perl_TimeData net-snmp-libs libnet PyXML  安装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提供资源文件、秘钥文件以及配置文件:
# cd /usr/share/doc/heartbeat-2.1.4/
# cp -p ha.cf haresources authkeys /etc/ha.d/  修改秘钥文件的属性,因为heartbeat服务启动时会检测这个文件的属性,如果不是600,会报错。
# cd /etc/ha.d
# chmod 600 authkeys  修改配置文件添加对应的这两个高可用的节点,添加组播地址和Pingnode设备,其中最重要的一点是要启用heartbeat V2的功能,在配置文件中添加一行内容为crm on即可,同时为两个节点之间创建通信使用的秘钥,这部分内容请参考前面博客的内容。
# vim ha.cf
crm on  在两个节点的heartbeat都安装完成后,尝试启动heartbeat,注意启动之前一定要停用与mysql相关的服务,还要卸载掉挂载的nfs磁盘设备。
# service heartbeat start  在服务启动之后,可以查看一下Heartbeat服务监听的端口是否正常。
# ss -tunlp
tcp   LISTEN     0      10        *:5560                *:*  heartbeat程序为客户端程序连入服务器端配置高可用服务时自动在/etc/passwd文件中创建了一个用户,该用户名为hacluster,不过这个用户创建时没有设置密码,需要为该用户创建一个密码,以便使用。
# passwd hacluster  启动heartbeat的客户端程序,hb_gui,在图形界面下配置高可用服务,在windows中最好装有xmanager等程序,以便启动图形界面。
# hb_gui &
首先,mysql的高可用资源需要3个,IP,mysqld,nfs,这3个资源启动顺序上有限制,这3个资源都要运行在一个节点上,而且mysqld要在nfs启动之后出能启动,ip地址和mysqld服务之间倒没有依赖关系,服务准备好后再启动IP也可以的,高可用的httpd服务是需要先启动IP的,因为服务启动的时候明确需要IP地址的资源。这两类高可用资源之间是不同的。

  高可用资源的定义步骤如下,首先定义mysql使用的IP地址:
定义第二个资源,这三个资源都是native类型的。

定义第三个资源:

定义这三个资源之间的约束关系

  nfs与mysqld要运行在一个节点上:

  mysqlip与mysql-service要运行在一个节点上:

定义好这好Colocation约束后这3个资源会同时运行在同一个节点上。另外很重要的一点是mysqld服务要在nfs分区挂载之后启动,所以要定义资源的顺序约束:

定义好启动顺序的约束之后还可以定义运行在哪个高可用服务节点的倾向性,在Locations约束中定义:

设置好ID及相应的资源之后,需要为该资源添加表达式及对该节点的倾向性:


  现在可以尝试启动所有的资源,并查看资源在各个高可用基点间切换的效果,第一次启动时,默认会依据运行在HA1节点上,因为资源约束定义倾向性时定义资源倾向运行在HA1上:

  尝试让HA1运行于standby状态,查看服务切换的效果:


  现在资源都运行在HA2上。在主机端使用ifconfig等命令查看:
[root@node2 ha.d]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:E1:37:51  
          inet addr:172.16.103.2  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::20c:29ff:fee1:3751/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:180619 errors:0 dropped:0 overruns:0 frame:0
          TX packets:122944 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:110119869 (105.0 MiB)  TX bytes:21043781 (20.0 MiB)
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:E1:37:51  
          inet addr:172.16.103.60  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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)  配置的IP地址正常的运行在了HA2上。连接数据库测试:
[root@node2 ha.d]# service mysqld status
MySQL running (22193)                                      [  OK  ]
[root@node2 ha.d]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.39-MariaDB-log MariaDB Server
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>  数据库访问也正常。




运维网声明 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-660389-1-1.html 上篇帖子: 高可用集群之heartbeat v2 下篇帖子: Linux下VS/DR+heartbeat实现高可用负载均衡服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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