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

news2024/10/5 12:43:22

一、服务器信息

IP地址			类型		主机名		操作系统		        内存	                磁盘
192.168.11.110	      主服务器	        node01		CentOS7.9		2G		系统盘20G 存储盘20G
192.168.11.111	      备服务器	        node02		CentOS7.9		2G		系统盘20G 存储盘20G

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

[root@node01 ~]# systemctl stop firewalld
[root@node01 ~]# systemctl is-active firewalld.service 
unknown
[root@node01 ~]# iptables -F
[root@node01 ~]# sed -i '/^SELINUX=/ cSELINUX=disabled' /etc/selinux/config
[root@node01 ~]# setenforce 0

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

[root@node01 ~]# vim /etc/hosts
[root@node01 ~]# tail -2 /etc/hosts
192.168.11.110 node01
192.168.11.111 node02

#配置root用户免密钥互信
#主服务器
[root@node01 ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q
[root@node01 ~]# ssh-copy-id node02
#备服务器
[root@node02 ~]# ssh-keygen -f ~/.ssh/id_rsa -P '' -q
[root@node02 ~]# ssh-copy-id node01

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

以下操作两台主机同时完成:

导入源

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

安装DRBD软件包

版本信息

安装90版本

[root@node01 ~]# yum install -y drbd90-utils kmod-drbd90

启动DRBD内核模块

[root@node01 ~]# modprobe drbd
[root@node01 ~]# echo drbd > /etc/modules-load.d/drbd.conf
[root@node01 ~]# modprobe drbd
[root@node01 ~]# lsmod |grep drbd
drbd                  611241  0
libcrc32c              12644  2 xfs,drbd

五、配置DRBD

[root@node01 ~]# cd /etc/drbd.d/
[root@node01 drbd.d]# egrep -v "#|^$" /etc/drbd.d/global_common.conf

[root@node01 drbd.d]# vim 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 {
		}
	}

配置资源

[root@node01 drbd.d]# vim nfs.res
resource nfs {
  disk /dev/sdb;
  device /dev/drbd0;
  meta-disk internal;

  on node01 {
        address 192.168.11.110:7789;
  }

  on node02 {
        address 192.168.11.111:7789;
  }
}

[root@node01 drbd.d]# scp nfs.res node02:$PWD
nfs.res                                                                                                              100%  176   255.6KB/s   00:00    
[root@node01 drbd.d]# ssh node02  ls /etc/drbd.d/
global_common.conf
nfs.res

六、启用DRBD

1、首次启用资源

有补全功能,需要重新登录会话

1> 创建设备元数据

[root@node01 drbd.d]# drbdadm create-md nfs
initializing activity log
initializing bitmap (640 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.
[root@node01 drbd.d]# ssh node02 drbdadm create-md nfs
initializing bitmap (640 KB) to all zero
initializing activity log
Writing meta data...
New drbd meta data block successfully created.
[root@node01 drbd.d]#

2> 启用资源

[root@node01 drbd.d]# drbdadm up nfs
[root@node01 drbd.d]# ssh node02 drbdadm up nfs

3> 初始设备同步

只在主端执行

[root@node01 drbd.d]# drbdadm primary --force nfs
[root@node01 drbd.d]# drbdadm status nfs
nfs role:Primary
  disk:UpToDate
  node02 role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:6.68

初始完成后

2、常用命令

drbdadm cstate nfs       连接状态
drbdadm dstate nfs	 磁盘状态
drbdadm role nfs	 资源角色
drbdadm primary nfs	 提升资源
drbdadm secondary nfs    降级资源

七、验证DRBD

两台节点都创建挂载点:mkdir /data
主节点上操作:

[root@node01 drbd.d]# mkdir /data
[root@node01 drbd.d]# mkfs.xfs  /dev/drbd0 
meta-data=/dev/drbd0             isize=512    agcount=4, agsize=1310678 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242711, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@node01 drbd.d]# mount /dev/drbd0  /data/

创建测试文件

[root@node01 drbd.d]# touch /data/file{1..2}

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

[root@node01 drbd.d]# umount /data 
[root@node01 drbd.d]# drbdadm secondary nfs

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

[root@node02 ~]# drbdadm primary nfs 
[root@node02 ~]# mkdir /data
[root@node02 ~]# mount /dev/drbd0  /data
[root@node02 ~]# ll /data/
total 0
-rw-r--r-- 1 root root 0 May 14 18:01 file1
-rw-r--r-- 1 root root 0 May 14 18:01 file2

启用服务

[root@node01 ~]# systemctl enable --now drbd
Created symlink from /etc/systemd/system/multi-user.target.wants/drbd.service to /usr/lib/systemd/system/drbd.service.
[root@node02 ~]# systemctl enable --now drbd
Created symlink from /etc/systemd/system/multi-user.target.wants/drbd.service to /usr/lib/systemd/system/drbd.service.

至此,DRBD安装完成

八、keepalived+drbd+nfs构建高可用存储

1、安装NFS软件

[root@node01 ~]# yum install rpcbind.x86_64  nfs-utils.x86_64  -y

2、配置

[root@node01 ~]# vim /etc/exports
[root@node01 ~]# cat /etc/exports
/data 192.168.11.0/24(rw,sync,no_root_squash)

3、重启服务,设置为开机自启动

[root@node01 ~]# systemctl enable --now  nfs rpc-rquotad.service

4、安装配置keepalived

自带keepalived版本

[root@node01 ~]# yum list all | grep keepalived
keepalived.x86_64                        1.3.5-19.el7                  base

安装keepalived ,两台机器都安装

[root@node01 ~]# yum install -y keepalived.x86_64

5、修改配置文件

[root@node01 drbd.d]# vim /usr/lib/systemd/system/keepalived.service 
[Unit]
Description=LVS and VRRP High Availability Monitor
After=syslog.target network-online.target

[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
#KillMode=process
EnvironmentFile=-/etc/sysconfig/keepalived
ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

6、两台机器都创建logs目录:mkdir /etc/keepalived/logs

7、主节点配置:

[root@node01 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id DRBD_HA_MASTER
}

vrrp_script chk_nfs {
        script "/etc/keepalived/chk_nfs.sh"
        interval 2
        weight 40

}


vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_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 {
        192.168.11.11/24 dev ens32 label ens32:1
    }

8、配置文件中的几个shell脚本

[root@node01 keepalived]# vim chk_nfs.sh
#!/bin/bash
systemctl status nfs

if [ $? -ne 0 ]
then
        systemctl start nfs
        if [ $? -ne 0  ]
        then
                umount /dev/drbd0
                drbdadm secondary nfs
                systemctl stop keepalived
        fi
fi

脚本增加执行权限:chomod +x *.sh
将配置文件和脚本拷贝到备节点:

[root@node01 keepalived]# scp *.sh keepalived.conf   node02:$PWD

9、备节点修改配置文件:

[root@node02 keepalived]# vim keepalived.conf

10、测试:

启动keepalived进行测试

验证(正常):
1、查看VIP

2、查看资源角色

3、查看挂载

4、查看nfs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新王诞生!ACP世界大赛中国区总决赛超燃收官!

“夺最高的冠,摘最亮的星!” 2023 Adobe Certified Professional 世界大赛中国区总决赛 冠军诞生! 2023ACP世界大赛中国区总决赛于5月13日-5月14日在苏州西交利物浦大学举办,历时2天的精彩角逐,于今日圆满收官&…

socket各个结构体及其参数

1.sockaddr_in结构体 //老的结构体 struct sockaddr{unsigned short sa_family; //地址类型,AF_xxxchar sa_data[14]; //14字节的端口和地址 }struct sockaddr_in{short int sin_family; //地址类型unsigned short int sin_port; //端口号st…

如何在项目中自定义注解实现权限数据管理案例

如何在项目中自定义注解实现权限数据管理案例 一、准备工程基本功能1. 创建工程并添加依赖2. 配置数据库信息3. Mybatis-Plus 代码生成器生成基本项目结构4. 因为项目中引入了spring-security,所有接口被保护了,所以用户实体和service分别实现UserDetail…

一封普通的SOA检讨书

近来许多文章关于SOA是否应当被看作是一个失败。Gartner分析师们也参与了这场争论,写了一封虚拟的信,以项目经理、企业架构师或首席开发工程师的名义,致“CIO、CEO、CFO、CTO和所有股东”,表明为什么作者承认SOA完全是场失败&…

自闭症儿童为何越来越多?可能与这3大原因有关

自闭症儿童,常被亲切的称为“来自星星的孩子”,这个名字虽好听, 但对孩子来说,却是恶梦般的存在。患有自闭症的宝贝不仅和外界隔绝,就连自己的父母仿佛也“形同陌路”般。 而近年来,自闭症的患病率有不断走高的趋势&a…

知识库AI部署搭建-唯一客服系统文档中心

唯一客服系统知识库服务,支持向量形式个性化训练ChatGPT,该服务是独立搭建的,下面是一些介绍 安装docker 现在基于GPT相应实现自建本地知识库,必不可少的就是向量数据库,现在介绍下qdrant向量数据库的安装。 因为qdran…

加密解密软件VMProtect教程(四):准备项目之使用MAP文件

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic(本机)、Virtual Pascal和XCode编译器。 同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起…

JSON, AJAX

文章目录 JSON和AJAX文档介绍1. JSON介绍1.1 JSON快速入门1.2 JSON和字符串转换1.2.1 JSON转字符串1.2.2 字符串转JSON1.2.3 JSON和字符串转换细节 1.3 JSON在java中使用1.3.1 Java对象和JSON字符串转换1.3.2 List对象和JSON字符串转换1.3.3 Map对象和JSON字符串转换 2. Ajax介…

Python实现SMS-Activate接口调用,获取手机号和验证码

前言 本文是该专栏的第27篇,后面会持续分享python的各种干货知识,值得关注。 对于SMS-Activate平台及其注册操作方法,这里就不过多详述了。尤其随着chatgpt的火爆,让sms-activate的热度也随之上涨。可能多数同学,是通过网页操作来获取手机号。而本文主要来介绍使用python…

Lua脚本语言快速上手(针对redis)

目录 基本介绍 设计目的 Lua 特性 lua基本语法 变量 流程控制 redis执行lua脚本 - EVAL指令 案例1:基本案例 案例2:动态传参 案例3:执行redis类库方法 案例4:给redis类库方法动态传参 案例5:pcall函数的使…

linux学习[10]磁盘与文件系统(1):查看磁盘容量指令df 评估文件系统的磁盘使用量指令 du

文章目录 前言1. df指令2. du指令 前言 TF卡制作的过程中涉及到了磁盘分区格式化等问题,当时对具体的指令理解不是特别深刻;由此引申到我对linux中的整个磁盘与文件系统没有一个全面的认识,这个磁盘与文件系统的系列博客章节就对这些进行记录…

电脑技巧:分享六个有趣好玩的网站,值得收藏

目录 1、Weavesilk 2、一键抠图 3、狗屁不通文章生成器 4、小霸王在线小游戏 5、世界名画在线拼图 6、寻找不动的emoji 今天小编给大家分享六个有趣好玩的网站,值得收藏! 1、Weavesilk Weavesilk是一个光线绘画网站,它不需要有任何绘画…

基于python计算生态的第三方库总结与介绍

摘要:Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域。即使在每个方向,也会有大量的专业人员开发多个第三方库来给出具体设计。正是因为python有了这么多“隐形的翅膀”,所以python的功能才足够庞大。本文主要针对pyth…

浏览器指纹

目录 下载安装与运行 软件目前可以随机的指纹 指纹随机化的好处 什么时候不需要指纹随机化 如何在软件上设置指纹 进入指纹设置的两个入口 指纹设置的两个步骤 如何获取随机指纹 设置过程(动画演示) 常见问题 浏览器指纹的有效期 同一个电脑…

【网站搭建】想搭建属于自己的网站吗,教你用ECS免费搭建网站

文章目录 前言ECS尾声 前言 Hello小伙伴们好久不见啦,博主一直忙得不可开交! 久别重逢,博主最近发现了一个搭建网站的好方法,想要搭建网站的小伙伴们快来试试看吧! ECS 用ECS搭建网站,可以说真的太爽啦…

CMS搭建篇:内容模型配置-题库管理模型

微信小程序云开发实战-答题积分赛小程序 CMS搭建篇:内容模型配置-题库管理模型 内容模型 内容模型是对数据库中存储的数据结构的描述,包含了内容的属性定义。通过内容模型,内容管理可以自动生成内容管理界面。 这里,我们需要建立一个内容模型,描述题库所具有的属性,如:题…

用友BIP成功入围工信部《2022年信息技术应用创新解决方案》

近日,由工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)发布了2022年(第四届)信息技术应用创新解决方案征集工作成果,用友网络科技有限公司(以下简称“用友”)申报的“…

html实现一个一闪一闪的按钮,CSS实现一个一闪一闪的按钮,Css闪烁点标

效果 实现 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>#app {margin: auto 38%;margin-top: 10%;}/** 关键*/.lay-btn-box {position: relative;}.lay-btn {background: #59b0fb;border-r…

【C++项目设计】tcmalloc高并发内存池

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录 一、项目介绍二、池化技术与内存池池化技术内存池内存池需要解决的问题 三、malloc四、定长内存池&#xff08;了解内存池&&后面的…

51单片机(十一)蜂鸣器

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…