IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> K8S高可用存储配置说明 -> 正文阅读

[系统运维]K8S高可用存储配置说明

随着公司的不断发展,对一些外围工具的使用也逐渐增多,其中包括磁盘数据的高可用,目前采用数据同步的方式是借助DRBD实现主从同步(nfs+drbd+keepalived)。

DRBD是分布式复制块设备,是一种通过TCP/IP网络实现块设备数据实时镜像的方案,可以被用于高可用(HA)之中。它类似于一个网络RAID-1功能。当你将数据写入本地文件系统时,数据还将会被发送到网络中另一台主机上,以相同的形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步,当本地系统出现故障时,远程主机上还会保留有一份相同的数据,可以继续使用。本篇文档主要介绍nfs+DRBD+keepalived实现高可用储存的相关知识点。?

1整体介绍?

公司目前K8S环境实现高可用存储采用数据同步的方式是nfs+DRBD+keepalived实现DRBD主从同步,下面首先介绍一下用到的名词、部署架构和切换脚本。?

1.1名词解释?

1.nfs:网络文件系统,英文Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。?

2.DRBD:一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。?

3.keepalived:作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉。?

1.2部署架构?

1.通过浮动IP指向主服务器上的存储磁盘,此时数据存取都是主节点,但会同步到从节点的存储磁盘中;?

2.从节点是虚线,表示此时数据不走从节点,待机状态;?

3.当主服务器出现问题,浮动IP会转移到从服务器上,虚线变为实线,数据存储改为从服务器。切换过程中调用主副服务器的nfs_check.sh脚本,执行脚本内容,切换DRBD。?

1.3脚本介绍?

下面主要介绍切换nfs主从脚本nfs_check.sh,绿色部分为注解和打印日志说明,如下:?

2实现步骤?

K8S实现高可用存储首先需要安装相关支撑程序,然后安装DRBD并进行相关配置,最后将DRBD设置为开机自启,下面主要介绍具体安装步骤。?

2.1支撑程序?

1.到
http://oss.linbit.com/drbd下载drbd-9.0.19-1.tar.gz、drbd-utils-9.12.1.tar.gz,再将drbd-9.0.19-1.tar.gz、drbd-utils-9.12.2.tar.gz上传到虚拟机/usr/local目录,再装一些支撑软件。?

2.安装po4a-translate,编译drbd-utils的rpm包的时候,需要有命令【po4a-translate】的支持,但是系统上并没有这个命令。?

3.检查kernel和kernel-devel版本是否一致,不一致执行更新命令使其保持一致:?

??

??

2.2安装DRBD?

1.编译drbd-utils:?

2.编译DRBD:?

3.安装drbd模块:?

4.查看DRBD版本及路径:?

5.新磁盘分区:?

6.配置DRBD资源文件:?

vi /etc/drbd.d/drbd.res?

7.配置资源:?

8.设置主节点:强制设置为主节点,在任一节点上执行:?

9.格式化新分区并挂载:?

查看:?

lsblk?

??

2.3开机自启?

1.安装完DRBD后,需要将DRBD设置为开机自启。?

2.设置完开机自启后,重启服务器,执行lsblk命令查看DRBD是否自动挂载。?

??

3测试验证?

测试主要包含两方面:一种是最基础的功能测试,主服务器宕机后检查副服务器的nfs是否启用。一种是业务测试,即主服务器宕机后,产品是否可以继续访问使用。下面主要介绍具体测试步骤。?

3.1基础测试?

1.测试步骤:?

(1)主服务器停止nfs服务,观察nfs服务是否自动启动,未启动,是否切换DRBD。?

(2)主服务器停止keepalived服务,测试是否切换DRBD。?

(3)主服务器reboot重启,观察是否切换DRBD,当主服务器恢复后,观察DRBD是否回到主服务器。?

2.检查重点:主服务器宕机后,DRBD是否切换挂载到从服务器,nfs依然正常挂载。?

3.2?业务测试

1.测试步骤:?

(1)主服务器reboot重启,观察是否切换DRBD,测试产品页面功能是否正常访问和使用,redis连接是否正常,后台日志输出是否正常。?

(2)当主服务器恢复后,观察DRBD是否回到主服务器,测试产品页面功能是否正常访问和使用,redis连接是否正常,后台日志输出是否正常。?

2.检查重点:主服务器宕机后,产品页面功能是否正常访问和使用,redis连接是否正常,后台日志输出。?

3.3相关命令?

1.查看DRBD状态:?

2.查看keepalived是否启动:?

4问题说明?

在DRBD切换挂载时,有可能因为配置不对而出现一些问题,下面主要介绍在测试过程中容易出现的问题以及对应的解决方法。?

4.1切换挂载?

1.问题描述:DRBD切换后,nfs挂载提示“mount.nfs: Stale NFS file handle”?

??

2.解决思路:这种错误提示在当前的情况下是因为“过时的nfs句柄”造成的,原因是客户端已打开文件,但服务器不再识别文件句柄,在某些情况下,NFS会在超时后清理其数据结构。但在其他情况下,需要自己清理nfs数据结构,然后重新启动nfs。?

3.解决方法:重新启动nfs服务:

4.2DRBD挂载?

1.问题描述:DRBD切换后再切换回主服务器后,没有自动设置主节点,node1和node2互相认为对方 StandAlone,导致DRBD连接失败,无法同步。?

??

2.解决思路:这个问题解决思路就是想办法让2个DRBD在系统自启后重新连接上。?

3.解决方法:在主服务器重新设置主节点,在从服务器重新设置从节点。?

主DRBD服务器执行:?

??

副drbd服务器执行:?

??

4.3日志查看?

1.问题描述:DRBD切换后,产品功能没有问题,但查看产品服务日志时,发现自切换后,容器映射日志不再更新。?

2.解决思路:检查发现是因为脚本中有些命令有时会报错或者执行超时,而keepalived再定时调用脚本时,检查如果在监听时间内脚本没有执行完,就会被认为脚本执行失败,就会切换keepalived的vip,导致keepalived多次主从切换。在多次切换过程中,日志映射出现异常。所以解决思路是保障切换一次就可以成功。?

3.解决方法:调整脚本逻辑,减少非必要命令执行,在命令前加入timeout 1,表示此命令如果执行超过1秒,就跳过减少脚本执行一遍的时间。?

5心得总结?

通过在项目中调整DRBD相关功能,自己对于K8S高可用储存方面的知识有了一定提升,现将收获及心得进行总结。?

5.1知识收获?

知识收获方面主要学会了使用DRBD实现主从同步,nfs+DRBD+keepalived组合方案。keepalived原来在部署环境时就已经用到过,本次对一些细节进行了巩固,比如调用脚本方面。本次主要在DRBD方面令我收获最大,通过DRBD间接地学习了磁盘的分区、初始化及挂载等知识。?

5.2学习方法?

在工作过程中要学会使用链式学习法,链式学习法可以让学习的内容更具有连贯性,在学习新知识之前先了解所学内容的背景知识,再根据自身需要有针对性地学习,同时了解学习过程中遇到的其它知识,主动去查找相关资料和学习,触类旁通、一并掌握、由点到线、由线到面,将所学知识串联起来,形成体系。?

5.3心得体会?

通过项目运维相关工作,学习到了很多Linux与K8S集群的相关知识,也对高可用存储的实现方式有了一个大致的了解,后续要不断加强个人能力,加强学习,努力提高工作效率。?

K8S是最近几年普及的新技术,公司在逐步推出K8S云平台构建集成开发解决方案、开发集成方案,因此在后续工作中需要及时适应新形势下的工作内容,扬长避短、发奋工作、克难攻坚,做好工作计划,力求把工作做得更好。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:24:17  更:2022-09-30 01:25:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:51:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码