实验环境: 

    两台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操作

corosync/pacemaker, 实现高可用的MariaDB_IP地址

3、拷贝 authkey corosync.conf 文件到另外一个节点上

scp -p authkey corosync.conf 20xu:/etc/corosync

          4、  启动服务

 

           # service corosync start;ssh 20xu 'service corosync start'


      5404端口处于监听状态;

corosync/pacemaker, 实现高可用的MariaDB_服务器_02



#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

corosync/pacemaker, 实现高可用的MariaDB_IP地址_03



安装完成:

使用crm  进入子命令模式;

corosync/pacemaker, 实现高可用的MariaDB_主机_04

配置全局属性

crm(live)configure#property stonith-enabled=false

#如果没有stonith 设备需要禁止

crm(live)configure#property  no-quorum-policy=ignore

crm(live)configure#verify   #检查语法:

commit: #保存


corosync/pacemaker, 实现高可用的MariaDB_IP地址_05



定义 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_IP地址_06


corosync/pacemaker, 实现高可用的MariaDB_服务器_07


corosync/pacemaker, 实现高可用的MariaDB_IP地址_08


切换节点后数据正常。