首页 文章 精选 留言 我的

精选列表

搜索[增量式],共10000篇文章
优秀的个人博客,低调大师

DRBD分布式块设备复制

作者:独笔孤行@TaoCloud DRBD(Distributed Replicated Block Device)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。可以简单的理解为网络RAID。 DRBD的核心功能通过Linux的内核实现,最接近系统的IO栈,DRBD的位置处于文件系统以下,比文件系统更加靠近操作系统内核及IO栈。 一、准备环境 节点 主机名 IP地址 磁盘 操作系统 节点1 node1 172.16.201.53 sda,sdb centos7.6 节点2 node2 172.16.201.54 sda,sdb centos7.6 关闭防火墙和selinux #2节点都需要配置 systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config 配置epel源 #2节点都需要配置 yum install epel-release 二、安装drbd 如果yum源中有完整的drbd软件,可直接通过yum进行安装,如果yum无法找到部分软件包,可通过编译安装。以下2中方法二选一即可。 1.yum安装drbd yum install drbd drbd-bash-completion drbd-udev drbd-utils kmod-drbd yum方式进行安装可能无法找到kmod-drbd软件包,因此需要编译安装。 2.编译安装drbd 2.1准备编译环境 yum update yum -y install gcc gcc-c++ make automake autoconf help2man libxslt libxslt-devel flex rpm-build kernel-devel pygobject2 pygobject2-devel reboot 2.2在官网下载源码包, 在官网 https://www.linbit.com/en/drbd-community/drbd-download/中获取源码包下载地址,并进行下载。 wget https://www.linbit.com/downloads/drbd/9.0/drbd-9.0.21-1.tar.gz wget https://www.linbit.com/downloads/drbd/utils/drbd-utils-9.13.0.tar.gz wget https://www.linbit.com/downloads/drbdmanage/drbdmanage-0.99.18.tar.gz mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} mkdir DRBD9 2.3.编译生成rpm包 tar xvf drbd-9.0.21-1.tar.gz cd drbd-9.0.21-1 make kmp-rpm cp /root/rpmbuild/RPMS/x86_64/*.rpm /root/DRBD9/ tar xvf drbdmanage-0.99.18.tar.gz cd drbdmanage-0.99.18 make rpm cp dist/drbdmanage-0.99.18*.rpm /root/DRBD9/ 2.4.开始安装drbd #2节点都需要安装 cd /root/DRBD9 yum install drbd-kernel-debuginfo-9.0.21-1.x86_64.rpm drbdmanage-0.99.18-1.noarch.rpm drbdmanage-0.99.18-1.src.rpm kmod-drbd-9.0.21_3.10.0_1160.6.1-1.x86_64.rpm 三、配置DRBD 1.主节点划分vg #节点1操作 pvcreate /dev/sdb1 vgcreate drbdpool /dev/sdb1 2.初始化DRBD集群并添加节点 #节点1操作 [root@node1 ~]# drbdmanage init 172.16.201.53 You are going to initialize a new drbdmanage cluster. CAUTION! Note that: * Any previous drbdmanage cluster information may be removed * Any remaining resources managed by a previous drbdmanage installation that still exist on this system will no longer be managed by drbdmanage Confirm: yes/no: yes Empty drbdmanage control volume initialized on '/dev/drbd0'. Empty drbdmanage control volume initialized on '/dev/drbd1'. Waiting for server: . Operation completed successfully #添加节点2 [root@node1 ~]# drbdmanage add-node node2 172.16.201.54 Operation completed successfully Operation completed successfully Host key verification failed. Give leader time to contact the new node Operation completed successfully Operation completed successfully Join command for node node2: drbdmanage join -p 6999 172.16.201.54 1 node1 172.16.201.53 0 G3F1h/pAcGwV1LnlxhFE 记录返回结果中的最后一行:“drbdmanage join -p 6999 172.16.201.54 1 node1 172.16.201.53 0 G3F1h/pAcGwV1LnlxhFE” 并在节点2中执行,以加入集群。 3.从节点划分vg #节点2操作 pvcreate /dev/sdb vgcreate drbdpool /dev/sdb 4.从节点加入集群 #节点2操作 [root@node2 ~]# drbdmanage join -p 6999 172.16.201.54 1 node1 172.16.201.53 0 G3F1h/pAcGwV1LnlxhFE You are going to join an existing drbdmanage cluster. CAUTION! Note that: * Any previous drbdmanage cluster information may be removed * Any remaining resources managed by a previous drbdmanage installation that still exist on this system will no longer be managed by drbdmanage Confirm: yes/no: yes Waiting for server to start up (can take up to 1 min) Operation completed successfully 5.检查集群状态 #节点1操作,以下返回结果为正常状态 [root@node1 ~]# drbdadm status .drbdctrl role:Primary volume:0 disk:UpToDate volume:1 disk:UpToDate node2 role:Secondary volume:0 peer-disk:UpToDate volume:1 peer-disk:UpToDate 6.创建资源 #节点1操作 #创建资源test01 [root@node1 ~]# drbdmanage add-resource test01 Operation completed successfully [root@node1 ~]# drbdmanage list-resources +----------------+ | Name | State | |----------------| | test01 | ok | +----------------+ 7.创建卷 #节点1操作 #创建5GB的卷test01 [root@node1 ~]# drbdmanage add-volume test01 5GB Operation completed successfully [root@node1 ~]# drbdmanage list-volumes +-----------------------------------------------------------------------------+ | Name | Vol ID | Size | Minor | | State | |-----------------------------------------------------------------------------| | test01 | 0 | 4.66 GiB | 100 | | ok | +-----------------------------------------------------------------------------+ [root@node1 ~]# 8.部署资源 末尾数字 “2” 表示节点数量 #节点1操作 [root@node1 ~]# drbdmanage deploy-resource test01 2 Operation completed successfully #创建完时,状态为Inconsistent,正在进行同步 [root@node1 ~]# drbdadm status .drbdctrl role:Primary volume:0 disk:UpToDate volume:1 disk:UpToDate node2 role:Secondary volume:0 peer-disk:UpToDate volume:1 peer-disk:UpToDate test01 role:Secondary disk:UpToDate node2 role:Secondary replication:SyncSource peer-disk:Inconsistent done:5.70 #同步完成后,状态内容如下 [root@node1 ~]# drbdadm status .drbdctrl role:Primary volume:0 disk:UpToDate volume:1 disk:UpToDate node2 role:Secondary volume:0 peer-disk:UpToDate volume:1 peer-disk:UpToDate test01 role:Secondary disk:UpToDate node2 role:Secondary peer-disk:UpToDate 9.配置DRBD设备完成后,创建文件系统并进行挂载 #节点1操作 # [/dev/drbd***]的数字,是通过命令[drbdmanage list-volumes]获取的[Minor]值 [root@node1 ~]# mkfs.xfs /dev/drbd100 meta-data=/dev/drbd100 isize=512 agcount=4, agsize=305176 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=1220703, 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@node1 ~]# mount /dev/drbd100 /mnt/ [root@node1 ~]# echo "Hello World" > /mnt/test.txt [root@node1 ~]# ll /mnt/ total 4 -rw-r--r-- 1 root root 12 Nov 26 15:43 test.txt [root@node1 ~]# cat /mnt/test.txt Hello World 10.在节点2上挂载DRBD设备,可进行如下操作: #在节点1操作 #卸载/mnt目录,配置为从节点 [root@node1 ~]# umount /mnt/ [root@node1 ~]# drbdadm secondary test01 #在节点2操作 #配置为主节点 [root@node2 ~]# drbdadm primary test01 [root@node2 ~]# mount /dev/drbd100 /mnt/ [root@node2 ~]# df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs tmpfs 3.9G 8.9M 3.9G 1% /run tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/mapper/centos-root xfs 35G 1.5G 34G 5% / /dev/sda1 xfs 1014M 190M 825M 19% /boot tmpfs tmpfs 783M 0 783M 0% /run/user/0 /dev/drbd100 xfs 4.7G 33M 4.7G 1% /mnt [root@node2 ~]# ls -l /mnt/ total 4 -rw-r--r-- 1 root root 12 Nov 26 15:43 test.txt [root@node2 ~]# cat /mnt/test.txt Hello World 关注微信公众号“云实战”,欢迎更多问题咨询

优秀的个人博客,低调大师

告别“救火”式运维

一早刚上班,就听到小李抱怨:昨晚凌晨2点多,收到监控告警,磁盘空间满了;刚清理完成磁盘,又发现文件系统只读了;整整折腾了一晚上,才修复完成。运维太苦X了! 你也跟小李一样? 一会上线出问题;一会磁盘故障;一会硬件告警;一会应用性能不足。客户怨声载道,运维叫苦连天。每天忙忙碌碌,但是没有任何工作成果,还不断遭受老板、上司的批,苦X的运维,背锅侠之类的话也成了我们的口头禅。 给你句实话,这就是传统运维的真实写照! 1.传统运维的困境 在传统运维中,部门在制订IT设备和信息化系统管理目标时,关注的是一台台IT设备的故障率和一套套应用系统的可用性。在基础设施、数据库、中间件、灾备、存储等环节通常大量采用商业闭源的软硬件产品及其解决方案。设备的开放性差、标准也不统一,喜欢采用两地三中心这种典型的重量级、集中式运维管理方式。 随着IT规模越来越大、系统越来越复杂,运维保障工作由最初的硬件运维不断细分,网络工程师、系统运维工程师、DBA、安全工程师等岗位加入到运维体系中。 当业务系统发生故障时,IT主管首先召集自扫门前雪的各个运维岗位进行自检,查看各自负责的设备、应用组件、系统是否运行正常。所以,传统运维部门常常被称为“救火”队员,依靠人工巡检的工作方式,不但工作被动,而且效率低下。 2.自动化运维的到来 基于以上原因,自动化运维应运而生。自动化运维的作用就像工业革命时,织布机代替了大量的织布工人,给企业带来了利益;自动化运维就像织布机;他的核心诉求是提升效率;自动化运维是运维演进历程中的一环;从使用脚本的半自动化运维发展到集成到平台的自动化运维,未来也会发展为大数据运维。自动化运维的基本目标解决的是“能程序完成的事情尽量不要用人去干”,具体来说就是把周期性、重复性、规律性的工作都交给工具去做,最终达到提升运维效率的目的。这件事情,说起来容易,但做起来却一点不容易,完成自动化运维,首先需要实现标准化、流程化。 其中所谓流程化,就是将自动化的工作串起来,实现有序的协作,例如代码发布,通过制定流程,然后使用持续集成工具如jekins实现流程化发布。这种流程化的发布,可以实现文件的上传、分发、版本管理、回滚等各种操作。此外,对于其它运维工作,也可以实现流程化,制定运维流程规范、故障处理规范、故障告警规范等,通过多个流程规范可以实现运维工作的秩序化,合理化,从而提高运维效率。 ▼免费直播扫码报名 3.智能运维AIOps 自动化运维虽然提升了效率,解决了一部分问题,但也遇到了新的难题,比如面对繁多的报警信息,运维人员应该如何处理?故障发生时,又如何能够迅速定位问题? 这就是未来智能运维AIOps,它主要解决的是复杂运维环境下问题的快速发现甚至提前预判,以及出现问题后如何在复杂的告警、报错和日志中快速进行根因分析。甚至实现某些故障的自愈功能。 AI和Ops要解决的还是两个层面的问题,可以类比到人。AI相当于人的大脑,我们手脚和躯干是执行系统,大脑负责决策判断,手脚躯干负责完成大脑下发的动作指令。 对应到运维上面,AI 要解决的是怎么快速发现问题和判断根因,而问题一旦找到,就需要靠我们高度完善的自动化体系去执行对应的运维操作,比如容量不够就扩容、流量过大就应该触发限流和降级等等。然后是Ops,从Ops的角度,涉及的主要是运维自动化相关的技术,也就是说AIOps一定是建立在高度完善的运维自动化基础之上的,只有AI没有Ops,是谈不上AIOps。 报名《深入浅出解析大数据平台》免费直播,实操上手! ❥ 直播作者:运维专家·高俊峰❥ 直播时间:11.02(今天)晚8:00❥ 直播群:成功报名后,还可领取直播PPT+作者互动哦~ ▼免费直播扫码报名

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册