centos7 HA

2023-05-16

本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为192.168.122.169 。

一、安装集群软件

必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件

二、配置防火墙

1、禁止防火墙和selinux


 
 
  1. # systemctl disable firewalld
  2. # systemctl stop firewalld

修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效

2、设置防火墙规则


 
 
  1. # firewall-cmd --permanent --add-service=high-availability
  2. # firewall-cmd --add-service=high-availability

三、各节点之间主机名互相解析

分别修改2台主机名分别为node1和node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。


 
 
  1. #vi /etc/hostname
  2. node1
  3. #systemctl restart network.service
  4. #hostname
  5. node1

配置2台主机的主机表,在/etc/hosts中加入


 
 
  1. 192.168.122.168 node1
  2. 192.168.122.169 node2

四、各节点之间时间同步

在node1和node2分别进行时间同步,可以使用ntp实现。


 
 
  1. [root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1 为时间服务器

五、各节点之间配置ssh的无密码密钥访问。

下面的操作需要在各个节点上操作。


 
 
  1. # ssh-keygen -t rsa -P ‘’ #这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可
  2. # ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名用登录用户名

两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1 192.168.122.169 node2


 
 
  1. # ssh node2 ‘date’;date #测试一下是否已经互信

六、通过pacemaker来管理高可用集群

1、创建集群用户

为了有利于各节点之间通信和配置集群,在每个节点上创建一个hacluster的用户,各个节点上的密码必须是同一个。


 
 
  1. # passwd hacluster
  2. Changing password for user hacluster.
  3. New password:
  4. Retype new password:
  5. passwd: all authentication tokens updated successfully.

2、设置pcsd开机自启动


 
 
  1. # systemctl start pcsd.service
  2. # systemctl enable pcsd.service

3、集群各节点之间进行认证


 
 
  1. # pcs cluster auth node1 node2Username: hacluster Password: node1: Authorized node2: Authorized

4、创建并启动集群


 
 
  1. [root@z1 ~]# pcs cluster setup --start --name my_cluster node1 node2
  2. node1: Succeeded
  3. node1: Starting Cluster...
  4. node2: Succeeded
  5. node2: Starting Cluster...

5、设置集群自启动


 
 
  1. # pcs cluster enable –all

6、查看集群状态信息


 
 
  1. [root@z1 ~]# pcs cluster status

7、设置fence设备

这个可以参考<Red Hat Enterprise Linux 7 High Availability Add-On Reference>

corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默 认配置目前尚不可用,这可以通过如下命令验证:


 
 
  1. #crm_verify -L -V

可以通过如下面命令禁用stonith:


 
 
  1. #pcs property set stonith-enabled=false(默认是true)

8、配置存储

高可用集群既可以使用本地磁盘来构建纯软件的镜像型集群系统,也可以使用专门的共享磁盘装置来构建大规模的共享磁盘型集群系统,充分满足客户的不同需求。

共享磁盘主要有iscsi或DBRD。本文并没有使用共享磁盘。

9、配置浮点IP

不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择192.168.122.101作为浮动IP,给它取一个好记的名字 ClusterIP 并且告诉集群 每30秒检查它一次。


 
 
  1. # pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.122.170 cidr_netmask=24 op monitor interval=30s
  2. # pcs update VIP op monitor interval=15s

10、配置apache服务

在node1和node2上安装httpd ,确认httpd开机被禁用


 
 
  1. # systemctl status httpd.service;

配置httpd监控页面(貌似不配置也可以通过systemd监控),分别在node1和node2上执行


 
 
  1. # cat > /etc/httpd/conf.d/status.conf << EOF
  2. SetHandler server-status
  3. Order deny,allow
  4. Deny from all
  5. Allow from localhost
  6. EOF

首先我们为Apache创建一个主页。在centos上面默认的Apache docroot是/var/www/html,所以我们在这个目录下面建立一个主页。

node1节点修改如下:


 
 
  1. [root@node1 ~]# cat <<-END >/var/www/html/index.html
  2. <html>
  3. <body>Hello node1</body>
  4. </html>
  5. END

node2节点修改如下:


 
 
  1. [root@node2 ~]# cat <<-END >/var/www/html/index.html
  2. <html>
  3. <body>Hello node2</body>
  4. </html>
  5. END

下面语句是将httpd作为资源添加到集群中:


 
 
  1. #pcs resource create WEB apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status"

11、创建group

将VIP和WEB resource捆绑到这个group中,使之作为一个整体在集群中切换。(此配置为可选)


 
 
  1. # pcs resource group add MyGroup VIP
  2. # pcs resource group add MyGroup WEB

12、配置服务启动顺序

以避免出现资源冲突,语法:(pcs resource group add的时候也可以根据加的顺序依次启动,此配置为可选)


 
 
  1. # pcs constraint order [action] then [action]
  2. # pcs constraint order start VIP then start WEB

13、指定优先的 Location (此配置为可选)

Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置:当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。同样的,我们给他取一个描述性的名字(prefer-node1),指明我们想在上面跑WEB 这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:


 
 
  1. # pcs constraint location WEB prefers node1=50
  2. # pcs constraint location WEB prefers node2=45

这里指定分值越大,代表越想在对应的节点上运行。

14、资源粘性(此配置为可选)

一些环境中会要求尽量避免资源在节点之间迁移。迁移资源通常意味着一段时间内无法提供服务,某些复杂的服务,比如Oracle数据库,这个时间可能会很长。

为了达到这个效果,Pacemaker 有一个叫做“资源粘性值”的概念,它能够控制一个服务(资源)有多想呆在它正在运行的节点上。

Pacemaker为了达到最优分布各个资源的目的,默认设置这个值为0。我们可以为每个资源定义不同的粘性值,但一般来说,更改默认粘性值就够了。资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数则会离开,-inf表示负无穷,inf表示正无穷。


 
 
  1. # pcs resource defaults resource-stickiness=100

常用命令汇总:

查看集群状态:#pcs status

查看集群当前配置:#pcs config

开机后集群自启动:#pcs cluster enable –all

启动集群:#pcs cluster start –all

查看集群资源状态:#pcs resource show

验证集群配置情况:#crm_verify -L -V

测试资源配置:#pcs resource debug-start resource

设置节点为备用状态:#pcs cluster standby node1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

centos7 HA 的相关文章

  • centos7最小化安装之后配置网络(ip)

    1 执行命令cd etc sysconfig network scripts 2 找到ifcfg eno16777736类似的文件 3 vi ifcfg eno16777736 4 将ONBOOT no 改为 ONBOOT yes 5 重启
  • 服务器物理机使用ESXI虚拟化并划分虚拟机

    前言 最近因为增加了一台物理机 所以需要对物理机进行虚拟化后划分虚拟机 下面主要来介绍物理机划分虚拟机的操作步骤 物理机虚拟化 1 下载VMware VMvisor Installer 6 0 0 update01 3029758 x86
  • WebSSH2 界面ssh

    工具 Virtual Machines14 1 系统环境 CentOS 7 64位 2个 IP 192 168 163 138 IP 192 168 163 141 概述 在138系统中安装部署WebSSH服务 通过浏览器 http Web
  • KVM热迁移

    KVM热迁移 介绍 KVM热迁移的前提是拥有共享存储 以下通过NFS实现KVM热迁移 迁移过程 将一处于运行状态的KVM虚拟机从节点kvm 01迁移到kvm 02后继续运行 准备 主机准备 hostname IP地址 系统 配置 kvm 0
  • BSC(币安智能链)主网链部署

    文章目录 一 BSC主链镜像生成 二 BSC主链容器生成 2 1 下载BSC主网配置文件 2 2 新建初始化创始区块文件脚本 2 3 本地写入创世状态 2 4 新建BSC链启动脚本 2 5 启动BSC主网链 三 查看BSC服务是否部署成功
  • python3.7在centos下安装pygame

    python编程从入门到实践 一书的第二部分开始 需要安装pygame 我用的是centos7 里面有内置的python2 我自己装了python3 7 pip安装pip3 安装过程网上教程很多 但是一般安装的不完全 需要注意的是安装ssl
  • 配置错误:未满足包要求(sqlite3 > 3.7.4)

    我正在尝试按照以下说明在 Centos 7 上安装 php https www php net manual en install unix nginx php 我的nginx版本 nginx 1 19 0 我从下载了 php 7 4 6
  • 如何在 CentOS 7 中为终端创建键盘快捷键

    刚刚在我的笔记本电脑上安装了 CentOS 7 这个新版本的 CentOS 与旧版本有很大不同 我无法以旧方式为终端创建键盘快捷键 有人知道怎么做吗 Go to Settings gt gt gt keyboard gt gt gt Sho
  • 警告:脚本 pip3.8 安装在 '/usr/local/bin' 中,该路径不在 PATH 上

    跑步时pip3 8我的终端中出现以下警告 WARNING The script pip3 8 is installed in usr local bin which is not on PATH Consider adding this d
  • centos 7 获取最新的 apache 包

    这个问题来自于我对包管理器缺乏了解 我跑yum list并得到httpd 2 4 6 40 el7 centos 4 x86 64 https rpmfind net linux RPM centos updates 7 2 1511 x8
  • 通过 nginx 访问时,php 在 /tmp/systemd-private-nABCDE/tmp 中有自己的 /tmp

    我发现奇怪的行为php and tmp文件夹 Php 在使用时使用另一个文件夹 tmp PHP 5 6 7 nginx php fpm 我以两种方式执行相同的脚本 通过浏览器和通过 shell 但是当通过浏览器启动时 文件不是真实的 tmp
  • Centos 7 Postgres 服务的环境变量

    最近我遇到了使用自定义 PGDATA 路径启动 postgresql 服务的问题 它尝试查找未初始化的默认数据目录 var lib pgsql 9 3 data 因此触发了这些错误 问题似乎是 Centos 7 上的服务启动器删除了所有环境
  • Centos 7 中 mysqld.service 作业失败

    OS Centos 7 Linux 3 10 0 229 el7 x86 64 MySQL mysql57 community release el7 7 noarch rpm 我通过安装MySQL服务器yum 当我跑步时systemctl
  • 大文件上传时出现 Apache 错误 500 (mod_security)

    据我所尝试 通常的解决方案都不适合我 好吧 我的问题是 每次上传 大文件 600 KB 时 我都会收到 500 错误 而较小的图像则可以正常工作 所以 即使使用这个 极端 htaccess 文件 它仍然会发生 是的 htaccess 是活动
  • git-http-backend 与 apache2.4 Centos 7

    我尝试在我的 apache 服务器上设置 Git 服务器 但它不起作用 我得到了以下 git conf SetEnv GIT PROJECT ROOT var www html git project1 SetEnv GIT HTTP EX
  • 是什么导致我的 SDL2 程序中出现杂散像素?

    我发现使用 SDL2 绘制的对象上附加了很多杂散像素 添加额外像素的对象包括线条 填充矩形以及转换为纹理的 TTF 文本 这SDL RenderFillRect https wiki libsdl org SDL RenderFillRec
  • 如何在 CentOS 7.2 上使用 yum 安装 gcc 5.3?

    我使用的是CentOS 7 2 当我使用yum groupinstall Development Tools gcc版本是4 8 5 像这样 我想安装 gcc 5 3 如何解决这个问题yum Update 通常人们想要最新版本的 gcc 并
  • MariaDB 未启动:“插件‘反馈’已禁用。”

    我在 CentOS 7 上安装了 MariaDB 10 2 10 但它停止运行 如果我做 If I do systemctl restart mariadb service I get mariadb service main proces
  • 我的本地 Eclipse 可以在 Docker 容器中安装 Access 库吗?

    我有一个用于 Django 开发的 Docker 映像 通过一些 xauthority 文件机制 我在容器内使用 Eclipse 在大多数情况下 Eclipse 运行良好 但存在一些棘手的问题 这些问题似乎与它在容器内运行的事实有关 毕竟
  • 无法在 Vagrant 上运行的 CentOS 7 上安装 Docker

    使用 Vagrant 文件的全新实例 VAGRANTFILE API VERSION 2 Vagrant configure VAGRANTFILE API VERSION do config config vm box chef cent

随机推荐

  • TCP传输可靠性保证机制之重传机制

    TCP重传机制 tcp重传机制包括超时重传 快速重传 带选择确认的重传 SACK 重复SACK 四种 超时重传 xff1a 超时重传是tcp协议保证数据可靠性的一个重要机制 原理是在发送某一个数据以后开启一个计时器 xff0c 在一定时间内
  • VSCode:终端控制台常用指令

    常用的指令 以下是一些在 Visual Studio Code 终端控制台中常用的指令 xff1a 1 清除终端 xff1a clear 2 列出当前目录中的文件和文件夹 xff1a ls 3 切换到指定目录 xff1a xff1a cd
  • Ubuntu18.04安装ROS时rosdep update报错解决办法

    在安装ros进行rosdep update时经常会报错 xff0c 有时候可以通过换网解决 xff0c 但从我安装那么多次的经验来看 xff0c 仅有一次换手机热点后更新成功了 xff0c 其他都是失败 xff0c 成功率太低 从网上搜到了
  • 【STM32】STM32F103C8T6串口通信,实现3个串口收发数据

    串口通信 xff08 Serial Communications xff09 实现单片机与电脑或者其它外设进行通信 xff0c 通信时只需两根线 xff08 TX xff0c RX xff09 就可以实现数据传输 STM32f103有三个串
  • C语言学习笔记——(2)数组

    数组 1 什么是是数组2 数组的定义2 1数组的表达2 2数组的含义2 3数组的大小 xff1a 3 字符数组4 字符串操作5 二维数组 1 什么是是数组 数组是指有序的元素序列 如果将有限个类型相同的变量的集合命名 xff0c 那么这个名
  • 多线程编程实验

    xff08 一 xff09 查看下列程序并运行 xff0c 掌握如何通过扩展Thread类创建线程 span class token keyword package span span class token namespace case1
  • 实验一:基于Ubuntu系统实现无人机自主飞行

    ps xff1a 为避免出现错误 xff0c 在进行新的一步时 xff0c 需要关闭由于上一步操作打开的终端 xff0c 并开启一个新的终端 例如 xff1a 在开始第5步 安装MAVROS 之前 xff0c 关闭由于第3步 安装ROS 打
  • 5000字学习C语言错误处理的四种方式。

    C错误处理 在C语言中 xff0c 错误处理是一个非常重要的主题 通常情况下 xff0c 程序员需要在代码中处理错误 xff0c 以保证程序能够在出现错误时正确地处理这些情况 C语言中常见的错误类型包括 xff1a 语法错误 逻辑错误 运行
  • yum 源制作

    YUM介绍 YUM主要用于自动升级 安装 移除 rpm 软件包 xff0c 它能自动查找并解决 rpm 包之间的依赖关系 xff0c 要成功的使用 YUM 工具更新系统和软件 xff0c 需要有一个包含各种 rpm 软件包的 reposit
  • MATLAB021b与VS2022混编

    MATLAB2021b与VS2022混编 前言 目前在做一个大创项目 xff0c 其中用到关于Matlab与C的混合编程 xff0c 特此记录 Matlab2021b 如图所示 xff0c 红线划出的是即将使用的 c函数 xff0c 在左侧
  • 香橙派5使用NPU加速yolov5的实时视频推理(一)

    前言 xff1a 寒假里 xff0c 博主完成了树莓派4B搭载yolofastest V2的ncnn加速 xff0c 效果挺不错的 xff0c 但总感觉还是稍微差点意思 xff0c 于是就购买了一块香橙派5 xff0c 想要用RK3588芯
  • 香橙派5使用NPU加速yolov5的实时视频推理(二)

    三 将best onnx转为RKNN格式 这一步就需要我们进入到Ubuntu20 04系统中了 xff0c 我的Ubuntu系统中已经下载好了anaconda xff0c 使用anaconda的好处就是可以方便的安装一些库 xff0c 而且
  • 【STM32学习】——串口通信协议&STM32-USART外设&数据帧/输入数据策略/波特率发生器&串口发送/接受实操

    文章目录 前言一 串口通信1 通信接口2 串口通信 xff08 1 xff09 串口简介 xff08 2 xff09 串口硬件电路 xff08 3 xff09 串口软件部分 二 STM32的USART外设1 USART简介2 图示详解 三
  • 【STM32学习】——USART串口数据包&HEX/文本数据包&收发流程&串口收发HEX/文本数据包实操

    文章目录 前言一 数据包格式 xff08 江科大规定 xff09 1 HEX数据包2 文本数据包3 两者对比 二 数据包收发流程1 HEX数据包接收 xff08 只演示固定包长 xff09 2 文本数据包接收 xff08 只演示可变包长 x
  • buuctf simplerev 中的小头位序

    33条消息 BUUCTF SimpleRev xff08 涉及大小端序存储的问题 xff09 Ireb9z的博客 CSDN博客 buuctfsimplerev https blog csdn net afanzcf article deta
  • 简要分析网络编程——UDP编程

    计算机网络是指两台或更多的计算机组成的网络 xff0c 在同一个网络中 xff0c 任意两台计算机都可以直接通信 xff0c 因为所有计算机都需要遵循同一种网络协议 网络编程中有很多协议 xff0c 如 xff0c TCP协议 UDP协议
  • 数据结构之二叉树 Python实现

    树 树是一种非线性的数据结构 树 xff0c 它是若干结点的集合 xff0c 是由唯一的根和若个棵互不相交的子树组成的 其中 xff0c 每一棵子树又是一棵树 xff0c 也是由唯一的根结点和若干棵互不相交的子树组成的 由此可知 xff0c
  • 《奔跑吧Linux内核(第二版)》第四章笔记

    内核配置 内核配置工具常见的有 xff1a make config make oldconfig make menuconfig 内核配置工具最终会在Linux内核源码的根目录下生成一个隐藏文件 config文件 xff0c 这个文件包含了
  • GDB+QEMU调试Linux内核

    1 使用qemu创建虚拟机 使用qemu创建ARM64架构虚拟机可以参考我的另一篇博客 xff1a Ubuntu18 04使用qemu搭建ARM64架构虚拟机 xff08 二 xff09 2 安装gdb multiarch工具包 span
  • centos7 HA

    本文以两台机器实现双集热备高可用集群 xff0c 主机名node1的IP为192 168 122 168 xff0c 主机名node2的IP为192 168 122 169 一 安装集群软件 必须软件pcs xff0c pacemaker