实验环境:
两台mariaDB服务器 172.16.10.20 172.16.10.21
fip:172.16.10.28
MariaDB文件存储共享:172.16.10.22
实验准备:
1、两个节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟"uname -n“命令的结果保持一致
vim /etc/hosts 172.16.10.20 21.xuphoto.com 20xu 172.16.10.21 22.xuphoto.com 21xu Node1: # sed -i ‘s@\(HOSTNAME=\).*@\121.xuphoto.com@g‘ # hostname 21.xuphoto.com Node2: # sed -i ‘s@\(HOSTNAME=\).*@\122.xuphoto.com@g‘ # hostname 22.xuphoto.com
2、各节点时间保持一致可添加统一NTP服务器同步任务:
crontab -e */3 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null
3、 各节点间可基于密钥验证SSH而无需密码
ssh-keygen -t rsa ssh-copy-id-i root@172.16.10.22 # node1 节点 ssh-keygen -t rsa ssh-copy-id-i root@172.16.10.21 # node1 节点
配置安装 corosync/pacemaker
yum install corosync pacemaker -y
[root@21~]# rpm -ql corosync #查看 corosync文件位置 /etc/corosync /etc/corosync/corosync.conf.example
1、 配置corosync配置文件,组播地址,密钥验证等等
vim /etc/corosync/corosync.conf compatibility:whitetank #是否兼容whitetank版本 保持默认即可 totem定义底层通信层: 组播地址,线程,安全认证等等; secauth:on #安全认证 threads:0 #线程数 0表示不基于线程模式,基于进程模式工作; interface: ringnumber:0 # 保持0 类似于TTL值 bindnetaddr:172.16.0.0 #监听的网络地址 mcasaddr:239.255.X.X #多播地址 mcastport:5405 #多播端口 TTL:1 #TTL值默认 logging: to_logfile: yes timestamp: on #是否记录时间戳,开启会影响性能,依系统性能而定 logger_subsys { subsys: AMF debug: off } }
配置pacemake以插件形式运行在corosync.conf中插入以下代码
service { ver: 0 name: pacemaker # use_mgmtd: yes } aisexec { user: root group: root }
使用corosync-keygen生成验证密钥
2、 使用corosync-kegen
直接运行命令即可,但是他需要从随机数熵池中读取1024个随机数 /dev/random 如果不够可以做I/O操作
3、拷贝 authkey corosync.conf 文件到另外一个节点上
scp -p authkey corosync.conf 20xu:/etc/corosync
4、 启动服务
# service corosync start;ssh 20xu ‘service corosync start‘
5404端口处于监听状态;
#tail -f /var/log/cluster/corosync.log #监控 日志系统看看有没有异常状态;
安装crmsh (在DC上安装即可,也可每都安装)
先下载crmsh pssh 然后用yum 安装 解决依赖关系并不检查gpg信息,
#yum --nogpgcheck localinstall crmsh-2.1-1.6.x86_64.rpm pssh-2.3.1-2.el6.x86_64.rpm
安装完成:
使用crm 进入子命令模式;
配置全局属性
crm(live)configure#property stonith-enabled=false
#如果没有stonith 设备需要禁止
crm(live)configure#property no-quorum-policy=ignore
crm(live)configure#verify #检查语法:
commit: #保存
定义 fip:172.16.10.28
crm(live)configure#primitive mysqlip ocf:heartbeat:IPaddr params ip=172.16.10.28 nic=eth0cidr_netmask=16 op monitor interval=10s timeout=20s
定义 mysqlnfs
crm(live)configure#primitive mysqlnfs ocf:heartbeat:Filesystem paramsdevice="172.16.10.22:/mysql" directory="/mysql"fstype="nfs" op monitor timeout=40 interval=20 op start timeout=60 opstop timeout=60
定义mysql:
crm(live)configure#primitive mysqld lsb:mysqld op monitor timeout=40 interval=2
定义组:
crm(live)configure#group mysqlgroup mysqlip mysqlnfs mysqld
定义排序:
crm(live)configure#order mysqlip_before_mysqlnfs Mandatory: mysqlip mysqlnfs crm(live)configure#order mysqlnfs_before_mysqld Mandatory: mysqlnfs mysqld
切换节点后数据正常。
corosync/pacemaker, 实现高可用的MariaDB
原文地址:http://nickxu.blog.51cto.com/1207271/1658092