利用corosync、pacemaker、pcs、nfs 和 nginx 快速搭建高可用集群,本文vmware虚拟机操作系统centos7。
虚拟机节点基本信息:
主机名 | ip |
pcsnas | 192.168.146.149 |
pcsnode01 | 192.168.146.150 |
pcsnode02 | 192.168.146.151 |
pcsnode03 | 192.168.146.148 |
vip配置:
vip | 192.168.146.150 |
一.Corosync和pacemaker的了解:
Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。也就是说,corosync是Messaging Layer集群信息层软件,需要pacemaker资源管理器,才能构成一个完整的高可用集群。它也是运行于心跳层的开源软件。(是集群框架引擎程序)
Pacemaker也就是Cluster Resource Manager(简称CRM),是一个集群资源管理器。它利用群集基础构建(corosync或heartbeat)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务的最大可用性。
Pacemaker和corosync,前者用于资源的转移,后者用于心跳的检测。结合起来使用,实现对高可用架构的自动管理。心跳检测使用来检测服务器是否还在提供服务,若出现服务器异常,就认为它挂掉了,此时pacemaker将会对资源进行转移。
二.原理:
Pacemaker是提供高可用服务,其与corosync一起使用可以检测心跳。
————————————————
版权声明:本文为CSDN博主「Pika Yxy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46074899/article/details/107838372220.
2.pcsnode01-03节点安装软件
yum install corosync pacemaker pcs nginx -y
3.配置pcsnode01-03节点nginx的配置文件:
[root@pcsnode01 ~]# cat /etc/nginx/nginx.conf
user root;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
# 这里指定的是监听所有IP
listen *:80 default_server;
server_name _;
# 指定的路径
root /var/www/web;
}
}
注意:不要启动 nginx,因为pcs会调动启动nginx,如果启动会导致集群无法挂上。
4.关闭全部节点防火墙
systemctl stop firewalld
开机不启动防火墙:
systemctl disable firewalld
5.全部节点关闭selinux:
vi /etc/selinux/config
SELINUX=enforcing改为disabled
6.全部节点配置主机名和hosts:
vi /etc/hosts
192.168.146.149 pcsnode01
192.168.146.150 pcsnode02
192.168.146.151 pcsnode03
192.168.146.148 pcsnas
7.pcsnode01-03节点设置hacluster
#安装软件包的时候会自动创建一个hacluster账户,这个用户用于群集间通信的身份验证,必须在节点上设置密码以启用此账户。
echo 'hacluster' | passwd --stdin hacluster
8.配置pcsnas的nfs
1.配置NFS文件共享
注:此步骤在其中一台主机完成即可。
首先创建一个文件用于共享使用。
mkdir /var/nfs
2.然后编辑配置文件:
[root@pcsnas ~]#vi /etc/exports
/var/nfs *(rw,sync,no_root_squash,no_subtree_check)
3.#启动服务
systemctl start nfs-server
systemctl enable nfs-server
9.利用pcs配置pcsnode01-03节点的集群:
1.在任意一个节点上验证所有的节点 使用前面设置的hacluster账户 输入之前设置的密码
[root@pcsnode01 ~]# pcs cluster auth pcsnode01 pcsnode02 pcsnode03
Username: hacluster
Password:
pcsnode01: Authorized
pcsnode02: Authorized
pcsnode03:Authorized
2.利用pcs setup 自动创建命名为cluster群集
[root@pcsnode01 ~]#pcs cluster setup --name cluster1 pcsnode01 pcsnode02 pcsnode03
3.由于没有 stonith 设备,需要设置禁用stonith设备。
pcs property set stonith-enabled=false
4.然后启动所有节点
pcs cluster start --all
5.创建 VIP 的资源
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.146.250 cidr_netmask=24
6.创建nfs的资源:
pcs resource create web_file ocf:heartbeat:Filesystem device=192.168.146.148:/var/nfs directory=/var/www/web
7.创建 nginx 的资源:
pcs resource create web ocf:heartbeat:nginx op monitor interval=30s
创建资源关系
# 因为这些资源都需要在同一台服务器上运行,所以需要配置同一个组中。
pcs resource group add web_cluster vip web_file web
# 同时这里需要配置优先级,以保证nginx不会启动出错。
pcs constraint location vip prefers pcsnode01=50 pcsnode02=100 pcsnode03=150
pcs constraint location web_file prefers pcsnode01=50 pcsnode02=100 pcsnode03=150
pcs constraint location web prefers pcsnode01=50 pcsnode02=100 pcsnode03=150
8.配置好状态:
1.检查集群状态资源启动在03节点上:
[root@pcsnode03 ~]# pcs status
Cluster name: cluster1
Stack: corosync
Current DC: pcsnode02 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum
Last updated: Sun Mar 21 22:13:22 2021
Last change: Sun Mar 21 20:50:45 2021 by root via cibadmin on pcsnode02
3 nodes configured
3 resource instances configured
Online: [ pcsnode01 pcsnode02 pcsnode03 ]
Full list of resources:
Resource Group: web_cluster
vip (ocf::heartbeat:IPaddr2): Started pcsnode03
web_file (ocf::heartbeat:Filesystem): Started pcsnode03
web (ocf::heartbeat:nginx): Started pcsnode03
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
2.检查03节点的浮动vip:
[root@pcsnode03 ~]# ip addr
....
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 00:0c:29:9c:f4:f5 brd ff:ff:ff:ff:ff:ff
inet 192.168.146.151/24 brd 192.168.146.255 scope global noprefixroute dynamic ens33
valid_lft 1082sec preferred_lft 1082sec
inet 192.168.146.250/24 brd 192.168.146.255 scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::a5da:6027:4d97:2d06/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3.查看挂载的nfs:
[root@pcsnode03 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
....
192.168.146.148:/var/nfs 50G 2.3G 48G 5% /var/www/web
9.简答的测试:
1.首先测试一下 nginx 能否正常执行:
编写一个简单的测试文件:
vi /var/nfs/index.html
<h1>hello,world!!</h1>
使用浏览器访问vip查看网页是否正常 http://192.168.146.250/显示:
hello,world!!
2.查询 web 服务在那一主机,关闭那一台主机,看资源会不会转移。