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

环境准备:

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

web1 192.168.134.176 node7
web2 192.168.134.177 node8

一、准备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 # 提交配置



九、测试

正常配置结果

corosync+pacemaker+nfs配置简单高可用_第1张图片

此时已经自动挂载 

corosync+pacemaker+nfs配置简单高可用_第2张图片

模拟异常情况

pcs cluster standby node7
corosync+pacemaker+nfs配置简单高可用_第3张图片

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

你可能感兴趣的:(linux,服务器,运维)