一.配置高可用前提: 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相同 三: 服务启动的顺序很重要