| |
|
开发:
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.到 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云平台构建集成开发解决方案、开发集成方案,因此在后续工作中需要及时适应新形势下的工作内容,扬长避短、发奋工作、克难攻坚,做好工作计划,力求把工作做得更好。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/15 6:31:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |