核心知识-------Linux红帽企业七集群的搭建历程-

Linux红帽企业七集群的搭建历程

实验环境

这里我们用四台虚拟机:

server1		192.168.43.71		master
server2   	192.168.43.72		chunk
server3 	192.168.43.73		chunk
server4		192.168.43.74		作为master的备用节点
首先搭建好MFS,这里我们用server1和4做高可用节点,server2和3做数据存储:

server1和4:
yum install moosefs-master-3.0.113-1.rhsystemd.x86_64.rpm -y

配置启动脚本:
vim /usr/lib/systemd/system/moosefs-master.service
#####   ExecStart=/usr/sbin/mfsmaster start -a
加上-a参数避免异常退出后服务启动不了
systemctl daemon-reload 			刷新

server2和3:
yum install moosefs-chunkserver-3.0.113-1.rhsystemd.x86_64.rpm -y

第一步:在四台主机上配置yum源(高可用数据库和存储数据库)
在这里插入图片描述
第二步:安装集群软件

server1和server4上安装集群软件:

yum install pacemaker corosync pcs -y
pacemaker 主软件
corosync   同步复制和心跳检测
pcs 命令行

安装完成后会在系统中生成hacluster用户:
[root@server1 ~]# id hacluster
uid=189(hacluster) gid=189(haclient) groups=189(haclient)

第三步:在server1 和 4 主机之间做免密登录

[root@server1 ~]# ssh-keygen 
[root@server1 ~]# ssh-copy-id server1
[root@server1 ~]# ssh-copy-id server4

第四步:配置集群

server1和4[root@server1 ~]# systemctl start pcsd.service
[root@server1 ~]# systemctl enable pcsd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/pcsd.service to /usr/lib/systemd/system/pcsd.service.
[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.


集群主机之间做认证:(当前我们的集群主机是server1和4)

[root@server1 ~]# pcs cluster auth server1 server4
Username: hacluster
Password: 
server4: Authorized
server1: Authorized

在这里插入图片描述

第五步:配置集群服务

[root@server1 ~]# pcs cluster setup  --name mycluster server1 server4
[root@server1 ~]# pcs cluster start --all       #开启所有集群

在这里插入图片描述
在这里插入图片描述

配置完成之后它会自动的帮我们开启两个服务

在这里插入图片描述
在这里插入图片描述
第六步:设置集群开机自启

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第七步:配置vip

[root@server1 ~]# pcs resource list              	## 列出资源   
...
[root@server1 ~]# pcs resource standards 			##上面列出的资源有这四种类型
lsb
ocf
service
systemd

在这里插入图片描述
因为我们的集群中有多台主机,创建vip,方便我们客户在访问的时候有统一的入口。

## 添加vip ,ocf类型,
[root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.43.100 cidr_netmask=32 op monitor interval=30s
[root@server1 ~]# pcs resource show             			## 列出资源
 vip	(ocf::heartbeat:IPaddr2):	Started server1
[root@server1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a5:b1:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.71/24 brd 192.168.43.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.43.100/32 brd 192.168.43.255 scope global eth0       ## vip就已经添加上了
       valid_lft forever preferred_lft forever
    inet6 2409:8a70:fdcd:1940:20c:29ff:fea5:b17f/64 scope global mngtmpaddr dynamic 
       valid_lft 258754sec preferred_lft 172354sec
    inet6 fe80::20c:29ff:fea5:b17f/64 scope link 
       valid_lft forever preferred_lft forever

[root@server1 ~]# crm_mon       #在控制台查看

在这里插入图片描述
在这里插入图片描述

测试vip的漂移:

在server1中:


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

在server4中:

[root@server4 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:6c:72:0c brd ff:ff:ff:ff:ff:ff
    inet 192.168.43.74/24 brd 192.168.43.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.43.100/32 brd 192.168.43.255 scope global eth0      ## 实现了VIP的漂移
       valid_lft forever preferred_lft forever
    inet6 2409:8a70:fdcd:1940:20c:29ff:fe6c:720c/64 scope global mngtmpaddr dynamic 
       valid_lft 259170sec preferred_lft 172770sec
    inet6 fe80::20c:29ff:fe6c:720c/64 scope link 
       valid_lft forever preferred_lft forever

在这里插入图片描述
在server1中:

[root@server1 ~]# pcs cluster start server1
server1: Starting Cluster (corosync)...
server1: Starting Cluster (pacemaker)...
[root@server1 ~]# crm_mon    # 在控制台查看

在这里插入图片描述

配置apache

在server1和4上安装apache:

yum install httpd -y

echo server1 > /var/www//html/index.html       配置两个默认发布页
echo server4 > /var/www//html/index.html

创建apache资源:

[root@server1 ~]# pcs resource create apache systemd:httpd op monitor interval=1min 
## 控制启动方式为systemd的方式
[root@server1 ~]# pcs resource show
 vip	(ocf::heartbeat:IPaddr2):	Started server4
 apache	(systemd:httpd):	Started server1
[root@server1 ~]# systemctl status httpd
● httpd.service - Cluster Controlled httpd
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
  Drop-In: /run/systemd/system/httpd.service.d
           └─50-pacemaker.conf
   Active: active (running) since Sat 2020-05-23 13:23:00 CST; 38s ago   #apache服务就自动开启
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 26925 (httpd)

在这里插入图片描述
我们不难发现是集群控制开启了httpd!!!!!!!!!!!!!!!!

但是此时我们发现一个问题:
在这里插入图片描述
创建资源组,将两个资源放在一个组里面:

[root@server1 ~]# pcs resource group add apache_group vip apache

在这里插入图片描述
在这里插入图片描述

添加共享磁盘,创建mfs资源

在server3上添加一块磁盘,用作共享
/dev/sda

在这里插入图片描述
安装服务软件

前提:server1和server4为客户端,安装服务,共享server3的磁盘,所以这两台主机上配置解析
在这里插入图片描述

[root@server3 ~]# yum install targetcli.noarch -y

配置一下:
[root@server3 ~]# targetcli 

/> backstores/block create my_disk1 /dev/sdb
Created block storage object my_disk1 using /dev/sdb.

/> iscsi/ create iqn.2020-05.com.example:server3              ## 创建iqn
Created target iqn.2020-05.com.example:server3.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.

/> iscsi/iqn.2020-05.com.example:server3/tpg1/luns create /backstores/block/my_disk1 
Created LUN 0.
/> iscsi/iqn.2020-05.com.example:server3/tpg1/acls create iqn.2020-05.com.example:client
Created Node ACL for iqn.2020-05.com.example:client         #允许这个名称的访问
Created mapped LUN 0.

在这里插入图片描述
在这里插入图片描述
3260端口已经打开

在server3创建了一块共享磁盘,这时候server1和server4充当客户端去使用它

在server1中:

[root@server1 ~]# yum install iscsi-* -y
[root@server1 ~]# vim /etc/iscsi/initiatorname.iscsi     
InitiatorName=iqn.2020-05.com.example:client       # 改为上面设定的名称

[root@server1 ~]# systemctl restart iscsid
[root@server1 ~]# iscsiadm -m discovery -t st -p 192.168.43.73       发现磁盘
192.168.43.73:3260,1 iqn.2020-05.com.example:server3
[root@server1 ~]# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2020-05.com.example:server3, portal: 192.168.43.73,3260] (multiple)
Login to [iface: default, target: iqn.2020-05.com.example:server3, portal: 192.168.43.73,3260] successful.                                                        登陆成功
      说明获取到了这个设备,我们先进行分区
[root@server1 ~]# fdisk -l

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1. 先分一个区,然后格式化
mkfs.xfs /dev/sdb1

2. 然后我们给这个设备中存入数据:

[root@server1 ~]# mkfs.xfs /dev/sda1      
meta-data=/dev/sda1              isize=512    agcount=4, agsize=655104 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2620416, 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
[root@server1 ~]# mount /dev/sda1 /mnt/        #挂载设备
[root@server1 ~]# cp -p /var/lib/mfs/ * /mnt/  #存入数据
[root@server1 ~]# chown mfs.mfs /mnt/          #更改权限属于mfs用户
[root@server1 ~]# ls /mnt
changelog.1.mfs  changelog.5.mfs  changelog.8.mfs  metadata.mfs.back.1
changelog.2.mfs  changelog.6.mfs  metadata.crc     metadata.mfs.empty
changelog.4.mfs  changelog.7.mfs  metadata.mfs     stats.mfs
[root@server1 ~]# umount /mnt/
[root@server1 ~]# mount /dev/sda1 /var/lib/mfs/          #挂载到mfs工作目录下
[root@server1 ~]# systemctl start moosefs-master         #mfs正常开启,说明配置正确   
[root@server1 ~]# systemctl stop moosefs-master.service
[root@server1 ~]# umount /var/lib/mfs                    #然后卸载掉

在这里插入图片描述
在server4中:

[root@server4 ~]# yum install -y iscsi-*
[root@server4 ~]# vim /etc/iscsi/initiatorname.iscsi
[root@server4 ~]# iscsiadm -m discovery -t st -p 192.168.43.73
192.168.43.73:3260,1 iqn.2020-05.com.example:server3
[root@server4 ~]# iscsiadm -m node -l
Logging in to [iface: default, target: iqn.2020-05.com.example:server3, portal: 192.168.43.73,3260] (multiple)
Login to [iface: default, target: iqn.2020-05.com.example:server3, portal: 192.168.43.73,3260] successful.
[root@server4 ~]# mount /dev/sda1 /var/lib/mfs/
[root@server4 ~]# systemctl start moosefs-master
[root@server4 ~]# systemctl stop moosefs-master
[root@server4 ~]# umount /var/lib/mfs/

测试正常启动后关闭并卸载掉,这些都是由集群来完成的

在这里插入图片描述
接下来我们创建资源:

[root@server1 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sda1 directory=/var/lib/mfs fstype=xfs op monitor interval=30s
## 名称为mfsdata, 文件系统类型 ,设备是/dev/sdb1 挂载点为 /var/lib/mfs
[root@server1 ~]# pcs resource show
 Resource Group: apache_group
     vip	(ocf::heartbeat:IPaddr2):	Started server4
     apache	(systemd:httpd):	Started server4
 mfsdata	(ocf::heartbeat:Filesystem):	Started server1

在这里插入图片描述
我们发现,自动挂载上去了!!!!!!!

设置自启动;
[root@server1 ~]# pcs resource create mfsd systemd:moosefs-master op monitor interval=1min
[root@server1 ~]# pcs resource show
 Resource Group: apache_group
     vip	(ocf::heartbeat:IPaddr2):	Started server4
     apache	(systemd:httpd):	Started server4
 mfsdata	(ocf::heartbeat:Filesystem):	Started server1
 mfsd	(systemd:moosefs-master):	Started server1
[root@server1 ~]# systemctl status moosefs-master.service 
● moosefs-master.service - Cluster Controlled moosefs-master
   Loaded: loaded (/usr/lib/systemd/system/moosefs-master.service; disabled; vendor preset: disabled)
  Drop-In: /run/systemd/system/moosefs-master.service.d
           └─50-pacemaker.conf
   Active: active (running) since Sat 2020-05-23 15:38:16 CST; 38s ago
  Process: 34660 ExecStart=/usr/sbin/mfsmaster start -a (code=exited, status=0/SUCCESS)
 Main PID: 34662 (mfsmaster)
   CGroup: /system.slice/moosefs-master.service
           ├─34662 /usr/sbin/mfsmaster start -a
           └─34663 mfsmaster (data writer) t -a

服务就自动启动了

我们再次创建资源组,把vip 和 mfsdata 和mfsd 放到一个资源组中

[root@server1 ~]# pcs resource delete apache
Attempting to stop: apache... Stopped                    #apache的资源删掉,我们刚才只是进行一个测试
[root@server1 ~]# pcs resource group add mfsgroup vip mfsdata mfsd      #创建组
[root@server1 ~]# pcs resource show					#等及秒钟再次查看,三个资源就都放到server4里面去了
 Resource Group: mfsgroup
     vip	(ocf::heartbeat:IPaddr2):	Started server4
     mfsdata	(ocf::heartbeat:Filesystem):	Started server4
     mfsd	(systemd:moosefs-master):	Started server4
[root@server1 ~]# 

server4中查看:

在这里插入图片描述
在这里插入图片描述
接下来我们测试集群的高可用,我们关闭server4,并且在server1中监控

在server1中:

[root@server1 ~]# crm_mon      监控

在这里插入图片描述
在server4中:

[root@server4 ~]# pcs cluster stop server4      关闭server4的集群
server4: Stopping Cluster (pacemaker)...
server4: Stopping Cluster (corosync)...
[root@server4 ~]# 

这时候发现切换为server1了,server4已经下线了

在这里插入图片描述
在server1上查看服务和vip和挂载:

在这里插入图片描述
server4呢?

在这里插入图片描述
我们发现,全部切换过来了,而且server4中的全部关闭了。

集群中加入fence

开启server4的集群

[root@server4 ~]# pcs cluster start server4
server4: Starting Cluster (corosync)...
server4: Starting Cluster (pacemaker)...

虽然开启了server4,但是此时的资源都在server1上,我们先安装fence。fence控制的server1和server4,fence可以控制主机的开关,在主机异常崩溃后会自动重启主机

[root@server4 ~]# yum install -y fence-virt
[root@server4 ~]# mkdir /etc/cluster       建立控制目录

[root@server1 ~]# yum install -y fence-virt
[root@server1 ~]# mkdir /etc/cluster

下面我们用server5来充当客户端

安装:
[root@server5 ~]# yum install -y fence-virtd.x86_64 fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64

安装后进行配置:

[root@server5 ~]# fence_virtd -c
Module search path [/usr/lib64/fence-virt]:
Listener module [multicast]:
Multicast IP Address [225.0.0.12]: 
Multicast IP Port [1229]: 
Interface [virbr0]: br0           ## 其它设定都选用默认,只用更改接口:   
Key File [/etc/cluster/fence_xvm.key]: 
Backend module [libvirt]: 
Replace /etc/fence_virt.conf with the above [y/N]? y


[root@server5 ~]# mkdir /etc/cluster/                 建立目录
[root@server5 ~]# cd /etc/cluster/
[root@server5 cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 		# 生成key文件
1+0 records in
1+0 records out
128 bytes (128 B) copied, 0.000221106 s, 579 kB/s
[root@server5 cluster]# ls
fence_xvm.key

## 发送key文件给server1和4
[root@server5 cluster]# scp fence_xvm.key root@192.168.43.71:/etc/cluster/
root@192.168.43.71's password: 
fence_xvm.key  
[root@server5 cluster]# scp fence_xvm.key root@192.168.43.74:/etc/cluster/            
root@192.168.43.74's password: 
fence_xvm.key             

开启服务:
[root@server5 cluster]# systemctl start fence_virtd.service 
[root@server5 cluster]# netstat -ntlup |grep 1229
udp        0      0 0.0.0.0:1229            0.0.0.0:*                           11612/fence_virtd 
## 1229端口打开

在server1上添加资源:

[root@server1 ~]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:node1;server4:node4" op monitor interval=1min	  # 主机映射,前面是主机名,:后面是虚拟机名
[root@server1 ~]# pcs property set stonith-enabled=true                       开启stonith设备
[root@server1 ~]# crm_verify -L -V          检测
[root@server1 ~]# pcs status 				查看

 Resource Group: mfsgroup
     vip	(ocf::heartbeat:IPaddr2):	Started server1
     mfsdata	(ocf::heartbeat:Filesystem):	Started server1
     mfsd	(systemd:moosefs-master):	Started server1			#	资源都在server1上
 vmfence	(stonith:fence_xvm):	Started server4             #  fence开启在server4上


现在挂掉server1的集群

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

资源切换到了server4上,fence页再server4上

我们在开启server1:

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

fence切换到了server1上,说明fence总是不跟资源在一台主机上。

我们现在使server4异常崩溃,看fence是否可以使server4重启:

[root@server4 ~]# echo c > /proc/sysrq/trigger

在这里插入图片描述

资源全部切换到了server1上

在这里插入图片描述
server4已经重启了。
当server4重启后:fence又跑到了server4上.

这就是fence的工作原理,当主机的内核崩溃后,界面卡住不动,fence就会主动重启它,让它释放出资源,防止了集群中的资源争抢.

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读