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.rpm

2、安装扩展源

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

3、安装软件包、

yum install -y drbd90-utils kmod-drbd90

4、启动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.res

resource 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:Primary
  disk:UpToDate
  node1 role:Secondary
    replication:SyncSource peer-disk:Inconsistent done:3.58


nfs role:Primary
  disk:UpToDate
  node1 role:Secondary
    peer-disk:UpToDate


8、测试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:Primary
  disk:UpToDate
  node3 role:Secondary
    peer-disk:UpToDate

mount /dev/drbd0 /data  # 将磁盘重新挂入data目录
[root@node1 ~]# ls /data  # 查看data目录下内容,观察是否同步成功,出现以下情况即同步成功
host.conf  hostname  hosts  hosts.allow  hosts.deny

9、启动服务
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_cfg

 pcs -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=Master

 pcs -f fs_cfg constraint order promote NfsDataClone then start NfsFs

 pcs -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自动漂移,达到实验目标。 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT+ffmpeg】QT+ffmpeg 环境搭建

1.qt下载地址 download.qt.io/archive/ 2. win10sdk 下载 https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ 安装 debug工具路径 qtcreater会自动识别 调试器选择

OpenAI全球招外包大军,手把手训练ChatGPT取代码农 ; 码农:我自己「杀」自己

目录 前言 OpenAI招了一千多名外包人员,训练AI学会像人类一样一步步思考。如果ChatGPT「学成归来」,码农恐怕真的危了? 码农真的危了! 当时OpenAI也说,ChatGPT最合适的定位,应该是编码辅助工具。 用Cha…

【学会动态规划】等差数列划分(22)

目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 动态规划怎么学? 学习一个算法没有捷径,更何况是学习动态规划, 跟我…

easyx图形库基础:2.基本运动+键盘交互

基本运动键盘交互 一.基本运动1.基本运动:1.如何实现动画:2.实现一个小球从左到右从右到左:(往返运动)3.实现一个五角星的移动:4.实现一个五角星自转和圆周运动的集合:(圆周运动&…

Opencv4基于C++基础入门笔记:图像 颜色 事件响应 图形 视频 直方图

效果图◕‿◕:opencv人脸识别效果图(请叫我真爱粉)✌✌✌先看一下效果图勾起你的兴趣! 文章目录: 一:环境配置搭建 二:图像 1.图像读取与显示 main.cpp 运行结果 2.图像色彩空间转换 2.1 换色彩 test.h t…

java八股文面试[java基础]——String StringBuilder StringBuffer

String类型定义: final String 不可以继承 final char [] 不可以修改 String不可变的好处: hash值只需要算一次,当String作为map的key时, 不需要考虑hash改变 天然的线程安全 知识来源: 【基础】String、StringB…

latex 笔记:cs论文需要的排版格式

主要针对英文文献 1 基本环境 连字符 不同长度的"-"表示不同含义。 一个"-"长度的连字符用于词中两个"-"长度的连字符常用于制定范围三个"-"长度的连字符是破折号数学中的负数要用数学环境下的-得到 强调 在正式文章中, 通常不…

探索区块链世界:去中心化应用(DApp)的崭新前景

随着科技的不断发展,区块链技术逐渐引领着数字时代的潮流。在这个充满创新和变革的领域中,去中心化应用(DApp)成为了备受瞩目的焦点。DApp 不仅改变了传统应用程序的范式,还在金融、社交、游戏等多个领域展现出了广阔的…

File Upload

File Upload 文件上传功能是大部分WEB应用的常用功能,网站允许用户自行上传头像、照片、一些服务类网站需要用户上传证明材料的电子档、电商类网站允许用户上传图片展示商品情况等。然而,看似不起眼的文件上传功能如果没有做好安全防护措施,…

【数理知识】向量与基的内积,Matlab 代码验证

序号内容1【数理知识】向量的坐标基表示法,Matlab 代码验证2【数理知识】向量与基的内积,Matlab 代码验证 文章目录 1. 向量与基的内积2. 二维平面向量举例3. 代码验证Ref 1. 向量与基的内积 假设存在一个二维平面内的向量 a ⃗ \vec{a} a &#xff0c…

具身智能:人工智能的下一个浪潮

原创 | 文 BFT机器人 特斯拉 2023 年股东会上,马斯克强调了人形机器人对特斯拉未来的重要性,并预测其将成为公司的主要长期价值来源。他进一步表示:“如果人形机器人和人的比例大致为2比1,那么人们对机器人的需求可能达到100亿乃…

W5100S-EVB-PICO 做UDP Server进行数据回环测试(七)

前言 前面我们用W5100S-EVB-PICO 开发板在TCP Client和TCP Server模式下,分别进行数据回环测试,本章我们将用开发板在UDP Server模式下进行数据回环测试。 UDP是什么?什么是UDP Server?能干什么? UDP (User Dataqram …

爬虫逆向实战(十三)--某课网登录

一、数据接口分析 主页地址:某课网 1、抓包 通过抓包可以发现登录接口是user/login 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现有一个password加密参数,还有一个browser_key这个可以写死不需要关心 请求头…

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用

【Image captioning】ruotianluo/self-critical.pytorch之1—数据集的加载与使用 作者:安静到无声 个人主页 数据加载程序示意图 使用方法 示例代码 #%%from __future__ import absolute_import from __future__ import division from __future__ import print_…

导读-Linux简介

Linux简介 ​ 总所周知,计算机系统包含硬件和软件两部分。硬件部分被称为裸机,主要包括中央处理器(CPU)、内存、外存和各种外部设备。软件部分主要包括系统软件和应用软件两部分。系统软件包括操作系统、汇编语言、编译程序、数据…

AD域控制器将辅域控制器角色提升为主域控制器

背景 域控服务器迁移,已将新机器添加为该域的辅域控制器。 主域控制器:test-dc-01 辅域控制器:test-dc-02 需求将主辅域的角色进行互换,test-dc-01更换为辅域,test-dc-02更换为主域。 操作步骤 方法1 命令行修改AD域…

2023国赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

ubuntu16编译内核源码并替换

文章目录 1.找到和ubuntu内核版本相同的内核源码包2.下载下面三个文件3.相关步骤4.安装编译环境软件参考: 1.找到和ubuntu内核版本相同的内核源码包 4.15.0-112.113 : linux package : Ubuntu (launchpad.net) 2.下载下面三个文件 3.相关步骤 uname -r #查看内核…

python3实现线性规划求解

Background 对于数学规划问题,有很多的实现。MatlabYALMIPCPLEX这个组合应该是比较主流的,尤其是在电力相关系统中占据着比较重要的地位。MATLAB是一个强大的数值计算工具,用于数学建模、算法开发和数据分析。Yalmip是一个MATLAB工具箱&#…

阿里云Alibaba Cloud Linux镜像系统介绍_常见问题解答FAQ

阿里云服务器操作系统Alibaba Cloud Linux镜像怎么样?可以代替CentOS吗?Alibaba Cloud Linux兼容性如何?有人维护吗?漏洞可以修复吗?Alibaba Cloud Linux完全兼容CentOS,并由阿里云官方免费提供长期维护。 …