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

[经验分享] corosync+pacemaker简单实践实现mariadb数据库高可用模型

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-8 08:50:39 | 显示全部楼层 |阅读模式
     友情提醒:文中实验环境 vmware10 + Centos 6.6 X86_64,文中命令请谨慎使用   一  实验环境和拓扑
主机
IP地址
角色
Test01.lijun.com
eth1:192.168.100.1/24
后台NFS共享服务器
Test04.lijun.com
eth1:192.168.100.4/24
eth0:172.16.34.4/16

集群节点
Test03.lijun.com
eth1:192.168.100.3/24
eth0:172.16.34.3/16

集群节点
集群节点虚拟出IP地址192.168.100.20,给外界提供mysql查询接口
  实验拓扑:
QQ截图20150608084936.png


二  实验步骤

2.1) 环境准备:
Test03:
-----关闭防护墙和selinux,放置干扰实验-------------------------

1
2
[iyunv@Test03 ~]# service iptables stop
[iyunv@Test03 ~]# setenforce 0



----设定ssh互信--------------------------------------------------

1
2
[iyunv@Test03 ~]# ssh-keygen -t rsa -P ''
[iyunv@Test03 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub Test04



----使用统一ntp server进行时间对时----------------------------------

1
2
3
[iyunv@Test03 ~]#ntpserver 172.16.0.1
[iyunv@Test03 ~]#crontab -e
*/5 * * * * /usr/sbin/ntpdate 172.16.0.1



Test04:
-----关闭防护墙和selinux,放置干扰实验-------------------------

1
2
[iyunv@Test04 ~]# service iptables stop
[iyunv@Test04 ~]# setenforce 0



----设定ssh互信--------------------------------------------------

1
2
[iyunv@Test04 ~]# ssh-keygen -t rsa -P ''
[iyunv@Test04 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub Test03



----使用统一ntp server进行时间对时----------------------------------

1
2
3
[iyunv@Test04 ~]#ntpserver 172.16.0.1
[iyunv@Test04 ~]#crontab -e
*/5 * * * * /usr/sbin/ntpdate 172.16.0.1



2.2)-------------安装corosync+pacemaker------------------------

1
2
[iyunv@Test03 ~]# yum -y install corosync pacemaker
[iyunv@Test04 ~]# yum -y install corosync pacemaker



2.3)--------配置和启动corosync服务-----------------------------

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
[iyunv@Test03 ~]# cd /etc/corosync/
[iyunv@Test03 corosync]# ls
corosync.conf.example  corosync.conf.example.udpu  service.d  uidgid.d
[iyunv@Test03 corosync]# cp corosync.conf.example corosync.conf
[iyunv@Test03 corosync]#vim corosync.conf
[iyunv@Test03 corosync]# egrep -v '^[[:space:]]{1,}#' corosync.conf
#兼容OPENAIS whitetank分支
compatibility: whitetank
totem {   
version: 2
#启用通信的数字签名,需要使用#corosync-keygen产生authenkey文件   
secauth: on
#不使用线程模型,使用进程模型   
threads: 0   
interface {
#同下文TTL配合,限定报文生存周期        
ringnumber: 0
#集群服务监听的网络地址而不是主机地址        
bindnetaddr: 192.168.100.0
#集群节点massage layer层进行通信监听的地址和端口      
mcastaddr: 239.165.17.91        
mcastport: 5405        
ttl: 1   
}
}
logging {
    fileline: off   
    to_stderr: no   
    to_logfile: yes   
    logfile: /var/log/cluster/corosync.log   
    to_syslog: no   
    debug: off   
    timestamp: off   
    logger_subsys {        
    subsys: AMF      
     debug: off   
     }
}
#让pacemaker以插件的形式同pacemaker配合使用
service {   
    ver:    0   
    name:    pacemaker   
    use_mgmtd:    yes
}
aisexec {   
     user:    root   
     group:    root
}



#使用corosync-keygen产生密钥文件,用于heartbeat通信数字签名

1
[iyunv@Test03 corosync]# corosync-keygen



#为保证集群节点配置文件一致性,这里使用复制的形式传递个别的集群节点

1
2
3
[iyunv@Test03 corosync]#scp -p authkey corosync.conf Test04:/etc/corosync
[iyunv@Test03 corosync]# service corosync start
[iyunv@Test04 corosync]# service corosync start



2.4)--------------Test03上安装crmshell----------------------------------

1
2
[iyunv@Test03 corosync]#cd  /root/source
[iyunv@Test03 source]# yum -y localinstall --nogpgcheck  crmsh-2.1-1.6.x86_64 .rpm pssh-2.3.1-2.el6.x86_64.rpm




  
后台共享存储Tese01上NFS提供分区,在Test03上挂载Test01共享的分区,用来承载mariadb初始化数据库
Test04上只是解压maraidb不初始化。
哪个节点上mariadb启动,那个节点挂载nfs共享分区。

2.5) ----------------Test01上提供nfs共享服务---------------------
Test01:
添加的新磁盘被识别为/dev/sdb,给其分区,格式化为ext4文件系统,这里不再演示,自动解决
QQ截图20150608084950.png #关闭防火墙和selinux放置干扰

1
2
[iyunv@Test01 ~]# service iptables stop
[iyunv@Test01 ~]# setenforce 0



#建立mysql用户

1
2
[iyunv@Test01 ~]# groupadd -g 27 mysql
[iyunv@Test01 ~]# useradd -g 27 -u 27 -r mysql



#建立目录用于nfs共享

1
2
[iyunv@Test01 ~]# mkdir  /mydata/
[iyunv@Test01 ~]# vim /etc/fstab



1
2
3
4
5
#新增
/dev/sdb1               /mydata/data            ext4    defaults        0 0
[iyunv@Test01 ~]# mount -a
[iyunv@Test01 ~]# mount | grep sdb
/dev/sdb1 on /mydata/data type ext4 (rw)



#建立/mydata/data用于被共享后被集群节点挂载,承载mariadb初始化文件

1
[iyunv@Test01 ~]# mkdir /mydata/data



#更改/mydata/data的属主为mysql  属组为mysql

1
2
3
[iyunv@Test01 ~]# chown -R mysql.mysql /mydata/data/
[iyunv@Test01 ~]# ls -ld /mydata/data/
drwxr-xr-x. 2 mysql mysql 4096 Jun  4 09:45 /mydata/data/



#修改nfs共享配置文件:

1
2
3
[iyunv@Test01 ~]# vim /etc/exports
/mydata 192.168.100.0/24(rw,no_root_squash)
#***初始该目录不可设定roo_squash,root用于要执行mariadb初始化



#启动nfs服务

1
2
3
4
5
6
7
8
9
10
[iyunv@Test01 ~]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[iyunv@Test01 ~]# showmount -e  192.168.100.1
Export list for 192.168.100.1:
/mydata 192.168.100.0/24
[iyunv@Test01 ~]#




2.6)Test03--------------部署mariadb------------------------------
#建立统一mysql用户和组要同Test01上的mysql用户的uid与gid相同

1
2
[iyunv@Test03 ~]# groupadd -r -g 27 mysql
[iyunv@Test03 ~]# useradd -r -g 27 -u 27 mysql



#建立挂载目录,要同mariadb配置文件中设定一致

1
2
3
4
5
[iyunv@Test03 ~]# mkdir /mydata
[iyunv@Test03 ~]# mount -t nfs 192.168.100.1:/mydata /mydata
[iyunv@Test03 ~]# mount | grep 'mydata'
192.168.100.1:/mydata on /mydata type nfs (rw,vers=4,addr=192.168.100.1,clientaddr=192.168.100.2)
[iyunv@Test03 ~]#



#安装mariadb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@Test03 ~]# cd /root/source/
[iyunv@Test03 source]# tar -xf mariadb-5.5.43-linux-x86_64.tar.gz  -C /usr/local
[iyunv@Test03 source]# cd /usr/local
[iyunv@Test03 local]# ln -sv mariadb-5.5.43-linux-x86_64 mysql
`mysql' -> `mariadb-5.5.43-linux-x86_64'
[iyunv@Test03 local]# cd mysql/
[iyunv@Test03 mysql]# chown -R root.mysql ./*
[iyunv@Test03 mysql]# ./scripts/mysql_install_db --datadir=/mydata/data --user=mysql
[iyunv@Test03 mysql]# mkdir /etc/mysql
[iyunv@Test03 mysql]# cp support-files/my-medium.cnf  /etc/mysql/my.cnf
[iyunv@Test03 mysql]# vim /etc/mysql/my.cnf
[mysqld]
datadir = /mydata/data
innodb_file_per_table = on
[iyunv@Test03 mysql]# cp support-files/mysql.server /etc/init.d/mariadb
[iyunv@Test03 mysql]# chmod +x /etc/init.d/mariadb



#测试mariadb是否可启动

1
2
3
4
[iyunv@Test03 mysql]# service mariadb start
Starting MySQL....                                         [  OK  ]
[iyunv@Test03 mysql]# ss -tlpn | grep 3306
LISTEN     0      50                        *:3306                     *:*      users:(("mysqld",3241,15))



#集群中服务不可以自动启动

1
2
3
4
5
[iyunv@Test03 mysql]# service mariadb stop
Shutting down MySQL..                                      [  OK  ]
[iyunv@Test03 mysql]# chkconfig --add mariadb
[iyunv@Test03 mysql]# chkconfig mariadb off
[iyunv@Test03 mysql]#umount /mydata





2.7)Test04 只解压mariadb不做初始化动作,初始化数据库在Test03上已完成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[iyunv@Test04 ~]# groupadd -r -g 27 mysql
[iyunv@Test04 ~]# useradd -r -u 27 -g 27  mysql
[iyunv@Test04 ~]# cd /root/source/
[iyunv@Test04 source]# tar -xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local
[iyunv@Test04 source]# cd /usr/local/
[iyunv@Test04 local]# ln -sv mariadb-5.5.43-linux-x86_64  mysql
`mysql' -> `mariadb-5.5.43-linux-x86_64'
[iyunv@Test04 local]# cd mysql/
[iyunv@Test04 mysql]# chown -R root.mysql ./*
[iyunv@Test04 mysql]# mkdir /etc/mysql
[iyunv@Test04 mysql]# scp -p Test03:/etc/mysql/my.cnf /etc/mysql/
my.cnf                                             100% 4963     4.9KB/s   00:00   
[iyunv@Test04 mysql]# scp -p Test03:/etc/init.d/mariadb /etc/init.d/
mariadb                                            100%   12KB  11.9KB/s   00:00
[iyunv@Test04 mysql]# mkdir /mydata
[iyunv@Test04 mysql]# mount -t nfs 192.168.100.1:/mydata /mydata



#测试数据库是否可启动

1
2
[iyunv@Test04 mysql]# service mariadb start
Starting MySQL...                                          [  OK  ]



#集群节点上服务不可开机自动启动

1
2
3
4
5
[iyunv@Test04 mysql]# service mariadb stop
Shutting down MySQL.                                       [  OK  ]
[iyunv@Test04 mysql]# chkconfig --add mariadb
[iyunv@Test04 mysql]# chkconfig mariadb off
[iyunv@Test04 mysql]# umount /mydata



2.8)在集群中部署mariadb资源

=============在Test03上通过crmshell配置mariadb 高可用================
#查看集群现在的状态信息

1
2
3
4
5
6
7
8
9
[iyunv@Test03 ~]# crm status
Last updated: Thu Jun  4 02:20:45 2015
Last change: Wed Jun  3 12:41:17 2015
Stack: classic openais (with plugin)
Current DC: Test03.lijun.com - partition with quorum
Version: 1.1.11-97629de
2 Nodes configured, 2 expected votes
0 Resources configured
Online: [ Test03.lijun.com Test04.lijun.com ]



#实验环境中没有stonith设备,因此必须关闭,否则集群服务启动不起来

1
[iyunv@Test03 source]# crm configure property stonith-enabled=false



#因为是2个节点,防止因票数不过半而使集群服务不知如何运作,故设定下面这个参数

1
[iyunv@Test03 source]# crm configure property no-quorum-policy=ignore



#配置集群mariadb高可用时,对外使用的资源IP
#先查看配置命令的说明

1
2
[iyunv@Test03 source]#crm ra info ocf:heartbeat:IPaddr
[iyunv@Test03 source]#crm configure primitive sqlip ocf:heartbeat:IPaddr params ip=192.168.100.10 nic=eth1 cidr_netmask=24





#mariadb的初始化数据库放置在后端存储上通过nfs共享的,因此需配置nfs共享被节点挂载的资源
#先查看命令配置说明
1
[iyunv@Test03 source]##crm ra info ocf:heartbeat:Filesystem





#配置mariadb集群服务

1
[iyunv@Test03 source]#crm configure primitive sqlserver lsb:mariadb op monitor interval=15s timeout=15s



#配置资源类型为group来统一管理上述的mariadb相关的资源,注意资源名称的先后顺序,决定在集群节点上开启的先后。

1
[iyunv@Test03 source]#crm configure group mysqlservice  sqlip sqlfilesystem sqlserver



2.9)验证配置
QQ截图20150608085019.png
资源已经运行在Test04.lijun.com节点上。
现在设定Test04节点为standby状态后,看下资源服务是否会在Test03节点上运行
QQ截图20150608085032.png

这就是corosync+pacemaker实现mariadb高可用实验。




运维网声明 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.iyunv.com/thread-74872-1-1.html 上篇帖子: mysql下通过shell脚本插入数据 下篇帖子: corosync(pacemaker) + drbd 实现 HA Mariadb 数据库 模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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