Linux: CentOS 7下搭建高可用集群
转载: http://linux.cn/article-3963-1.html
本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为192.168.122.169 。
一、安装集群软件
必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件
二、配置防火墙
1、禁止防火墙和selinux
# systemctl disable firewalld# systemctl stop firewalld
修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效
2、设置防火墙规则
# firewall-cmd --permanent --add-service=high-availability# firewall-cmd --add-service=high-availability
三、各节点之间主机名互相解析
分别修改2台主机名分别为node1和node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。
#vi /etc/hostnamenode1 #systemctl restart network.service#hostnamenode1
配置2台主机的主机表,在/etc/hosts中加入
192.168.122.168 node1192.168.122.169 node2
四、各节点之间时间同步
在node1和node2分别进行时间同步,可以使用ntp实现。
[root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1 为时间服务器
五、各节点之间配置ssh的无密码密钥访问。
下面的操作需要在各个节点上操作。
# ssh-keygen -t rsa -P ‘’ #这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名用登录用户名
两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1 192.168.122.169 node2
# ssh node2 ‘date’;date #测试一下是否已经互信
六、通过pacemaker来管理高可用集群
1、创建集群用户
为了有利于各节点之间通信和配置集群,在每个节点上创建一个hacluster的用户,各个节点上的密码必须是同一个。
# passwd hacluster Changing password for user hacluster.New password:Retype new password:passwd: all authentication tokens updated successfully.
2、设置pcsd开机自启动
# systemctl start pcsd.service# systemctl enable pcsd.service
3、集群各节点之间进行认证
# pcs cluster auth node1 node2Username: hacluster Password: node1: Authorized node2: Authorized
4、创建并启动集群
[root@z1 ~]# pcs cluster setup --start --name my_cluster node1 node2 node1: Succeedednode1: Starting Cluster...node2: Succeedednode2: Starting Cluster...
5、设置集群自启动
# pcs cluster enable –all
6、查看集群状态信息
[root@z1 ~]# pcs cluster status
7、设置fence设备
这个可以参考<Red Hat Enterprise Linux 7 High Availability Add-On Reference>
corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默 认配置目前尚不可用,这可以通过如下命令验证:
#crm_verify -L -V
可以通过如下面命令禁用stonith:
#pcs property set stonith-enabled=false(默认是true)
8、配置存储
高可用集群既可以使用本地磁盘来构建纯软件的镜像型集群系统,也可以使用专门的共享磁盘装置来构建大规模的共享磁盘型集群系统,充分满足客户的不同需求。
共享磁盘主要有iscsi或DBRD。本文并没有使用共享磁盘。
9、配置浮点IP
不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择192.168.122.101作为浮动IP,给它取一个好记的名字ClusterIP 并且告诉集群 每30秒检查它一次。
# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.122.170 cidr_netmask=24 op monitor interval=30s# pcs update VIP op monitor interval=15s
10、配置apache服务
在node1和node2上安装httpd ,确认httpd开机被禁用
# systemctl status httpd.service;
配置httpd监控页面(貌似不配置也可以通过systemd监控),分别在node1和node2上执行
# cat > /etc/httpd/conf.d/status.conf << EOFSetHandler server-statusOrder deny,allowDeny from allAllow from localhostEOF
首先我们为Apache创建一个主页。在centos上面默认的Apache docroot是/var/www/html,所以我们在这个目录下面建立一个主页。
node1节点修改如下:
[root@node1 ~]# cat <<-END >/var/www/html/index.html<html><body>Hello node1</body></html> END
node2节点修改如下:
[root@node2 ~]# cat <<-END >/var/www/html/index.html <html><body>Hello node2</body></html> END
下面语句是将httpd作为资源添加到集群中:
#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中,使之作为一个整体在集群中切换。(此配置为可选)
# pcs resource group add MyGroup VIP# pcs resource group add MyGroup WEB
12、配置服务启动顺序
以避免出现资源冲突,语法:(pcs resource group add的时候也可以根据加的顺序依次启动,此配置为可选)
# pcs constraint order [action] then [action]# pcs constraint order start VIP then start WEB
13、指定优先的 Location (此配置为可选)
Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置:当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。同样的,我们给他取一个描述性的名字(prefer-node1),指明我们想在上面跑WEB 这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:
# pcs constraint location WEB prefers node1=50# pcs constraint location WEB prefers node2=45
这里指定分值越大,代表越想在对应的节点上运行。
14、资源粘性(此配置为可选)
一些环境中会要求尽量避免资源在节点之间迁移。迁移资源通常意味着一段时间内无法提供服务,某些复杂的服务,比如Oracle数据库,这个时间可能会很长。
为了达到这个效果,Pacemaker 有一个叫做“资源粘性值”的概念,它能够控制一个服务(资源)有多想呆在它正在运行的节点上。
Pacemaker为了达到最优分布各个资源的目的,默认设置这个值为0。我们可以为每个资源定义不同的粘性值,但一般来说,更改默认粘性值就够了。资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数则会离开,-inf表示负无穷,inf表示正无穷。
# 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
转载于:https://blog.51cto.com/57388/1604674
相关文章:

史上最大规模 DDoS 攻击,每秒 1720 万次 HTTP 请求
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 互联网基础设施公司 Cloudflare 表示,已化解了迄今为止所记录的最大规模的容量耗尽分布式拒绝服务(DDoS)攻击。 近日,互联网基础设施服务提供商 Cloudfl…

如何查看当前Linux的版本
查看linux的版本主要有三种方法:1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:[root3.5.5Biz-46 ~]# lsb_release -a LSB Version: 1.3Distributor ID: RedHatEnterpriseASDescription: Red Hat Enterprise Li…

AIX5.3安装bash shell
一、下载bash shell,地址是:ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/bash/ 二、安装bash shell,rpm -ivh bash-3.2-1.aix5.2.ppc.rpm三、你现在就可以用了,赶紧bash试试!----你可能会有疑问我的系统的是…

经典算法题每日演练——第六题 协同推荐SlopeOne 算法
原文:经典算法题每日演练——第六题 协同推荐SlopeOne 算法相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,“商品推荐”,"猜你喜欢“,在实体店中我们有导购来为我们服务,在网络上 我们需要同样的一种替代物&…

基于 Python 环境搭建 - YOLO 实现吸烟行为监测
作者|李秋键 出品|AI科技大本营(ID:rgznai100) 引言 目标检测是一种与计算机视觉和图像处理有关的计算机技术, 用于检测数字图像和视频中特定类别的语义对象 (例如人、建筑物或汽车等), 其在视频安防,自动驾驶, 交通监控, 无人机场景分析和机器人视觉等领域有广阔的应用前景。近…

Ubuntu 下安装thttpd Web服务器
不知道大家是不是真的需要用appache这么复杂的功能这么强大的web server,其实有很多时候使用webserver也只是一种远程共享访问的方式。这里,Ubuntu repository的提供了一个简单的web server,名为thttpd,即 tiny http daemon. th…

mysql 新增 删除用户和权限分配
1. 新增用户 mysql>insert into mysql.user(Host,User,Password) values("localhost","lionbule",password("hello1234")); mysql>flush privileges; 2. 修改用户密码 mysql>update mysql.user set passwordpassword(new password)…

简历空空,如何编写一个面试时能拿的出手的真实项目?
最近,新一波的秋招全面开启,各大互联网行业像腾讯、百度、美团、哔哩哔哩,都加入到招聘队伍,秋招面试也进入白热化。作为一名求职者,要想在招聘浪潮中抢先一步,锁定大厂Offer,现在就要着手准备起…

mysql通过查看跟踪日志跟踪执行的sql语句
在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日志log功能,通过查看跟踪日志即可。 开启mysql的日志log方法: windows环境下的配置方法: 我使用的版本&#…

用thttpd做Web Server
httpd是busybox中自带的web server,功能弱,不支持认证和CGI。thttpd和boa都支持认证CGI,功能比较全,Boa是一个单任务的小型http服务器,设计的小型系统不要数据库操作,所以可以使用thttpd作为server.1. 编译thttpdccarm…

ii第六单元 文本处理工具
linux中常用的基础命令 diff 命令 patch 命令 grep 命令 Cut 命令 sort 命令 uniq 命令 tr 命令 sed 命1.diff 命令 比较两个文件的不同 用于创建补丁文件 diff -u file file.new >file.path ##生成补丁文件 yum install patch -y ##安装打补丁工具 (1&…

Powershell管理系列(十)邮件联系人及邮件用户的管理
鉴于有些用户不太熟悉邮件联系人、邮件用户的区别,博文首先介绍下用户邮箱、邮件联系人、邮件用户的概念,以下介绍部分博文摘自winos微软中文技术论坛。---------------------------------------------------------------------------------------------…

移植 thttpd Web服务器
从http://www.acme.com/software/thttpd/ 下载thttpd 到/tmp 目录当中,并解压. 编译thttpd [armlocalhost thttpd-2.25b]$ CCarm-linux-gcc ./configure --hostarm-linux [armlocalhost thttpd-2.25b]$ vi Makefile 指定静态链接二进制文件 LDFLAGS -static …

懂外语、会创作,机器高质量学习挑战均在这里实现
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近年来人工智能在不断的发展中,机器不仅已经学会了英语写作,也正在学习其它语言。 德国 Aleph Alpha 已经构建了世界上最强大的 AI 语言模型之一。它不仅能说流利的英语…

JPA 复杂查询 - Querydsl
添加依赖 <!--query dsl --> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>qu…

服务器端开发经验总结 Linux C语言
简介在进行服务器端开发的时候需要考虑一些算法和性能问题,经过了几年的开发,对这方面有了一些经验,现在写下来跟大家分享和讨论。我主要是在Linux下进行C语言的开发,所以后面的实现都是基于Linux操作系统并用C语言来讲解。其它平…

Backbone.js学习笔记 Hello World!
使用Backbone.js 和 MVC 架构创建一个典型的Hello world项目。虽然是“杀鸡用牛刀了”,毕竟是我第一次使用Backbone.js 依赖 jQuery 1.9.1Undersore.js 1.5.0Backbone.js开始 <!doctype html> <html> <head> <meta charset"utf-8"&g…

一文速览机器学习的类别(Python代码)
作者:泳鱼来源:算法进阶机器学习按照学习数据经验的不同,即训练数据的标签信息的差异,可以分为:*监督学习(supervised learning)*非监督学习(unsupervised learning)*半监…

Linux下分割与合并文件的方法
Linux下分割与合并文件的方法 切割合并文件在linux下用split和cat就可以完成。下面举些实例进行说明。1.文件切割文件切割模式分为两种: 文本文件 二进制模式。 1.1文本模式 文本模式只适用于文本文件,用这种模式切割后的每个文件都是可读的。文本模式又…

将网站程序放在tmpfs下
将网站程序放在tmpfs下然后用nginx直接做对外服务呢varnish或者squid都是利用内存和它的连接数来做到加速服务.但是如果是squid->nginx->fastcgi->mysql这样当中很多连接是开销在内部的连接之中而且如果客户端请求php.squid还需要将请求再转发至nginx,然后nginx再转发…

docker 连接容器
1.通过端口映射 sudo docker run -d -P training/webapp python app.py 容器有一个内部网络和IP地址(在使用Docker部分我们使用docker inspect命令显示容器的IP地址) -P 标记创建一个容器,将容器的内部端口随机映射到主机的高端口49000到4990…

新进展!英伟达用 AI 给纪录片配音,情绪语调拿捏得稳稳地
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) AI 已经将合成语音从单调的机器人电话和传统 GPS 导航系统转变为智能手机和智能扬声器中动听的虚拟助手。 虽然日常和Siri、小爱或小度等对话时声音还是很机械,但最新的技术进展显示&#x…

揭开Annotation的面纱
Annotation是Java5、6只后的新特征(中文称之为注解),并且越来越多的得到了应用,比如Spring、Hibernate3、Struts2、iBatis3、JPA、JUnit等等都得到了广泛应用,通过使用注解,代码的灵活性大大提高。这些都是…

使用Nginx的proxy_cache缓存功能取代Squid
[文章作者:张宴 本文版本:v1.2 最后修改:2009.01.12 转载请注明原文链接:http://blog.s135.com/nginx_cache/] Nginx从0.7.48版本开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key,用…

oracle grant 权限
grant connect,resource,dba to user;CONNECT角色: --是授予最终用户的典型权利,最基本的 CREATE SESSION --建立会话 RESOURCE角色: --是授予开发人员的 CREATE CLUSTER --建立聚簇 CREATE …

技术沙龙 | TeaTalk 带你深度探索 SDN 网络技术再创新
越来越多的企业、行业和政府机关顺应企业数字化转型、云服务和国家政策等趋势将业务迁移上云。随着移动云的快速发展,对网络提供差异化的服务能力也提出了很多新的考验。大规模数据中心、虚拟化 SDN 网络技术及超融合软硬一体可编程设备在云网络的应用已成为行业发展…

利用windows 2003实现服务器群集的搭建与架设(一) NLB群集的创建与架设
实验场景:西安凌云系统高科技有限公司利用IIS搭建了一个WEB站点,域名为nlb.angeldevil.com。由于业务的逐渐增加,网站速度也越来越慢,而且经常出现故障,为公司的利益带来了很多的不便;公司决定使用两台WEB站…

nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
一,nginx反向代理配置 #tomcat 显然就是用户访问www.wolfdream.com(需要设置本地localhost,将www.wolfdream.com指向nginx所在IP)的时候(或将www.wolfdream.com直接写在nginx所在的IP地址),将请求转到到后台的tomcat服务器,即127.…

深度强化学习的前景:帮助机器掌控复杂性
作者:数据实战派 来源:数据实战派深度强化学习,即机器通过测试其行为后果来学习的方法,是人工智能最有前途和影响力的领域之一。它将深度神经网络与强化学习结合在一起,可以通过训练实现多个步骤的目标。它是自动驾驶汽…

成绩转换(15)
#include<stdio.h> int main() {int n;char ch;while(scanf("%d",&n)!EOF){if(n>100||n<0) continue;if(n>90) chA;else if(n>80) chB;else if(n>70) chC;else if(n>60) chD;else chE;printf("%c\n",ch);} }转载于:https://ww…