CentOS7搭建keepalived+DRBD+NFS高可用共享存储
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
- 首次启用资源
创建设备的元数据
drbdadm create-md nfs
启用资源
drbdadm up nfs
初始设备同步,只在一个主节点上执行
drbdadm primary --force nfs
监视进度
drbdadm status
等待一段时间,检查同步情况
连接状态
drbdadm cstate nfs
来观察资源的连接状态
- 常用命令
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
- 配置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}
}
- 配置从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
- 配置从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
- 配置停止服务时触发的脚本,主备脚本一致:
[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
- 为脚本添加执行权限,主备节点操作一致:
[root@node1 keepalived]# chmod +x notify_stop.sh [root@node1 keepalived]# chmod +x notify_backup.sh [root@node1 keepalived]# chmod +x notify_master.sh
- 重启keepalived:
[root@node1 ~]# systemctl restart keepalived.service
五. 测试高可用,共享存储是否正常:
- 查看VIP的位置是否在node1上:
[root@node1 ~]# ip a | grep 172.25.10.200inet 172.25.10.200/24 scope global secondary ens33:1
- 查看node1上的nfs是否启动,node2上的nfs是否是关闭:
[root@node1 ~]# systemctl is-active nfs
active[root@node2 ~]# systemctl is-active nfs
inactive
- 查看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
- 查看node2:/data/下是否有数据:
[root@node2 ~]# ls /data/
centos-release centos-release-upstream cron.deny crontab crypttab
csh.cshrc csh.login
CentOS7搭建keepalived+DRBD+NFS高可用共享存储相关推荐
- CentOS7.5搭建Heartbeat+DRBD+NFS高可用共享存储
在一般的网络架构的设计中,如果前端web做了负载均衡,后端存储都会用到共享存储,在并发不大.数据量不大的情况下,nfs是一个不错共享存储方案,但是nfs存在单点故障的问题,要想保证nfs的高可用,就要 ...
- 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- ...
- MySQL共享存储主备模式利用Keepalived实现双机高可用
简单介绍 先简单说下MySQL主从复制与keepalived模式和MySQL共享存储与Keepalived模式 MySQL共享存储主备模式不同于MySQL主主复制模式,MySQL主主是利用MySQL自 ...
- 基于CentOS7,MySQL5.7的高可用MHA架构搭建实战
基于CentOS7,MySQL5.7的高可用MHA架构搭建实战 MHA 架构搭建 一 .MHA架构 MHA(Master High Availability)是一套比较成熟的 MySQL 高可用方案, ...
- NFS 高可用方案(NFS+keepalived+Sersync)
NFS 高可用方案(NFS+keepalived+Sersync) 1. 简述 1.1 介绍 本方案 NFS 的高可用方案,应用服务器为 Client ,两台文件服务器分别Master和 Slave, ...
- 高并发负载均衡(四):基于keepalived的LVS高可用搭建
LVS四层 & Nginx七层 对比 你要分清哪些程序是应用层的,哪些程序是内核的. LVS四层负载均衡服务器,是不会碰握手这一个步骤的. Nginx是基于反向代理(七层)的负载均衡服务器,要 ...
- Keepalived实现mysql高可用
文章目录 0.参考资料 1.实现mysql双主高可用 1.1.高可用方案选择 1.2.双主基础上实现高可用 1.2.1.安装 1.2.2.主从配置文件 2.原理介绍(整理自网络) 0.参考资料 官方地 ...
- Nginx+Keepalived实现站点高可用
2019独角兽企业重金招聘Python工程师标准>>> Nginx+Keepalived实现站点高可用 seanlook 2016-05-18 14:56:23 浏览2407 评论2 ...
- Heartbeat+DRBD+MySQL高可用方案
1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由DRBD这个工具来保证.默认情况下只有一台mysql在工作,当主mysql服务器出现问题后,系统将自 ...
最新文章
- linux 镜像文件名,linux – 使用wget镜像具有相同名称的路径和子文件夹的网站
- Redis【第二篇】集群搭建
- 后台开发人员面试内容——数据库(二)
- 开源 | 如何实现一个iOS AOP框架?
- Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差
- 【MySQL】深入浅出剖析mysql事务锁机制 - 笔记
- centos7添加新网卡实现双IP双网关
- 转:初学 Java Web 开发,请远离各种框架,从 Servlet 开发
- 使用jps查看JAVA进程号
- flash mx拖拽实例_Flash MX 2004的“扭曲和渐变”命令
- matlab三角函数用法
- 区块链还有多长的路要走
- 转载:常用 Git 命令清单 by 阮一峰
- 2018初中计算机考试知识点,2018计算机等级考试考点:考前学习的技巧
- VBA中获取合并单元格的真实地址
- 谷歌浏览器禁用摄像头且无法通过设置修改的解决办法
- python网络爬虫从入门到实践第2版pdf-Python网络爬虫从入门到实践 第2版
- iphone怎么更新9.0系统更新服务器,iOS 9 推送前你必须知道的几件事:iOS 9 升级指南...
- Sun培训开放日归来
- 踏入IT行业——大梦想
热门文章
- 齐治堡垒机_任意用户登录漏洞
- 微信端视频播放防被浏览器劫持
- 数据库SQL注入漏洞
- java线程占用的空间_linux服务器查询java线程占用的资源-Go语言中文社区
- java在gc正常工作的情况下_Java GC的工作原理
- 非计算机专业买几寸电脑好,学习计算机网路技术专业,是不是需要买电脑啊
- u盘怎么制作linux系统盘,如何制作LinuxU盘安装盘
- 我与我的专业计算机作文500字,电脑让我欢喜让我忧作文500字
- JVM(Java虚拟机模型、Java运行时数据区模型)
- 如何做数据竞赛·优秀案例学习(DC03)