CentOS7搭建keepalived+DRBD+NFS高可用共享存储

一、服务器信息

IP地址 类型 主机名 操作系统 内存 磁盘
172.25.10.100 主服务器 node1 centos7 2G 系统盘20G,存储盘20G
172.25.10.110 备服务器 node2 centos7 2G 系统盘20G,存储盘20G

二、两台主机关闭防火墙,禁用SELinux

systemctl stop firewalld
iptables -F
sed -i '/^SELINUX=/ cSELINUX=disabled' /etc/selinux/config
setenforce 0

三、两台主机设置hosts文件,打通通道

vim /etc/hosts
172.25.10.100 node1
172.25.10.110 node2

重启虚拟机

配置root用户免密钥互信
#主服务器

ssh-keygen -f ~/.ssh/id_rsa -P '' -q
ssh-copy-id node2

#备服务器

ssh-keygen -f ~/.ssh/id_rsa -P '' -q
ssh-copy-id node1

四、两台主机配置drbd的yum的epel源,方便软件安装

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum localinstall -y https://mirrors.tuna.tsinghua.edu.cn/elrepo/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-6.el7.elrepo.noarch.rpm
wget -O /etc/yum.repos.d/elrepo.repo https://mirrors.aliyun.com/repo/epel-7.repo



安装DRBD软件包
yum install -y drbd90-utils kmod-drbd90
启动drbd的内核

modprobe drbd
echo drbd > /etc/modules-load.d/drbd.conf
lsmod | grep drbd



移除默认配置
cp /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig

六、两台主机安装配置DRBD

vim /etc/drbd.d/global_common.conf
global {usage-count no;
}
common {    protocol C;handlers {pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";}startup {}options {}disk {on-io-error detach;}net {}
}

配置资源

vim /etc/drbd.d/nfs.resresource nfs {disk /dev/sdb;device /dev/drbd0;meta-disk internal;on node1 {address 172.25.10.100:7789;}on node2 {address 172.25.10.110:7789;}
}

六、启动DRBD

  1. 首次启用资源
    创建设备的元数据
    drbdadm create-md nfs

    启用资源
    drbdadm up nfs
    初始设备同步,只在一个主节点上执行
    drbdadm primary --force nfs

监视进度
drbdadm status

等待一段时间,检查同步情况

连接状态
drbdadm cstate nfs来观察资源的连接状态

  1. 常用命令
drbdadm cstate nfs      连接状态
drbdadm dstate nfs      磁盘状态
drbdadm role nfs         资源角色
drbdadm primary nfs   提升资源
drbdadm secondary nfs   降级资源

七、验证drbd主从同步

两台节点都创建挂载点:mkdir /data

主节点上操作:

mkfs.xfs /dev/drdb0 /data
mount /dev/drbd0 /data

创建测试文件

touch /data/file{1..3}
ls -l /data

卸载文件系统并切换备节点

umount /data
drbdadm secondary nfs

从节点上执行以下命令确认文件

drbdadm primary nfs
mount /dev/drbd0 /data
ls -l /data


验证完成

还原,将node1设置为主,node2为备


启用服务

systemctl start drbd
systemctl enable drbd

八、安装nfs

两台主机安装nfs

yum -y install rpcbind nfs-utils
vim letc/exports/data 172.25.0.0/16(rw,sync,no_root_squash,no_all_squash)systemctl restart rpcbind
systemctl restart nfs
systemctl enable nfs-server rpcbind
showmount -e localhost


九、安装配置keepalived

yum install -y keepalived

  1. 配置keepalived配置文件:
##MASTER配置文件
[root@node1 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL_NFS1
}vrrp_script chk_nfs {script "killall -0 nfsd"interval 2weight -40
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nfs}notify_stop /etc/keepalived/notify_stop.sh  #当服务停止时执行的脚本notify_master /etc/keepalived/notify_master.sh  #当切换成主时执行的脚本notify_backup /etc/keepalived/notify_backup.sh  #当切换成备时执行的脚本virtual_ipaddress {172.25.10.200/24 dev ens33 label ens33:1  #表示将VIP绑定在指定网卡的指定子接口上}
}
##BACKUP配置文件:
[root@node2 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL_NFS2
}vrrp_script chk_nfs {script "killall -0 nfsd"interval 2weight -40
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_nfs}notify_stop /etc/keepalived/notify_stop.sh  #当服务停止时执行的脚本notify_master /etc/keepalived/notify_master.sh  #当切换成主时执行的脚本notify_backup /etc/keepalived/notify_backup.sh  #当切换成备时执行的脚本virtual_ipaddress {172.25.10.200/24 dev ens33 label ens33:1}
}
  1. 配置从BACKUP切换到MASTER触发的脚本,主备脚本一致:
[root@node1 keepalived]# vim notify_master.sh#!/bin/bashtime=$(date +"%F %T")
logname=notify_master
logdir=/etc/keepalived/logs
mountdir=/dev/drbd0
resname=nfs[ -d ${logdir} ] || mkdir -p $logdir
echo -e "$time ----${logname}----\n" >> $logdir/${logname}.log
drbdadm primary $resname &>> $logdir/${logname}.log  ##升级资源角色
mount $mountdir /data &>> $logdir/${logname}.log  ##将设备挂载到挂载点上
systemctl start nfs-server &>> $logdir/${logname}.log  ##启动nfs服务
echo -e "\n" >> $logdir/${logname}.log
  1. 配置从MASTER切换到BACKUP触发的脚本,主备脚本一致:
[root@node1 keepalived]# vim notify_backup.sh#!/bin/bashtime=$(date +"%F %T")
logname=notify_backup
logdir=/etc/keepalived/logs
mountdir=/dev/drbd0
resname=nfs[ -d ${logdir} ] || mkdir -p $logdir
echo -e "$time ----${logname}----\n" >> $logdir/${logname}.log
systemctl stop nfs-server &>> $logdir/${logname}.log  ##停止nfs服务
umount /data &>> $logdir/${logname}.log  ##卸载
drbdadm secondary $resname &>> $logdir/${logname}.log  ##降级资源角色
echo -e "\n" >> $logdir/${logname}.log
  1. 配置停止服务时触发的脚本,主备脚本一致:
[root@node1 keepalived]# vim notify_stop.sh#!/bin/bashtime=$(date +"%F %T")
logname=notify_stop
logdir=/etc/keepalived/logs
mountdir=/dev/drbd0
resname=nfs[ -d ${logdir} ] || mkdir -p $logdir
echo -e "$time ----${logname}----\n" >> $logdir/${logname}.log
systemctl stop nfs-server &>> $logdir/${logname}.log
umount /data &>> $logdir/${logname}.log
drbdadm secondary $resname &>> $logdir/${logname}.log
echo -e "\n" >> $logdir/${logname}.log
  1. 为脚本添加执行权限,主备节点操作一致:
[root@node1 keepalived]# chmod +x notify_stop.sh [root@node1 keepalived]# chmod +x notify_backup.sh [root@node1 keepalived]# chmod +x notify_master.sh
  1. 重启keepalived:
[root@node1 ~]# systemctl restart keepalived.service

五. 测试高可用,共享存储是否正常:

  1. 查看VIP的位置是否在node1上:
[root@node1 ~]# ip a | grep 172.25.10.200inet 172.25.10.200/24 scope global secondary ens33:1
  1. 查看node1上的nfs是否启动,node2上的nfs是否是关闭:
[root@node1 ~]# systemctl is-active nfs
active[root@node2 ~]# systemctl is-active nfs
inactive
  1. 查看node1:/data/下是否有数据,node2:/data/下是否没有数据:
[root@node1 ~]# ls /data
centos-release  centos-release-upstream  cron.deny  crontab  crypttab
csh.cshrc  csh.login[root@node2 ~]# ls /data/
[root@node2 ~]#
    4.  node1停止nfs服务,node2开启nfs服务;并查看VIP是否飘移:
[root@node1 ~]# systemctl stop nfs[root@node2 ~]# systemctl start nfs[root@node1 ~]# ip a | grep 172.25.10.200
[root@node1 ~]# [root@node2 ~]# ip a | grep 172.25.10.200inet 172.25.10.200/24 scope global secondary ens33:1
  1. 查看node2:/data/下是否有数据:
[root@node2 ~]# ls /data/
centos-release  centos-release-upstream  cron.deny  crontab  crypttab
csh.cshrc  csh.login

CentOS7搭建keepalived+DRBD+NFS高可用共享存储相关推荐

  1. CentOS7.5搭建Heartbeat+DRBD+NFS高可用共享存储

    在一般的网络架构的设计中,如果前端web做了负载均衡,后端存储都会用到共享存储,在并发不大.数据量不大的情况下,nfs是一个不错共享存储方案,但是nfs存在单点故障的问题,要想保证nfs的高可用,就要 ...

  2. linux nfs mysql_MySQL实现高可用+共享存储NFS

    4.1corosync的安装,两台都安装上 ## yum install -y cluster-glue-1.0.6-1.6.el5.i386.rpm cluster-glue-libs-1.0.6- ...

  3. MySQL共享存储主备模式利用Keepalived实现双机高可用

    简单介绍 先简单说下MySQL主从复制与keepalived模式和MySQL共享存储与Keepalived模式 MySQL共享存储主备模式不同于MySQL主主复制模式,MySQL主主是利用MySQL自 ...

  4. 基于CentOS7,MySQL5.7的高可用MHA架构搭建实战

    基于CentOS7,MySQL5.7的高可用MHA架构搭建实战 MHA 架构搭建 一 .MHA架构 MHA(Master High Availability)是一套比较成熟的 MySQL 高可用方案, ...

  5. NFS 高可用方案(NFS+keepalived+Sersync)

    NFS 高可用方案(NFS+keepalived+Sersync) 1. 简述 1.1 介绍 本方案 NFS 的高可用方案,应用服务器为 Client ,两台文件服务器分别Master和 Slave, ...

  6. 高并发负载均衡(四):基于keepalived的LVS高可用搭建

    LVS四层 & Nginx七层 对比 你要分清哪些程序是应用层的,哪些程序是内核的. LVS四层负载均衡服务器,是不会碰握手这一个步骤的. Nginx是基于反向代理(七层)的负载均衡服务器,要 ...

  7. Keepalived实现mysql高可用

    文章目录 0.参考资料 1.实现mysql双主高可用 1.1.高可用方案选择 1.2.双主基础上实现高可用 1.2.1.安装 1.2.2.主从配置文件 2.原理介绍(整理自网络) 0.参考资料 官方地 ...

  8. Nginx+Keepalived实现站点高可用

    2019独角兽企业重金招聘Python工程师标准>>> Nginx+Keepalived实现站点高可用 seanlook 2016-05-18 14:56:23 浏览2407 评论2 ...

  9. Heartbeat+DRBD+MySQL高可用方案

    1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自 ...

最新文章

  1. linux 镜像文件名,linux – 使用wget镜像具有相同名称的路径和子文件夹的网站
  2. Redis【第二篇】集群搭建
  3. 后台开发人员面试内容——数据库(二)
  4. 开源 | 如何实现一个iOS AOP框架?
  5. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差
  6. 【MySQL】深入浅出剖析mysql事务锁机制 - 笔记
  7. centos7添加新网卡实现双IP双网关
  8. 转:初学 Java Web 开发,请远离各种框架,从 Servlet 开发
  9. 使用jps查看JAVA进程号
  10. flash mx拖拽实例_Flash MX 2004的“扭曲和渐变”命令
  11. matlab三角函数用法
  12. 区块链还有多长的路要走
  13. 转载:常用 Git 命令清单 by 阮一峰
  14. 2018初中计算机考试知识点,2018计算机等级考试考点:考前学习的技巧
  15. VBA中获取合并单元格的真实地址
  16. 谷歌浏览器禁用摄像头且无法通过设置修改的解决办法
  17. python网络爬虫从入门到实践第2版pdf-Python网络爬虫从入门到实践 第2版
  18. iphone怎么更新9.0系统更新服务器,iOS 9 推送前你必须知道的几件事:iOS 9 升级指南...
  19. Sun培训开放日归来
  20. 踏入IT行业——大梦想

热门文章

  1. 齐治堡垒机_任意用户登录漏洞
  2. 微信端视频播放防被浏览器劫持
  3. 数据库SQL注入漏洞
  4. java线程占用的空间_linux服务器查询java线程占用的资源-Go语言中文社区
  5. java在gc正常工作的情况下_Java GC的工作原理
  6. 非计算机专业买几寸电脑好,学习计算机网路技术专业,是不是需要买电脑啊
  7. u盘怎么制作linux系统盘,如何制作LinuxU盘安装盘
  8. 我与我的专业计算机作文500字,电脑让我欢喜让我忧作文500字
  9. JVM(Java虚拟机模型、Java运行时数据区模型)
  10. 如何做数据竞赛·优秀案例学习(DC03)