企业 rhel7集群

环境设置

server1和server2作为可以互换的master
server3和server4作为Chunkserver

在server2上安装moosefs-master,并且更改启动脚本,加-a参数,防止异常退出再开启

配置集群

配置yum源

yum源的地址就在磁盘挂载里面的addons

[kiosk@foundation80 rhel7.6]$ ls
addons  EULA              GPL     isolinux  media.repo  repodata                 RPM-GPG-KEY-redhat-release
EFI     extra_files.json  images  LiveOS    Packages    RPM-GPG-KEY-redhat-beta  TRANS.TBL
[kiosk@foundation80 rhel7.6]$ ls addons/
HighAvailability  ResilientStorage

将这两个路径加到yum配置里

[rhel7.6]
name=rhel7.6
baseurl=http://172.25.254.250/rhel7.6
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.254.250/rhel7.6/addons/HighAvailability
gpgcheck=0

[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.254.250/rhel7.6/addons/ResilientStorage
gpgcheck=0

保存退出,可以yum repolist就是成功了,然后给其他几台主机也都配置yum源

配置集群软件

在server1和server2上安装集群所需的软件

yum install -y pacemaker corosync pcs

#安装完之后会生成一个用户
id hacluster
uid=189(hacluster) gid=189(haclient) groups=189(haclient)

配置ssh免密

[root@server1 ~]# ssh-keygen

#对自己和server2都进行加密
[root@server1 ~]# ssh-copy-id server1	
[root@server1 ~]# ssh-copy-id server2
配置集群

在server1上

[root@server1 ~]# systemctl start pcsd
[root@server1 ~]# systemctl enable pcsd

#给hacluster用户设立密码
[root@server1 ~]# passwd hacluster
Changing password for user hacluster.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

在server2上进行同样的操作

然后进行主机认证

[root@server1 ~]# pcs cluster auth server1 server2
Username: hacluster	#认证使用的用户就是hacluster
Password: 	#密码是刚才设置的密码
server1: Authorized
server2: Authorized
建立自定义集群
[root@server1 ~]# pcs cluster setup --name mycluster server1 server2	#指定server1和server2建立集群名字是mycluster
[root@server1 ~]# pcs cluster start --all	#在所有节点上开启集群
[root@server1 ~]# pcs cluster enable --all	#设置开机自启
[root@server1 ~]# pcs status	#查看集群的状态
Cluster name: mycluster	#指定的集群名称
WARNINGS:
No stonith devices and stonith-enabled is not false
Stack: corosync
Current DC: server1 (version 1.1.19-8.el7-c3c624ea3d) - partition with quorum
Last updated: Wed May 27 00:02:37 2020
Last change: Tue May 26 23:58:40 2020 by hacluster via crmd on server1
2 nodes configured	#节点数量
0 resources configured	#配置的资源数量,暂时没有
Online: [ server1 server2 ]	#server1和server2是在线的
No resources
Daemon Status:	#集群开启时以下几个服务必须都是开启的
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

#也可以使用下面的方法查看
[root@server1 ~]# pcs status corosync
Membership information
----------------------
    Nodeid      Votes Name
         1          1 server1 (local)
         2          1 server2

查看状态的出现的warning是因为当前我们没有设置faces,这个的作用是当主节点出现问题时,有它去裁定如果主节点无法正常运作,就会去释放主节点资源,转移到另一个成为主节点的主机上。取消警告的方法

[root@server1 ~]# pcs property set stonith-enabled=false	#取消开机启动
[root@server1 ~]# pcs property set no-quorum-policy=ignore	#投票策略设为忽视,当投票的主机没反应时忽略它

再去使用pcs stat查看集群状态就没有警告了

配置集群资源

配置集群的vip,使用这个vip对外设置开放的访问地址

[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.254.100 cidr_netmask=32 op monitor interval=30s

[root@server1 ~]# pcs resource show	#查看资源
 vip	(ocf::heartbeat:IPaddr2):	Started server1	#配置的vip在server1上,可以在server1上使用ip a查看是否真的存在

资源配置的情况可以在集群里的其他主机上使用控制台查看到

[root@server2 ~]# crm_mon #控制台
Stack: corosync
Current DC: server1 (version 1.1.19-8.el7-c3c624ea3d) - partition with quorum
Last updated: Thu May 28 16:52:53 2020
Last change: Thu May 28 16:48:06 2020 by root via cibadmin on server1

2 nodes configured
1 resource configured

Online: [ server1 server2 ]

Active resources:

vip     (ocf::heartbeat:IPaddr2):	Started server1

当我们关闭集群里的server1时

[root@server1 ~]# pcs cluster stop server1
server1: Stopping Cluster (pacemaker)...
server1: Stopping Cluster (corosync)...

在server2的控制台里可以看到vip就会切换到server上了
在这里插入图片描述
当server1再次打开时,vip也不会再回到server1上的,保证服务的稳定性
在这里插入图片描述

集群配置服务

配置apache服务

当vip在server1上时,在server1、server2上安装apache,并配置默认发布页

[root@server1 ~]# yum install -y httpd
[root@server1 ~]# echo server1 > /var/www/html/index.html

[root@server2 ~]# yum install -y httpd
[root@server2 ~]# echo server2 > /var/www/html/index.html

在server1上创建apache资源,名称设为apache,执行启动httpd,设置监视器每分钟查看一次信息

[root@server1 ~]# pcs resource create apache systemd:httpd op monitor interval=1min

#创建完资源后集群会自动去开启httpd,在server2上
[root@server1 ~]# pcs resource show
 vip	(ocf::heartbeat:IPaddr2):	Started server1
 apache	(systemd:httpd):	Started server2

但是这里存在问题就是,开启的apache服务和vip主机不在同一台主机上,这里就需要建立资源组,将vip和apache放在一起

[root@server1 ~]# pcs resource group add apache_group vip apache
[root@server1 ~]# pcs resource show	#创建完资源组,就同时都在server1上里
 Resource Group: apache_group
     vip	(ocf::heartbeat:IPaddr2):	Started server1
     apache	(systemd:httpd):	Starting server1

这样配置完后使用在其他客户端上也可以看到访问了

[root@foundation80 ~]# curl 172.25.254.100
server1
配置共享磁盘

使用另一台主机server3,来进行磁盘共享,在server3上添加一块磁盘,这里我添加了一块1Gb的磁盘
在这里插入图片描述
在server3上配置集群的服务端,安装软件

[root@server3 ~]# yum install -y targetcli
[root@server3 ~]# targetcli 
/> backstores/block create my_disk1 /dev/vdb	#/dev/vdb就是我添加的磁盘
/> iscsi/ create iqn.2020-05.com.example:server3
/> iscsi/iqn.2020-05.com.example:server3/tpg1/
/> iscsi/iqn.2020-05.com.example:server3/tpg1/luns create /backstores/block/my_disk1 
/> iscsi/iqn.2020-05.com.example:server3//tpg1/acls create iqn.2020-05.com.example:client

server3这个共享磁盘的服务端配置好,然后去配置server1和server2去使用磁盘的客户端。

[root@server1 ~]# yum install -y iscsi-*	#安装软件

[root@server1 ~]# vim /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.2020-05.com.example:client	#改写为刚在server3上创建的名称

[root@server1 ~]# systemctl start iscsid
[root@server1 ~]# iscsiadm -m discovery -t st -p 172.25.254.3	#命令可以发现这个设备
172.25.254.3:3260,1 iqn.2020-05.com.example:server3
[root@server1 ~]# iscsiadm -m node -l	#登陆设备
[root@server1 ~]# fdisk -l	#然后可以查看到多了一块1Gb的磁盘设备
Disk /dev/sda: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@server1 ~]# fdisk /dev/sda	#因为这块磁盘当前没有分区,进行分区使用,只分一个即可
[root@server1 ~]# mkfs.xfs /dev/sda1	#格式化文件系统

server2上进行同样的配置,server2上就不需要进行后面的磁盘分区和格式化了,因为server1上已经为这块磁盘进行了操作,我们登陆之后看到的就是分好区的磁盘

创建共享资源

首先将sda1挂载到/mnt/,然后将/var/lib/mfs里的数据都复制到挂载点里,并对挂载点进行chown mfs.mfs 的操作,这样我们就将mfs的数据文件放在了共享磁盘里,可以通过它的挂载启动moosefs-master服务

[root@server1 ~]# mount /dev/sda1 /mnt
[root@server1 ~]# cp -p /var/lib/mfs/* /mnt/
[root@server1 ~]# chown mfs.mfs /mnt
[root@server1 ~]# umount /mnt
[root@server1 ~]# mount /dev/sda1 /var/lib/mfs
[root@server1 ~]# systemctl start moosefs-master	#测试服务是否可以通过共享磁盘的资源开启
[root@server1 ~]# systemctl stop moosefs-master	#测试完关闭服务

创建集群资源

[root@server1 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sda1 directory=/var/lib/mfs fstype=xfs op monitor interval=30s
#建立动作时文件系统,通过挂载sda1,文件格式是xfs,监控间隔30s

[root@server1 ~]# pcs resource create mfsd systemd:moosefs-master op monitor interval=30s
#创建开启moosefs-master的资源

[root@server1 ~]# pcs resource delete apache #删除之前的apache资源
[root@server1 ~]# pcs resource group add mfsgroup vip mfsdata mfsd	#将三个资源添加在一个组里,这样就会开启在一个主机上
[root@server1 ~]# pcs resource show
 Resource Group: mfsgroup
     vip	(ocf::heartbeat:IPaddr2):	Started server1
     mfsdata	(ocf::heartbeat:Filesystem):	Started server1
     mfsd	(systemd:moosefs-master):	Started server1
配置fence节点

在server1和server2上安装fence,并创建fence的key目录

[root@server2 ~]# yum install -y fence-virt #因为使用的是虚拟机,所以安装这个包 
[root@server2 ~]# mkdir /etc/cluster

找另一台主机作为fence的主机,这里我使用的是真机操,安装以下3个包

[root@foundation80 ~]# yum install -y fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 fence-virtd.x86_64

配置fence,在fence节点上执行操作

[root@foundation80 ~]# fence_virtd -c
#这里的选择操作都直接回车确认即可
Interface [virbr0]: br0	#除了这个接口选择,使用你自己设置的桥接接口
Replace /etc/fence_virt.conf with the above [y/N]? y	#最后的确认输入y

[root@foundation80 ~]# mkdir /etc/cluster #创建key的目录
[root@foundation80 ~]# cd /etc/cluster 
[root@foundation80 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1	#使用随机数生成key

#将这个key发送给server1和server2
[root@foundation80 cluster]# scp fence_xvm.key server1:/etc/cluster/
[root@foundation80 cluster]# scp fence_xvm.key server2:/etc/cluster/

[root@foundation80 cluster]# systemctl status fence_virtd.service 	#开启服务
[root@foundation80 cluster]# netstat -ntulp | grep fence	#查看开启的udp端口
udp        0      0 0.0.0.0:1229            0.0.0.0:*                           15198/fence_virtd 

配置资源

[root@server1 ~]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:test1;server2:test2" op monitor interval=1min
#server1:test1,server1是主机名,test1是虚拟机名

[root@server1 ~]# pcs property set stonith-enable=true #设置自启
[root@server1 ~]# crm_verify -L -V	#检测是否有错误
测试

使用 pcs resource show 可以看到其他资源都开启在serve1上,只有 fence开启在server2上,关闭server1服务转移到到server2上,但是再开启server1后fence会开启在server1上。
然后使server2异常退出测试fence能否使server2重启

[root@server2 ~]# echo c > /proc/sysrq-trigger 	#使server2内核崩溃,相当于服务器异常

这时server2就会重启,重启后fence会开启在serve2上了。

配置mariadb服务

操作前需要删除之前的集群资源,只留下fence资源

[root@server1 ~]# pcs resource delete vip
Attempting to stop: vip... Stopped
[root@server1 ~]# pcs resource delete mfsdata
Attempting to stop: mfsdata... Stopped
[root@server1 ~]# pcs resource delete mfsd
Attempting to stop: mfsd... Stopped

在server1和server2上安装mariadb-server
清空共享磁盘里的内容
挂载磁盘到/var/lib/mysql,挂载之后再进行一次目录内的清空操作否则mariadb重启时会报错,测试开启没有问题关闭mariadb,取消挂载

[root@server1 ~]# mount /dev/sda1 /var/lib/mysql/
[root@server1 ~]# chown mysql.mysql /var/lib/mysql/
[root@server1 ~]# rm -fr /var/lib/mysql/*
[root@server1 ~]# systemctl start mariadb.service 

创建资源

#vip资源
[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.254.100 cidr_netmask=32 op monitor interval=30s

#挂载目录资源
[root@server1 ~]# pcs resource create mysql_data ocf:heartbeat:Filesystem device=/dev/sda1 directory=/var/lib/mysql fstype=xfs op monitor interval=30s

#服务启动资源
[root@server1 ~]# pcs resource create mariadb systemd:mariadb op monitor interval=1min

#建立资源组,保持资源运行在同一主机上
[root@server1 ~]# pcs resource group add mysql_group vip mysql_data mariadb

测试,当资源都运行在server1上时,异常关闭server1,可以在server2通过crm-mon监控看到服务会转移到server2上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Howei__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值