corosync + pacemaker +mysql +nfs

362 阅读3分钟

一.配置高可用前提: 1.时间同步 2.uname -n和hostname一致

二.安装软件包

1.yum -y install corosync pacemaker

每个节点:修改配置文件
corosync的配置文件
totem {
version: 2


crypto_cipher: aes128
crypto_hash: sha1
secauth:on


interface {
            # Rings must be consecutively numbered, starting at 0.
	ringnumber: 0
	
	bindnetaddr: 192.168.117.0
	
	# bindnetaddr: 192.168.1.1
	
	mcastaddr: 239.255.1.1
	
	mcastport: 5405
	
	ttl: 1
}

} nodelist { node { ring0_addr: 192.168.117.135 nodeid: 1 } node { ring0_addr: 192.168.117.136 nodeid: 2 } node { ring0_addr: 192.168.117.137 nodeid: 3 }

		}

logging {

fileline: off

to_stderr: no

to_logfile: yes
logfile: /var/log/cluster/corosync.log

to_syslog: no

debug: off

timestamp: on
logger_subsys {
	subsys: QUORUM
	debug: off
}

}

2.生成authkey corosync-authkey 把配置文件复制到其他节点上

三.配置一个独立的nfs服务器(192.168.117.130)

nfs端:

1.先建立/mydata/data (这个data目录要有,没有我就启动不起来 也有可能是其他问题 (提示报错pid文件打不开) 坑的一笔)(确保如果datedir指的目录是/mydata/data里面有响应的文件对应即可)
2.创建mysql用户和mysql组 (确保mysql用户和组可以在里面读写) 此处uid 和 gid 要和其他节点上的mysql用户的uid gid相同!建立/mydata/data文件
3.配置nfs配置文件 /etc/export

	/mydata 192.168.117.0/24(rw,no_root_squash)

4.输出出来 exportfs -rv

主节点端:此处的mysql包是预编译好的包(如果用yun源安装mysql 在装这个包 有可能会发生什么错误 还是不怎么清楚 遇到的问题如pid文件无法连接)

1.创建好mysql用户和组,创建文件/mydata 挂载节点上的/mydata 到 nfs上的/mydata mount -t nfs 192.168.117.131:/mydata /mydata
2.下载mysql的包 如mariadb-5.5.32-linux-x86_64.tar.gz
3.解压软件包到指定目录 tar xf mariadb-5.5.32-linux-x86_64.tar.gz -C /usr/local
4.建立软连接 ln -sv mariadb-5.5.32-linux-x86_64.tar.gz mysql
5.cd mysql
6.scripts/mysql_install_db --datadir=/mydata/data --user=mysql 此处的mydata/data 已然是nfs共享存储了
7.cp supper-files/mysql.server /etc/rc.d/init.d/mysqld
8.cp supper-files/my.large.cnf /etc/my.cnf
	添加三个参数
	
	datadir=/mydata/data
	innodb_file_per_table=on
	skip_name_resolve=on

8.chkconfig --add mysqld(在centos6中要保证服务不可以开机自启动)
9.service mysqld start  开启mysql
10./usr/local/mysql/bin/mysql 进入mysql
11.grant all on *.* to 'root'@'192.168.117.%' identified by 'passwd'
12.flush privileges
13.此时在里面创建表格另一个节点上可以可以显示(但是如果在共享的基础上 node2开启mysqld node3上不能开启 只能开一个)

其他节点端

1.创建好mysql用户和组,创建文件/mydata 挂载节点上的/mydata 到 nfs上的/mydata
2.下载mysql的包 如mariadb-5.5.32-linux-x86_64.tar.gz
3.解压软件包到指定目录 tar xf mariadb-5.5.32-linux-x86_64.tar.gz -C /usr/local
4.建立软连接 ln -sv mariadb-5.5.32-linux-x86_64.tar.gz mysql
5.cd mysql
6.复制主节点上的配置文件到其他节点上就行
7.cp supper-files/mysql.server /etc/rc.d/init.d/mysqld
8.chkconfig --add mysqld (在centos6中要保证服务不可以开机自启动)

可以开始配置高可用了

1.启动corosync和pacemaker ansible mysqlnfs -m service -a 'name=corosync state=started' ansible mysqlnfs -m service -a 'name=pacemaker state=started'

2.crm配置 1.primitive websql lsb:mysqld 2.primitive webnfs Filesystem
params device="192.168.117.130:/mydata" directory="/mydata" fstype=nfs
op start timeout=20s interval=0
op stop timeout=20s interval=0
op monitor interval=30s timeout=20s 3.colocation webstore_sql inf: webnfs websql 4.order websql_after_webnfs Mandatory: webnfs websql

总结: 一 要保证ntp服务器要是独立的一台服务器(刚开始没有想到 思考:如果nfs server做在node1上 如果把node1 sandby了之后 服务就无法启动了吗? 此处的filesystem 决定的是挂载 不包含启动nfs服务 所以和这个无关) 二: 如何挂载mysql的datadir和nfs存储挂钩 在nfs server端建立挂载的目录 (确保如果datedir指的目录是/mydata/data里面有响应的文件对应即可) 如nfs上的/mydata mount -t nfs 192.168.117.131:/mydata /mydata 如果在node1上建/mydata没有/data子目录 但是要在nfs server端和弄得、端挂载时要有/mydata/data即可 保证mysql用户可以对文件系统进行读写 并且各个节点上的mysql用户 uid和gid相同 三: 服务启动的顺序很重要