corosync+pacemaker+nfs配置简单高可用

环境准备:

每个节点提供20G共享存储

web1192.168.134.176node7
web2192.168.134.177node8

一、准备web环境(两台web测试机都要准备)

yum install httpd -y
echo " web test page ,ip is `hostname -I`." > /var/www/html/index.html
systemctl start httpd

二、做两个节点免密登录,和配置其互相通信

vim /etc/hosts
内容如下:
192.168.134.176 node7
192.168.134.177 node8
备节点
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
ssh-copy-id node1
主节点
ssh-keygen -f ~/.ssh/id_rsa -P '' -q
ssh-copy-id node3

三、安装环境(pacemaker,corosync,pcs)==>两个节点上都要配置

yum install corosync pacemaker pcs
systemctl enable --now pcsd在软件安装完成之后,会生成一个用户名为hacluster
id hacluster  # 查看用户信息
echo 123456 | passwd --stdin hacluster  # 给用户设置密码

四、集群配置

对集群进行认证配置
pcs cluster auth node7 node8
创建集群
pcs cluster setup --name web_cluster node7 node8
启动并加入自启动
pcs cluster start --all
pcs cluster enable --all查看节点是否启动
corosync-cfgtool -s
查看集群的信息和当前的状态
corosync-cmapctl | grep members
pcs status检查配置文件
crm_verify -L -V
此处会出现三个报错。原因:stonith没有禁用,在pacemaker中为了保证数据安全,默认开启stonith,但由于此处没有配置相关命令,所以需要禁用。
pcs property set stonith-enabled=false补充:介绍一些查看集群状态的命令
pcs status resources 显示集群资源状态
pcs status nodes  节点状态
pcs status groups  已配置资源组和资源
pcs status pcsd  已配置节点和pcsd状态

五、集群资源的配置

添加vip:帮助文件,pcs resource help
pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.134.200 cidr_netmask=32 op monitor interval=30s
查看可以配置的资源文件
pcs resource providers
查看可配置的http资源
pcs resource list | grep httpd
添加httpd资源到集群
pcs resource create WEB systemd:httpd
此时查看集群状态可以看到许多VIP与WEB不在同一节点上,即调整使其处于同一节点上,来方便使用。
pcs constraint colocation add WEB with VIP  # 这样配置后,利用VIP访问会重新变为正常情况。这是排列约束,主要是绑定资源到同一个节点上。
配置先启动VIP再启动WEB
pcs constraint order VIP then WEB
清除集群的错误日志:pcs resource cleanup摧毁集群:pcs cluster destroy --all

 六、配置drbd

​
1、导入elrepo源rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm2、安装扩展源wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo3、安装软件包、yum install -y drbd90-utils kmod-drbd904、启动drbd的内核模块modprobe drbd
echo drbd > /etc/modules-load.d/drbd.conf
lsmod | grep drbd  # 显示已经载入系统的模块 ,做检查使用5、修改全局配置文件(两台机器都执行)vim /etc/drbd.d/global_common.conf global {usage-count no; # 版本控制
}
common {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 {protocol C;  # 指定使用协议C,在common中配置也可以}
}6、修改资源文件(两台机器都执行)vim /etc/drbd.d/nfs.resresource nfs {disk /dev/sdb;device /dev/drbd0;meta-disk internal;on node1 {address 192.168.134.170:8822;}on node3 {address 192.168.134.172:8822;}
}7、首次启用资源(1)创建元数据(两台都要配)drbdadm create-md nfs
内容如下:
initializing activity log
initializing bitmap (640 KB) to all zero
Writing meta data...
New drbd meta data block successfully created.(2)启用资源(两台都要配)drbdadm up nfs(3)启动初始化全量同步(在主节点上启动)drbdadm primary --force nfs  # 启动全量同步drbdadm status  # 可以查看同步状态(一段时间后状态才会变化)nfs role:Primarydisk:UpToDatenode1 role:Secondaryreplication:SyncSource peer-disk:Inconsistent done:3.58nfs role:Primarydisk:UpToDatenode1 role:Secondarypeer-disk:UpToDate8、测试drbd是否成功启动
在主节点上mkdir /data
ls /dev/drbd
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
mount /dev/drbd0 /data  # 将磁盘挂载到data目录下
cp /etc/hos* /data/  #  将文件copy入data目录下
umount /data  # 卸载data目录
drbdadm secondary nfs  # 资源降级在备节点上mkdir /data  # 创建data目录
ls /dev/drbd
drbdadm primary nfs  # 资源升级
drbdadm status  # 查看资源状态
nfs role:Primarydisk:UpToDatenode3 role:Secondarypeer-disk:UpToDatemount /dev/drbd0 /data  # 将磁盘重新挂入data目录
[root@node1 ~]# ls /data  # 查看data目录下内容,观察是否同步成功,出现以下情况即同步成功
host.conf  hostname  hosts  hosts.allow  hosts.deny9、启动服务
systemctl start drbd
systemctl enable drbd
​

八、配置nfs资源

 
pcs resource create NfsShare ocf:heartbeat:nfsserver nfs_ip=192.168.134.100  # 设置VIP
resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.134.100 cidr_netmask=32  # 创建NfsShare资源
pcs constraint colocation add NfsShare with ClusterIP  # 绑定到同一个节点上
pcs constraint order ClusterIP then NfsShare  # 设置启动顺序,先VIP,再资源创建DRBD的设备集群
pcs cluster cib drbd_cfg  # 生成drbd_cfg文件
pcs -f drbd_cfg resource create NfsData ocf:linbit:drbd drbd_resourconf=/etc/drbd.conf" # 创建nfsdata资源
pcs -f drbd_cfg resource master NfsDataClone NfsData master-max=1 master-node-max=1 clone max=2 clone-node-max=2 notify=true  # 将其推送到实时cib来实现一次提交更改
pcs cluster cib-push drbd_cfg --config创建文件系统集群(自动在主节点挂载共享设备) ==>节点要在VIP所在的设备,不然会出问题pcs cluster cib fs_cfgpcs -f fs_cfg resource create NfsFs ocf:heartbeat:Filesystem device="/dev/drbd0" directory="/data" fstype="xfs" pcs -f fs_cfg constraint colocation add NfsFs with NfsDataClone INFINITY with-rsc-role=Masterpcs -f fs_cfg constraint order promote NfsDataClone then start NfsFspcs -f fs_cfg constraint colocation add NfsShare with NfsFs INFINITY  # 让NFs服务与共享目录在同一个服务器上pcs -f fs_cfg constraint order NfsFs then NfsShare  # 设置启动顺序pcs cluster cib-push fs_cfg --config # 提交配置

九、测试

正常配置结果

此时已经自动挂载 

模拟异常情况

pcs cluster standby node7

此时,挂载位置切换,主从切换,vip自动漂移,达到实验目标。 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用logstash/filebeat/插件,将graylog日志传输到kafka中

1.graylog配置输出 在System-outputs,选择GELF Output,填写如下内容,其它选项默认 在要输出的Stream中,选择Manage Outputs 选择GELF Output,右边选择刚才创建好的test。 2.安装logstash,作为中间临时…

ROS机器人启动move base时代价地图概率性无法加载的原因及解决方法

最近,使用ROS机器人,在启动move_base 节点时,概率性会出现全局和局部代价地图不加载的问题,此时,发布目标点也无法启动路径规划。而且该问题有时候出现概率很低,比如启动10次,会有1次发送该情况…

进行 200 瓦太阳能 (PV) 模块设计以测量太阳能光伏阵列的电压、电流和功率、综合负荷频率和电压控制系统的方法研究(Simulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

构建可远程访问的企业内部论坛

文章目录 前言1.cpolar、PHPStudy2.Discuz3.打开PHPStudy,安装网页论坛所需软件4.进行网页运行环境的构建5.运行Discuz网页程序6.使用cpolar建立穿透内网的数据隧道,发布到公网7.对云端保留的空白数据隧道进行配置8.Discuz论坛搭建完毕 前言 企业在发展…

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x

毫无疑问,日志记录是任何应用程序最重要的方面之一。 当事情出错时(而且确实会出错),我们需要知道发生了什么。 为了实现这一目标,我们可以设置 Filebeat 从我们的 golang 应用程序收集日志,然后将它们发送…

matlab RANSAC拟合多项式曲线

目录 一、功能概述1、算法概述2、主要函数3、参考文献二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。爬虫网站自重,把自己当个人。爬些不完整的误导别人有意思吗???? 一、功能概述 1、算法概述 使用RANSAC对点进行多项式拟合。

​《乡村振兴战略下传统村落文化旅游设计 》在2023年畅销榜排名465位

​《乡村振兴战略下传统村落文化旅游设计 》在2023年畅销榜排名465位

原型设计必备,10个简单好用的界面工具推荐

在数字产品和应用设计过程中,使用简单实用的界面原型设计工具至关重要。它可以将设计理念快速转换为交互原型,便于团队成员之间的沟通和协作。对设计新人来说,选择一个上手快速、功能强大的界面原型设计工具尤其关键。本文将推荐10款常用的界面原型设计工具,帮助初学者找到适合…

Vue2集成Echarts实现可视化图表

一、依赖配置 1、引入echarts相关依赖 也可以卸载原有的,重新安装 卸载:npm uninstall echarts --save 安装:npm install echarts4.8.0 --save 引入水球图形依赖 npm install echarts-liquidfill2.0.2 --save 水球图可参考文档&#xff1…

【先进PID控制算法(ADRC,TD,ESO)加入永磁同步电机发电控制仿真模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

全面解析 Axios 请求库的基本使用方法

Axios 是一个流行的基于 Promise 的 HTTP 请求库,用于在浏览器和 Node.js 中进行 HTTP 请求。它提供了简单易用的 API,可以发送各种类型的请求(如 GET、POST、PUT、DELETE等),并处理响应数据,Axios 在前端工…

lvs集群与nat模式

一,什么是集群: 集群,群集,Cluster,由多台主机构成,但是对外只表现为一个整体,只提供一个访问入口(域名与ip地址),相当于一台大型计算机。 二,集…

算法通关村第4关【白银】| 栈的经典算法问题

1.括号匹配问题 思路:将左括号压入栈中,遍历字符串,当遇到右括号就出栈,判断是否是匹配的一对,不是就返回false(因为按照顺序所以当遇到右括号出栈一定要是匹配的)。使用Map来简化ifelse clas…

Compose - 修饰符 Modifier

一、概念 四大使用场景: 修改外观(尺寸、样式、布局、行为)。添加额外信息(如无障碍标签)。添加交互功能(点击、滚动、拖拽、缩放)。处理用户输入。 1.1 为组合函数添加 Modifier 参数 任何一…

kafka的位移

文章目录 概要消费位移__consumer_offsets主题位移提交 概要 本文主要总结kafka的位移是如何管理的,在broker端如何通过命令行查看到位移信息,并从代码层面总结了位移的提交方式。 消费位移 对于 Kafka 中的分区而言,它的每条消息都有唯一…

LVS-DR的RS进行ARP抑制的原因和LVS持久连接配置

一.RS的ARP抑制 1.为什么要抑制 2.如何抑制 (1)修改/etc/sysctl.conf文件,增加以下内容 (2)命令行临时设置 二.LVS持久连接 1.客户端持久连接 2.端口持久连接 3.防火墙标记持久连接 一.RS的ARP抑制 1.为什么要…

C++--红黑树

1.什么是红黑树 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因…

解决c/c++ Error: redefinition of ‘xxx’ 的问题

错误信息 两个类/文件同时引用定义ReplyInfo的头文件,会造成头文件中定义重复定义 如两个类/文件重复引用massage文件报错 message.h:36:16: error: redefinition of struct MSG_SERVOCTRL message.h:40:2: error: conflicting types for servoctrl解决 一般是目…

计算机组成与设计 Patterson Hennessy 笔记(一)MIPS 指令集

计算机的语言:汇编指令集 也就是指令集。本书主要介绍 MIPS 指令集。 汇编指令 算数运算: add a,b,c # abc sub a,b,c # ab-cMIPS 汇编的注释是 # 号。 由于MIPS中寄存器大小32位,是基本访问单位,因此也被称为一个字 word。M…

YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2