精华内容
下载资源
问答
  • [root@base2 ~]# yum install -y pacemaker corosync pcs # 这是高可用安装包 [root@base2 ~]# rpm -q pacemaker pacemaker-1.1.15-11.el7.x86_64 [root@base2 ~]# ssh-keygen # 生成密钥,方便连接 [root@base...

    一.MFS概述

     MooseFS是一个分布式存储的框架,其具有如下特性:
    (1)通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦!)。
    (2)可以在线扩容,体系架构可伸缩性极强。(官方的case可以扩到70台了!)
    (3)部署简单。
    (4)高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别,而绝对不会影响读或者写的性能,只会加速!)
    (5)可回收在指定时间内删除的文件(“回收站”提供的是系统级别的服务,不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性!)
    (6)提供netapp,emc,ibm等商业存储的snapshot特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)
    (7)google filesystem的一个c实现。
    (8)提供web gui监控接口。
    

    这里写图片描述

    # 读写原理
    1.MFS的读数据过程
       (1) client当需要一个数据时,首先向master server发起查询请求;
       (2)管理服务器检索自己的数据,获取到数据所在的可用数据服务器位置ip|port|chunkid;
       (3)管理服务器将数据服务器的地址发送给客户端;
       (4)客户端向具体的数据服务器发起数据获取请求;
       (5)数据服务器将数据发送给客户端;
    
    2.MFS的写数据过程
    (1)当客户端有数据写需求时,首先向管理服务器提供文件元数据信息请求存储地址(元数据信息如:文件名|大小|份数等);
    (2)管理服务器根据写文件的元数据信息,到数据服务器创建新的数据块;
    (3)数据服务器返回创建成功的消息;
    (4)管理服务器将数据服务器的地址返回给客户端(chunkIP|port|chunkid);
    (5)客户端向数据服务器写数据;
    (6)数据服务器返回给客户端写成功的消息;
    (7)客户端将此次写完成结束信号和一些信息发送到管理服务器来更新文件的长度和最后修改时间
    

    这里写图片描述
    这里写图片描述

    环境:rhel7.3

    base2172.25.78.12mfsmaster节点
    bzse3172.25.78.13chunkserver
    base4172.25.78.14chunkserver
    base5172.25.78.15高可用
    foundation78172.25.78.254客户端

    9421      # 对外的连接端口
    9420      # 用于chunkserver 连接的端口地址
    9419      #  metalogger 监听的端口地址
    

    这个软件可以记录元数据日志,定期同步master数据日志,防止master挂掉
    MFS元数据日志服务器(moosefs-metalogger-3.0.97-1.rhsysv.x86_64.rpm)
    元数据日志守护进程是在安装master server 时一同安装的,
    最小的要求并不比master 本身大,可以被运行在任何机器上(例如任一台
    chunkserver),但是最好是放置在MooseFS master 的备份机上,备份master
     服务器的变化日志文件,文件类型为changelog_ml.*.mfs。因为主要的master server 一旦失效,
     可能就会将这台metalogger 机器取代而作为master server
    

    二.MFS的安装、部署、配置

    1.安装部署mfs
    • mfsmaster端

    [root@base2 ~]# ls
    moosefs-cgi-3.0.103-1.rhsystemd.x86_64.rpm
    moosefs-cgiserv-3.0.103-1.rhsystemd.x86_64.rpm
    moosefs-cli-3.0.103-1.rhsystemd.x86_64.rpm
    moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
    [root@base2 ~]# yim install -y *.rpm
    [root@base2 ~]# vim /etc/hosts   # 写解析,不然启动不起来
    172.25.78.12 base2 mfsmaster
    [root@base2 ~]# systemctl start moosefs-master
    [root@base2 ~]# netstat -antlp 
    

    在这里插入图片描述

    [root@base2 ~]# ll /var/lib/mfs/     # 数据目录
    

    在这里插入图片描述

    [root@base2 ~]# ll /etc/mfs/       # 主配置文件目录
    

    在这里插入图片描述

    [root@base2 ~]# systemctl start moosefs-cgiserv    # 打开web图形处理工具
    
    • 配置chunkserver

    [root@base3 ~]# yum install -y moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm
    [root@base3 ~]# vim /etc/hosts       # 从节点也必须写解析
    172.25.78.12 base2 mfsmaster
    [root@base3 ~]# cd /etc/mfs/
    [root@base3 mfs]# vim mfshdd.cfg   # 定义base3中存储数据的挂载点
    /mnt/chunk1
    [root@base3 mfs]# mkdir /mnt/chunk1   # 创建挂载点
    [root@base3 mfs]# chown mfs.mfs /mnt/chunk1   # 改该挂载目录的所有人和所有组,这样才可以在目录中进行读写操作
    [root@base3 mfs]# systemctl start moosefs-chunkserver    # 开启服务
    

    [root@base4 ~]# yum install -y moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm
    [root@base4 ~]# vim /etc/hosts   
    172.25.78.12 base2 mfsmaster
    [root@base4 ~]# cd /etc/mfs/
    [root@base4 mfs]# vim mfshdd.cfg
    [root@base4 mfs]# mkdir /mnt/chunk2
    [root@base4 mfs]# chown mfs.mfs /mnt/chunk2
    [root@base4 mfs]# systemctl start moosefs-chunkserver
    
    • 浏览器访问,从节点添加成功
      在这里插入图片描述

    2.客户端测试分布式存储

    • 配置客户端

    [root@foundation78 3.0.103]# rpm -ivh moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm   # 安装客户端软件
    [root@foundation78 mfs]# cd /etc/mfs/
    [root@foundation78 mfs]# vim mfsmount.cfg  # 确定挂载数据的目录
    /mnt/mfs
    [root@foundation78 mfs]# mkdir /mnt/mfs      # 创建挂载数据的目录
    [root@foundation78 mfs]# vim /etc/hosts      # 编辑解析文件 
    172.25.78.12  base2  mfsmaster
    [root@foundation78 mfs]# cd /mnt/mfs
    [root@foundation78 mfs]# mfsmount         #  自动读取后端文件进行挂载
    

    在这里插入图片描述

    [root@foundation78 mnt]# df
    

    在这里插入图片描述

    [root@foundation78 mfs]# mkdir dir1
    [root@foundation78 mfs]# mkdir dir2
    [root@foundation78 mfs]# ls
    dir1  dir2
    [root@foundation78 mfs]# mfsgetgoal dir1   # 默认的文件副本是2份
    dir1: 2
    [root@foundation78 mfs]# mfsgetgoal dir2
    dir2: 2
    [root@foundation78 mfs]# mfssetgoal -r 1 dir1  # 修改dir1的文件备份份数为1
    

    在这里插入图片描述

    [root@foundation78 mfs]# cd dir1/
    [root@foundation78 dir1]# cp /etc/passwd  .
    [root@foundation78 dir1]# mfsfileinfo passwd    # 查看文件具体信息,数据存储在chunk1上,因为我们设置了数据只能存储在一台服务器上
    

    在这里插入图片描述

    [root@foundation78 dir1]# cd ../dir2/
    [root@foundation78 dir2]# cp /etc/fstab .
    [root@foundation78 dir2]# mfsfileinfo fstab   # 实际上数据存储默认为两份
    

    在这里插入图片描述

    3.对于大文件,实行离散存储

    [root@foundation78 dir2]# cd ../dir1/
    [root@foundation78 dir1]# dd if=/dev/zero of=file1 bs=1M count=100	
    

    在这里插入图片描述

    [root@foundation78 dir1]# mfsfileinfo file1
    

    在这里插入图片描述

    4.如果我们在客户端不小心删除了元数据,那么怎么恢复呢?

    [root@foundation78 dir1]#  mfsgettrashtime   . # 查看当前文件的缓存时间,在 86400秒内的文件都可以恢复
    .: 86400
    [root@foundation78 mfs]# mkdir /mnt/mfsmeda
    [root@foundation78 mfs]# mfsmount -m /mnt/mfsmeda     # 挂载
    [root@foundation78 mfs]# mount      # 查看挂载记录
    

    在这里插入图片描述

    [root@foundation78 mfs]# cd /mnt/mfsmeda/
    [root@foundation78 mfsmeda]# ls
    sustained  trash
    [root@foundation78 trash]# ls
    

    在这里插入图片描述

    [root@foundation78 trash]# find -name *passwd*       # 查找丢失文件
    ./004/00000004|dir1|passwd
    [root@foundation78 trash]# cd 004
    [root@foundation78 004]# ls
    00000004|dir1|passwd  undel
    [root@foundation78 004]# mv 00000004\|dir1\|passwd undel/      # 恢复文件,注意特殊字符要进行转译
    [root@foundation78 004]# cd /mnt/mfs/dir1/
    [root@foundation78 dir1]# ls     # 文件成功恢复
    file1  passwd
    

    5.master有时候会处于非正常服务状态,导致客户端无法获取数据

    (1)正常关闭master

    当服务端正常关闭时,客户端就会卡顿

    [root@base2 ~]# systemctl stop moosefs-master
    

    [root@foundation78 dir1]# df
    

    在这里插入图片描述
    当服务端重新开启时,客户端就会恢复正常

    [root@base2 ~]# systemctl start moosefs-master
    
    (2)非正常关闭master
    [root@base2 ~]# ps ax
    

    在这里插入图片描述

    [root@base2 ~]# kill -9 11986    # 模拟非正常关闭
    [root@base2 ~]# systemctl start moosefs-master
    

    在这里插入图片描述

    [root@base2 ~]# /usr/sbin/mfsmaster -a
    [root@base2 ~]# ps ax    # 查看进程,成功开启
    

    在这里插入图片描述
    但是每次master非正常关闭之后,我们每次执行这个命令就有点麻烦,所以我们直接写在配置文件里,这样不管是否正常关闭,都可以保证服务成功开启

    [root@base2 ~]# vim /usr/lib/systemd/system/moosefs-master.service 
    [Unit]
    Description=MooseFS Master server
    Wants=network-online.target
    After=network.target network-online.target
    
    [Service]
    Type=forking
    ExecStart=/usr/sbin/mfsmaster -a
    ExecStop=/usr/sbin/mfsmaster stop
    ExecReload=/usr/sbin/mfsmaster reload
    PIDFile=/var/lib/mfs/.mfsmaster.lock
    TimeoutStopSec=1800
    TimeoutStartSec=1800
    Restart=no
    
    [Install]
    WantedBy=multi-user.target
    

    在这里插入图片描述

    [root@base2 ~]# systemctl daemon-reload
    [root@base2 ~]# ps ax
    

    在这里插入图片描述

    [root@base2 ~]# kill -9 12060
    [root@base2 ~]# systemctl start moosefs-master  # 此时开启就不会报错了
    [root@base2 ~]# systemctl status moosefs-master
    

    在这里插入图片描述

    三.mfsmaser的高可用

    • 配置master,先获取高可用安装包

    [root@base2 ~]# vim /etc/yum.repos.d/yum.repo   # 配置高可用yum源
    [rhel7.3]
    name=rhel7.3
    baseurl=http://172.25.78.254/rhel7.3
    gpgcheck=0
    [HighAvailability]
    name=HighAvailability
    baseurl=http://172.25.78.254/rhel7.3/addons/HighAvailability
    gpgcheck=0
    [ResilientStorage]
    name=ResilientStorage
    baseurl=http://172.25.78.254/rhel7.3/addons/ResilientStorage
    gpgcheck=0
    

    在这里插入图片描述

    [root@base2 ~]# yum repolist
    [root@base2 ~]# yum install -y pacemaker corosync pcs  # 这是高可用安装包
    [root@base2 ~]# rpm -q pacemaker
    pacemaker-1.1.15-11.el7.x86_64
    [root@base2 ~]# ssh-keygen   # 生成密钥,方便连接
    

    在这里插入图片描述

    [root@base2 ~]# ssh-copy-id base5      # 设置免密
    [root@base2 ~]# systemctl start pcsd
    [root@base2 ~]# systemctl enable pcsd
    [root@base2 ~]# passwd hacluster
    Changing password for user hacluster.   # 设置密码,主备必须相同
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    
    • 配置bankup-mfsmaster

    [root@base5 ~]# ls
     moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
    [root@base5 ~]# rpm -ivh moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
    [root@base5 ~]# vim /usr/lib/systemd/system/moosefs-master.service 
    [Unit]
    Description=MooseFS Master server
    Wants=network-online.target
    After=network.target network-online.target
    
    [Service]
    Type=forking
    ExecStart=/usr/sbin/mfsmaster -a
    ExecStop=/usr/sbin/mfsmaster stop
    ExecReload=/usr/sbin/mfsmaster reload
    PIDFile=/var/lib/mfs/.mfsmaster.lock
    TimeoutStopSec=1800
    TimeoutStartSec=1800
    Restart=no
    
    [Install]
    WantedBy=multi-user.target
    

    在这里插入图片描述

    [root@base5 ~]# systemctl daemon-reload
    [root@base5 ~]# vim /etc/yum.repos.d/yum.repo   # 配置高可用yum源
    [rhel7.3]
    name=rhel7.3
    baseurl=http://172.25.78.254/rhel7.3
    gpgcheck=0
    [HighAvailability]
    name=HighAvailability
    baseurl=http://172.25.78.254/rhel7.3/addons/HighAvailability
    gpgcheck=0
    [ResilientStorage]
    name=ResilientStorage
    baseurl=http://172.25.78.254/rhel7.3/addons/ResilientStorage
    gpgcheck=0
    

    在这里插入图片描述

    [root@base5 ~]# yum repolist
    

    在这里插入图片描述

    [root@base5 ~]# yum install -y pacemaker corosync
    [root@base5 ~]# yum install -y pcs
    [root@base5 ~]# systemctl start pcsd
    [root@base5 ~]# systemctl enable pcsd
    [root@base5 ~]# passwd hacluster	
    New password: 
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    
    • 开始创建集群

    [root@base2 ~]# pcs cluster auth base2 base5   # 创建集群
    [root@base2 ~]# pcs cluster setup --name mycluster base2 base5    # 给集群起名称
    

    在这里插入图片描述

    [root@base2 ~]# pcs status nodes  # 查看集群状态,有报错,是因为有部分服务没有开启
    Error: error running crm_mon, is pacemaker running?
    [root@base2 ~]# pcs cluster start --all   # 开启所有的服务
    [root@base2 ~]# pcs status nodes   # 再次查看节点信息
    

    在这里插入图片描述

    [root@base2 ~]# corosync-cfgtool -s     # 验证corosync是否正常
    

    在这里插入图片描述

    [root@base2 ~]# pcs status corosync   # 查看corosync状态
    

    在这里插入图片描述

    • 创建主备集群

    [root@base2 ~]# crm_verify -L -V      # 检查配置,有报错
    [root@base2 ~]# pcs property set stonith-enabled=false   # 更改属性,禁用STONITH
    [root@base2 ~]# crm_verify -L -V    # 再次检查,没有报错
    [root@base2 ~]# pcs status   # 查看状态
    

    在这里插入图片描述

    [root@base2 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.78.100 cidr_netmask=32 op monitor interval=30s     # 创建vip
    [root@base2 ~]# ip a   # 查看创建成功
    

    在这里插入图片描述

    [root@base5 ~]# crm_mon       # 查看监控
    

    在这里插入图片描述

    • 执行故障转移

    [root@base2 ~]# pcs cluster stop base2   # 关闭master,查看监控vip会自动漂移
    

    在这里插入图片描述

    [root@base2 ~]# pcs cluster start base2  # 当master重新开启时,不会抢占资源
    

    [root@base5 ~]# pcs cluster stop base5   # 关闭backup-master,vip又自动漂移到master上
    

    在这里插入图片描述
    以上实验我们实现了mfs的高可用,当master出故障时,backup-master会立刻接替master的工作,保证客户端可以正常得到服务

    [root@base2 ~]# pcs resource standards       # 获取可用资源标准列表
    

    在这里插入图片描述

    [root@base2 ~]# pcs resource providers     # 查看资源提供者的列表
    

    在这里插入图片描述

    [root@base2 ~]# pcs resource agents ocf:heartbeat  # 查看特定的可用资源代理
    

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

    2.存储共享(我们用vip的方式来实现共享)

    • 先恢复环境,写好解析

    [root@foundation78 ~]# umount /mnt/mfs
    [root@foundation78 ~]# umount /mnt/mfsmeta
    [root@foundation78 ~]# vim /etc/hosts
    172.25.78.100 mfsmaster
    

    [root@base2 ~]# systemctl stop moosefs-master
    [root@base2 ~]# vim /etc/hosts
    172.25.78.100 mfsmaster
    

    [root@base3 ~]# systemctl stop moosefs-chunkserver
    [root@base3 ~]# vim /etc/hosts
    172.25.78.100 mfsmaster
    

    [root@base4 ~]# systemctl stop moosefs-chunkserver
    [root@base4 ~]# vim /etc/hosts
    172.25.78.100 mfsmaster
    
    • 給chunkserver(base3)添加一块磁盘
      在这里插入图片描述
      在这里插入图片描述

    [root@base3 ~]# fdisk -l
    

    在这里插入图片描述

    [root@base3 ~]# yum install -y targetcli   # 安装远程块存储设备
    [root@base3 ~]# systemctl start target  # 开启服务
    [root@base3 ~]# targetcli    # 配置iSCSI服务
    /> cd backstores/block 
    /backstores/block> create my_disk1 /dev/vdb
    /backstores/block> cd ..
    /backstores> cd ..
    /> cd iscsi 
    /iscsi> create iqn.2019-04.com.example:base3
    /iscsi> cd iqn.2019-04.com.example:base3
    /iscsi/iqn.20...example:base3> cd tpg1/luns 
    /iscsi/iqn.20...se3/tpg1/luns> create /backstores/block/my_disk1 
    /iscsi/iqn.20...se3/tpg1/luns> cd ..
    /iscsi/iqn.20...le:base3/tpg1> cd acls 
    /iscsi/iqn.20...se3/tpg1/acls> create iqn.2019-04.com.example:client
    /iscsi/iqn.20...se3/tpg1/acls> cd ..
    /iscsi/iqn.20...le:base3/tpg1> cd ..
    /iscsi/iqn.20...example:base3> cd ..
    /iscsi> cd ..
    /> ls
    

    在这里插入图片描述

    /> exit
    
    • 在master上安装iscsi客户端软件

    [root@base2 ~]# yum install -y iscsi-*
    [root@base2 ~]# vim /etc/iscsi/initiatorname.iscsi 
    InitiatorName=iqn.2019-04.com.example:client
    [root@base2 ~]# iscsiadm -m discovery -t st -p 172.25.78.13  # 发现远程设备
    172.25.78.13:3260,1 iqn.2019-04.com.example:base3
    [root@base2 ~]# iscsiadm -m node -l    # 登录
    

    在这里插入图片描述

    [root@base2 ~]# fdisk -l     # 可以查看到远程共享出来的磁盘
    

    在这里插入图片描述

    [root@base2 ~]# fdisk /dev/sda   # 使用共享磁盘,建立分区
    Command (m for help): n
    Select (default p): p
    Partition number (1-4, default 1): 
    First sector (2048-16777215, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): 
    Using default value 16777215
    Command (m for help): p
    

    在这里插入图片描述

    Command (m for help): wq
    [root@base2 ~]# mkfs.xfs /dev/sda1      # 格式化分区
    [root@base2 ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1  # 破坏分区
    [root@base2 ~]# fdisk -l /dev/sda   # 查看不到分区
    

    在这里插入图片描述
    因为截取速度太快,导致分区被自动删除,不过不用担心,因为我们把/dev/sda下的所有空间都分给了/dev/sda1,所以我们只需要重新建立分区即可

    [root@base2 ~]# mount /dev/sda1 /media/    # 查看到分区不存在
    mount: special device /dev/sda1 does not exist
    [root@base2 ~]# fdisk /dev/sda  # 重新创建分区
    Command (m for help): n
    Select (default p): p
    Partition number (1-4, default 1): 
    First sector (2048-16777215, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215): 
    Using default value 16777215
    Command (m for help): wq
    [root@base2 ~]# mount /dev/sda1 /mnt
    [root@base2 ~]# df
    

    在这里插入图片描述

    [root@base2 ~]# cd /var/lib/mfs/     # 这是mfs的数据目录
    [root@base2 mfs]# ls
    changelog.10.mfs  changelog.13.mfs  changelog.4.mfs  metadata.crc  metadata.mfs.back.1  stats.mfs
    changelog.12.mfs  changelog.3.mfs   changelog.6.mfs  metadata.mfs  metadata.mfs.empty
    [root@base2 mfs]# cp -p * /mnt   # 带权限拷贝/var/lib/mfs的所有数据文件到/dev/sdb1上
    [root@base2 mfs]# cd /mnt
    [root@base2 mnt]# ll
    

    在这里插入图片描述

    [root@base2 mnt]# chown mfs.mfs /mnt  # 当目录属于mfs用户和组时,才能正常使用 
    [root@base2 mnt]# ll -d /mnt
    drwxr-xr-x 2 mfs mfs 285 Apr  6 13:30 /mnt
    [root@base2 mnt]# cd
    [root@base2 ~]# umount /mnt
    [root@base2 ~]# mount /dev/sda1 /var/lib/mfs/   # 使用分区,测试是否可以使用共享磁盘
    [root@base2 ~]# df
    

    在这里插入图片描述

    [root@base2 ~]# systemctl start moosefs-master  # 服务开启成功,就说明数据文件拷贝成功,共享磁盘可以正常使用
    [root@base2 ~]# ps ax
    

    在这里插入图片描述

    [root@base2 ~]# systemctl stop moosefs-master
    
    • 配置backup-master,是之也可以使用共享磁盘

    [root@base5 ~]# vim /etc/hosts
    [root@base5 ~]# yum install -y iscsi-*
    [root@base5 ~]# vim /etc/iscsi/initiatorname.iscsi 
    InitiatorName=iqn.2019-04.com.example:client
    [root@base5 ~]# iscsiadm -m discovery -t st -p 172.25.78.13
    172.25.78.13:3260,1 iqn.2019-04.com.example:base3
    [root@base5 ~]# iscsiadm -m node -l
    

    在这里插入图片描述

    [root@base5 ~]# fdisk -l
    

    在这里插入图片描述

    [root@base5 ~]# mount /dev/sda1 /var/lib/mfs/   # 此处使用的磁盘和master是同一块,因为master已经做过配置了,所以我们只需要使用即可,不用再次配置
    [root@base5 ~]# systemctl start moosefs-master  # 测试磁盘是否可以正常使用
    [root@base5 ~]# systemctl stop moosefs-master
    [root@base5 ~]# pcs cluster start base5    
    
    • 在master上创建mfs文件系统

    [root@base2 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sda1 directory=/var/lib/mfs fstype=xfs op monitor interval=30s
    [root@base2 ~]# pcs resource show
    

    在这里插入图片描述

    在这里插入图片描述

    [root@base2 ~]# pcs resource create mfsd systemd:moosefs-master op monitor interval=1min  # 创建mfsd系统
    

    在这里插入图片描述

    [root@base2 ~]# pcs resource group add mfsgroup vip mfsdata mfsd  # 把vip,mfsdata,mfsd 集中在一个组中
    [root@base2 ~]# pcs cluster stop base2  # 当关闭master之后,master上的服务就会迁移到backup-master上
    

    在这里插入图片描述

    3.fence解决脑裂问题

    (1)先在客户端测试高可用
    • 打开chunkserver

    [root@base3 ~]# systemctl start moosefs-chunkserver 
    [root@base3 ~]# ping mfsmaster  # 保证解析可以通信
    

    [root@base4 ~]# systemctl start moosefs-chunkserver
    [root@base4 ~]# ping mfsmaster
    
    • 查看vip的位置

    [root@base5 ~]# ip a
    

    在这里插入图片描述

    • 开启master

    [root@base2 ~]# pcs cluster start base2
    
    • 在客户端进行分布式存储测试

    [root@foundation78 ~]# mfsmount   # 挂载,挂载失败
    

    在这里插入图片描述

    [root@foundation78 ~]# cd /mnt/mfs
    [root@foundation78 mfs]# ls         # 因为此目录下不是空的
    dir1  dir2
    [root@foundation78 mfs]# rm -fr *   # 删除此目录下的所有文件
    [root@foundation78 mfs]# ls
    [root@foundation78 mfs]# cd
    [root@foundation78 ~]# mfsmount     # 可以成功挂载
    mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
    [root@foundation78 ~]# cd /mnt/mfs/dir1
    [root@foundation78 dir1]# dd if=/dev/zero of=file2 bs=1M count=2000   # 我们上传一份大文件
    

    在这里插入图片描述

    [root@base2 ~]# pcs cluster stop base5     # 在客户端上传大文件的同时,关闭正在提供服务的服务端 
    

    [root@foundation78 dir1]# mfsfileinfo file2  # 我们查看到文件上传成功,并没有受到影响
    

    在这里插入图片描述

    通过以上实验我们发现,当master挂掉之后,backup-master会立刻接替master的工作,保证客户端可以进行正常访问,但是,当master重新运行时,我们不能保证master是否会抢回自己的工作,从而导致master和backup-master同时修改同一份数据文件从而发生脑裂,此时fence就派上用场了

    • 安装fence服务

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

    [root@base2 ~]# yum install -y fence-virt
    [root@base2 ~]# mkdir /etc/cluster
    
    • 生成一份fence密钥文件,传给服务端

    [root@foundation78 ~]# yum install -y fence-virtd
    [root@foundation78 ~]# yum install fence-virtd-libvirt -y 
    [root@foundation78 ~]# yum install fence-virtd-multicast -y
    [root@foundation78 ~]# fence_virtd -c   
    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]: 
    

    在这里插入图片描述

    [root@foundation78 ~]# mkdir /etc/cluster  # 这是存放密钥的文件,需要自己手动建立
    [root@foundation78 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 
    [root@foundation78 ~]# systemctl start fence_virtd
    [root@foundation78 ~]# cd /etc/cluster/
    [root@foundation78 cluster]# ls
    fence_xvm.key
    [root@foundation78 cluster]# scp fence_xvm.key root@172.25.78.12:/etc/cluster/
    [root@foundation78 cluster]# scp fence_xvm.key root@172.25.78.15:/etc/cluster/
    [root@foundation78 cluster]# netstat -anulp | grep 1229  
    

    在这里插入图片描述

    [root@foundation78 cluster]# virsh list  # 查看主机域名
    

    在这里插入图片描述

    • 在master查看监控crm_mon
      在这里插入图片描述

    [root@base2 ~]# cd /etc/cluster 
    [root@base2 cluster]# pcs stonith create vmfence fence_xvm pcmk_host_map="base2:base2;base5:base5" op monitor interval=1min
    [root@base2 cluster]# pcs property set stonith-enabled=true
    [root@base2 cluster]# crm_verify -L -V
    [root@base2 cluster]# fence_xvm -H base5      # 使base5断电重启
    

    在这里插入图片描述

    [root@base2 cluster]# crm_mon  # 查看监控,base5上的服务迁移到master上
    

    在这里插入图片描述

    [root@base2 cluster]# echo c > /proc/sysrq-trigger  # 模拟master端内核崩溃
    
    • 查看监控,base5会立刻接管master的所有服务
      在这里插入图片描述
      在这里插入图片描述
    • 查看监控发现,master重启成功之后,并不会抢占资源,服务依旧在backup-master端正常运行,说明fence生效
      在这里插入图片描述
    展开全文
  • 结合PHP三.HAProxy的读写分离四.pacemaker+haproxy双机热备fence结合pacemaker防止文件系统脑裂 介绍 在前面和本片文章都有介绍:lvs、haproxy、nginx。 基于软件的负载均衡:软件有lvs、haproxy、nginx。 lvs是工作...

    介绍

    在前面和本片文章都有介绍:lvs、haproxy、nginx。
    基于软件的负载均衡:软件有lvs、haproxy、nginx。
    lvs是工作在四层、仅负责分发请求作用的负载均衡,负载均衡性能最强。Lvs实现负载均衡可结合keepalived进行后端健康检测。
    nginx工作在7层,针对http应用做一些策略配置,可以检测后端端口故障,最大的优点是并发量高,且支持二次开发,商用价值高。
    haproxy是工作在4/7层,提供高可用性和负载均衡。支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

    一.haproxy负载均衡

    实验环境:
    我们需要做的准备工作为:(ip自己随意使用自己)
    server1 172.25.1.1 作为haproxy服务器及集群管理服务器
    server2 172.25.1.2 负载均衡(后端服务器)
    server3 172.25.1.3 负载均衡(后端服务器)
    server4 172.25.1.4 集群管理服务器

    安装配置haproxy

    [root@server1 ~]# yum install haproxy -y
    
    

    配置vim /etc/haproxy/haproxy.cfg
    只需要修改其中的一部分,自行参考:有的需要注释掉!

    
    stats uri /status
            
    frontend  main *:80
    #    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    #    acl url_static       path_end       -i .jpg .gif .png .css .js
    #
    #    use_backend static          if url_static
        default_backend             app
    #---------------------------------------------------------------------
    # static backend for serving up images, stylesheets and such
    #---------------------------------------------------------------------
    #backend static
    #    balance     roundrobin
    #    server      static 127.0.0.1:4331 check
    #---------------------------------------------------------------------
    backend app
        balance     roundrobin
        server  app1 172.25.1.2:80 check
        server  app2 172.25.1.3:80 check
    

    在这里插入图片描述

    在这里插入图片描述vim /etc/security/limits.conf

    在这里插入图片描述

    配置完成之后开启服务并查看服务状态
    80端口开启了服务

    [root@server1 ~]# systemctl start haproxy.service 
    [root@server1 ~]# netstat -antlp
    

    在这里插入图片描述
    当然需要在server2,server3上开启httpd服务
    之后,就可以在网页进行测试:
    172.25.1.1/status
    在这里插入图片描述

    HAProxy的日志管理

    编辑文件:加入haproxy的日志信息!

    取消注释udp的两行!
        [root@server1 ~]# vim /etc/rsyslog.conf
        取消注释
        最后添加
        local2.* 			/var/log/haproxy.log
        [root@server1 ~]# systemctl restart rsyslog.service
    

    在这里插入图片描述

    在这里插入图片描述
    当重启服务或者有操作的时候,错误日志文件才会出现不然不会出现
    之后我们在重启haproxy出现问题,失败的时候,就可以查看日志报错修复
    vim /var/log/haproxy.log
    在这里插入图片描述

    status添加用户认证

    若是在配置文件中添加用户认证 登陆需要用户和密码:
    vim /etc/haproxy/haproxy.cfg

    stats uri /status
    status auth admin:westos
    

    在这里插入图片描述
    重启服务:
    systemctl reload haproxy.service
    然后访问网页:
    在这里插入图片描述

    如果访问的是 172.25.1.1不断刷新,就会出现负载均衡
    在这里插入图片描述

    在这里插入图片描述刚才的配置文件中最下面添加的app下面的参数 roundrobin:

    roundrobin算法(根据服务器权重轮询的算法,可以自定义权重,它支持慢启动,并能在运行时修改权重,所以是一种动态算法。
    在客户端上进行负载均衡测试:
    for i in {1…10}; do curl 172.25.1.1 ;done
    结果如下:
    在这里插入图片描述

    权重

    若是在后面加上权重:
    因为默认的权重是1,若是后面协会写2已经是权重变大了!
    如下如:
    在这里插入图片描述

    这样再负载均衡的时候,server2的次数会是server3的两倍!

    source 调度算法(对请求的源IP地址进行hash处理,根据hash运算处理结果调度至后端服务器。可使固定IP的请求始终调度至统一服务器。)

    在这里插入图片描述

    这样会把IP锁定在一个地址:
    在这里插入图片描述

    当关闭某server3服务器的http服务时如下:说明其具有对后端服务器健康检查的功能 在这里插入图片描述

    图片访问锁定

    写入图片的格式:
    在这里插入图片描述
    static地址改为172.25.1.3:80 check

    在这里插入图片描述

    我们需要在server3上建立目录放入图片

    cd /var/www/html
    mkdir  images/
    put vim,jpd
    

    在这里插入图片描述

    放入什么图片都可以,只要格式符合即可!!!
    我放入两张:
    访问网页:172.25.1.1/images/vim.jpg
    在这里插入图片描述
    再次访问172.25.1.1/images/iso7.gif

    在这里插入图片描述

    访问黑名单

    acl blacklist src 172.25.1.250/24
    block if blacklist

    在这里插入图片描述再次访问,发现拒绝访问:403
    在这里插入图片描述

    错误403:重定向

    若是不想出现访问失败的界面,而是想让客户访问另外一个网页需要重定向!
    需要把错误403定向到一个网页 :
    配置如下:
    在这里插入图片描述
    再次访问网页172。25。1。1
    跳转到了百度
    在这里插入图片描述
    在这里插入图片描述

    重定向

    将前面的错误403重定向注释掉
    redirect location http://www,taobao.com

    在这里插入图片描述

    在这里插入图片描述

    二.结合PHP

    在server3上安装php
    yum install -y php
    修改php默认发布页面

    cd /var/www/html
    vim index.hrml
    <?php
    phpinfo()
    ?>
    systemctl restart httpd
    

    在这里插入图片描述

    接着修改haproxy中的配置文件
    vim /etc/haproxy/haproxy.cfg

    以.php结尾的转到访问static

    在这里插入图片描述

    这时候,再次访问172.25.1.1/index.php 跳转到了 172.25.1.3/index.php
    在这里插入图片描述

    三.HAProxy的读写分离

    vim /etc/haproxy/haproxy.cfg

    acl write method POST
    acl write method PUT
    
    use_backend_static 				if write
    

    在这里插入图片描述当然需要在配置文件最后面修改static的地址:
    在这里插入图片描述

    server2和server3同样操作

    [root@server2 html]# yum install php -y
    [root@server3 html]# yum install php -y
    

    变为完后发给server3:
    scp index.php server3:/var/www/html/

    [root@serve2 html]# vim index.php

        <html>
        <body>
         
        <form action="upload_file.php" method="post"
        enctype="multipart/form-data">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file" />
        <br />
        <input type="submit" name="submit" value="Submit" />
        </form>
         
        </body>
        </html>
    
    [root@server2 html]# vim upload_file.php
    [root@server2 html]# mkdir upload
    [root@server2 html]# chmod 777 upload
    

    编辑后,把目录和文件发给server3上:
    scp -r upload upload_file.php server3:/var/www/html/

    <?php
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 2000000))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
        echo "Upload: " . $_FILES["file"]["name"] . "<br />";
        echo "Type: " . $_FILES["file"]["type"] . "<br />";
        echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
        echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
     
        if (file_exists("upload/" . $_FILES["file"]["name"]))
          {
          echo $_FILES["file"]["name"] . " already exists. ";
          }
        else
          {
          move_uploaded_file($_FILES["file"]["tmp_name"],
          "upload/" . $_FILES["file"]["name"]);
          echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
          }
        }
      }
    else
      {
      echo "Invalid file";
      }
    ?>
    

    修改完之后,重启httpd服务

    测试: 读得时候,访问的是server2的php
    在这里插入图片描述
    点击choose file选择一张图片
    因为刚才的php代码里面写了图片的格式可以为下面三种,找到符合的图片,或者修改代码为你的图片格式都可以!!

    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    

    然后submit提交
    在这里插入图片描述

    可以发现提交的图片出现在server3刚才建立的uoload目录上,而server2上没有:

    在这里插入图片描述

    四.pacemaker+haproxy双机热备

    corosync是集群框架引擎程序,pacemaker是高可用集群资源管理器
    准备server4机子:
    下载及配置,修改软件仓库,安装高可用插件
    vim /etc/yum.repos.d/dvd.repo

    cat /etc/yum.repos.d/dvd.repo
    因为虚拟机使用的是redhat 7.6的镜像,所以镜像下本来就有高可用的包!
    server1,server4都需要配置:

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

    在server1,server4都需要下载!!

        [root@server4 ~]# yum install haproxy.x86_64
        [root@server4 ~]# ssh-keygen
        [root@server4 ~]# ssh-copy-id server1
        [root@server4 ~]# yum install -y pacemaker pcs psmisc policycoreutils-python
        [root@server4 ~]# ssh server1 yum install -y pacemaker pcs psmisc policycoreutils-python
        [root@server4 yum.repos.d]# systemctl enable --now pcsd.service
        [root@server4 yum.repos.d]# ssh server1 systemctl enable --now pcsd.service
    

    把server1上前面修改的配置文件发给server4

    [root@server1 haproxy]# scp /etc/haproxy/haproxy.cfg server4:/etc/haproxy/
    

    给用户密码

        [root@server4 ~]# passwd hacluster   #westos
        [root@server4 ~]# ssh server1 passwd hacluster
        ## 给用户密码##
    

    在这里插入图片描述

    接下来进行集群的认证:

    [root@server4 ~]# pcs cluster auth server1 server4
    

    在这里插入图片描述

    [root@server4 ~]# pcs cluster setup --name mycluster server
    ##在同一个节点上使用pcs集群设置来生成和同步crosync配置##
    

    在这里插入图片描述

    开启集群服务,开启开机自动启动:

        [root@server4 ~]# pcs cluster start --all
        ##启动集群##
        [root@server4 ~]# pcs cluster enable --all
        ##开机自启动##
    

    在这里插入图片描述

    在这里插入图片描述

    搞定之后,查看一下配置如下:
    pcs status:看到server1,server4都在线即可!
    在这里插入图片描述

    如果查看集群状态报错

    [root@server4 ~]# crm_verify -LV
    

    如下图:
    在这里插入图片描述

    那是因为没有将stonith-enabled=false

    [root@server4 ~]# pcs property set stonith-enabled=false
    

    设置后在查看!:
    刚才的pcs status的警告也消失了!
    在这里插入图片描述

    既然需要完成高可用,那么就和前面学习的lvs ,nginx的高可用一样
    需要设置vip进行变化
    添加的vip为自己网段的100号:172.25.1.100

    [root@server4 ~]# pcs resource --help
    [root@server4 ~]# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=172.25.1.100 op monitor interval=30s
    

    查看状态,可以看到vip在server1上:
    在这里插入图片描述

    这个时候我们停掉server1的状态:

    [root@server4 ~]# pcs cluster stop server1
    

    因为高可用,固然会飘到server4上!
    在这里插入图片描述

        [root@server4 ~]# pcs resource agents systemd | grep haproxy
        ##查看资源管理器中有没有haproxy程序管理##
        root@server4 ~]# pcs resource create haproxy systemd:haproxy op monitor interval=60s
    ##将haproxy与集群建立连接##
    

    在这里插入图片描述

    在这里插入图片描述在查看pcs status的时候我们看到
    clusterip 和haproxy分别在不同的虚拟机,server1,server4

    在这里插入图片描述
    我们需要把这两个参数所在的虚拟机固定在一个上面,这样才能实现高可用!!
    建立资源管理组,约束资源,控制资源启动顺序,使其运行在统一服务器上

    [root@server4 ~]# pcs resource group add hagroup ClusterIP haproxy
    

    再次查看状态发现ok!
    在这里插入图片描述
    如果ClusterIP或者haproxy服务停掉,集群就会自动重启服务或者添加ClusterIP

    比如测试一下:关掉server4的服务 haproxy.service

    [root@server4 ~]# systemctl stop haproxy.service 
    

    我们会发现haproxy显示server4失败
    下面也会有失败的提示:
    在这里插入图片描述

    但是等一会在查看就会发现重新启动了服务:因为高可用会先检测状态,再启动服务,若是启动失败才会切换master!!
    在这里插入图片描述
    如果将正在使用的服务器的网卡down掉,他会自动跳到集群另外一台服务器上:因为网断掉之后,无法重新启动,只能切换!

    [root@server4 ~]# ip link set down eth0
    

    而且server4已经下线了
    在这里插入图片描述

    但是这个时候,看一下server4的状态,发现卡死在那里了!!除非手动关掉server1,在重启才会重新加入集群中!!
    但是这就有问题了:
    若是server1也坏了,没有人发现进行手动重启,那岂不是文件系统脑裂!
    ,客户端就会访问出问题!那么我们需要找到办法让挂掉的机子重新自动重启!
    我们接下来就需要结合fence来使用!

    fence结合pacemaker防止文件系统脑裂

    在server4,1上

    [root@server4 ~]# yum install -y fence-virt.x86_64
    [root@server4 ~]# ssh server1 yum install -y fence-virt.x86_64
    

    查看模块
    stonith_admin -I
    stonith_admin -M -a fence_xvm

    在这里插入图片描述

    在这里插入图片描述

    ##在真机下载##

    [root@Sun_s ~]# dnf install fence-virtd-libvirt.x86_64 fence-virtd-multicast.x86_64 fence-virtd.x86_64 -y
    

    [root@Sun_s ~]# fence_virtd -c

    出现的选项直接enter下一步:
    直到Interface [virbr0]: br0手动输入br0
    如下:

        [root@Sun_s ~]# fence_virtd -c
        Module search path [/usr/lib64/fence-virt]: 
         
        Available backends:
            libvirt 0.3
        Available listeners:
            multicast 1.2
         
        Listener modules are responsible for accepting requests
        from fencing clients.
         
        Listener module [multicast]: 
         
        The multicast listener module is designed for use environments
        where the guests and hosts may communicate over a network using
        multicast.
         
        The multicast address is the address that a client will use to
        send fencing requests to fence_virtd.
         
        Multicast IP Address [225.0.0.12]: 
         
        Using ipv4 as family.
         
        Multicast IP Port [1229]: 
         
        Setting a preferred interface causes fence_virtd to listen only
        on that interface.  Normally, it listens on all interfaces.
        In environments where the virtual machines are using the host
        machine as a gateway, this *must* be set (typically to virbr0).
        Set to 'none' for no interface.
         
        Interface [virbr0]: br0
         
        The key file is the shared key information which is used to
        authenticate fencing requests.  The contents of this file must
        be distributed to each physical host and virtual machine within
        a cluster.
         
        Key File [/etc/cluster/fence_xvm.key]: 
         
        Backend modules are responsible for routing requests to
        the appropriate hypervisor or management layer.
         
        Backend module [libvirt]: 
         
        The libvirt backend module is designed for single desktops or
        servers.  Do not use in environments where virtual machines
        may be migrated between hosts.
         
        Libvirt URI [qemu:///system]: 
         
        Configuration complete.
         
        === Begin Configuration ===
        backends {
        	libvirt {
        		uri = "qemu:///system";
        	}
         
        }
         
        listeners {
        	multicast {
        		port = "1229";
        		family = "ipv4";
        		interface = "br0";
        		address = "225.0.0.12";
        		key_file = "/etc/cluster/fence_xvm.key";
        	}
         
        }
         
        fence_virtd {
        	module_path = "/usr/lib64/fence-virt";
        	backend = "libvirt";
        	listener = "multicast";
        }
         
        === End Configuration ===
        Replace /etc/fence_virt.conf with the above [y/N]? y
    

    它会 生成一个密钥文件在这里:
    在这里插入图片描述

    所以我们需要建立这个目录,让密钥可以方进去

        [root@Sun_s ~]# cd /etc/
        [root@Sun_s etc]# mkdir cluster/
        ##由于这个目录没有,所以需要手动创建##
        [root@Sun_s cluster]# dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
        ##生成密钥##
    

    在这里插入图片描述
    之后,重启服务

    [root@Sun_s cluster]# systemctl restart fence_virtd.service
    

    在server1,4上建立目录

        [root@server4 ~]# mkdir /etc/cluster
        [root@server4 ~]# ssh server1 mkdir /etc/cluster
        ##创建目录存放密钥##
        [root@server4 ~]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:sun1;server4:sun4" op monitor interval=60s
        “将主机名和设备对应关系”加到集群中
    

    把刚才生成的密钥给资源管理的服务器server1,server4

    [root@Sun_s cluster]# scp fence_xvm.key root@172.25.1.4:/etc/cluster/
    [root@Sun_s cluster]# scp fence_xvm.key root@172.25.1.1:/etc/cluster/
    

    再次查看server4的pcs status
    发现fence 已经加入进来
    在这里插入图片描述

    因为前面stonith-enabled关闭了,记得吗?
    开启它!

    [root@server4 ~]# pcs property set stonith-enabled=true
    ##将stonith启用##
    

    测试:
    打开server1的虚拟窗口观察变化

    [root@server1 ~]# echo c > /proc/sysrq-trigger
    ##将server1模拟系统崩溃##此时打开server1的虚拟窗口观察变化
    

    它和前面高可用不同,这个它会自动重启,而前面需要手动重启!
    在这里插入图片描述

    我们再查看一下状态::
    因为server1前面挂掉了,vip,haprox所以转移到了server4上
    而fence服务修复了server1,所以会停留在server1上!
    在这里插入图片描述

    若是把server4挂掉,那么server4就会自动重启,vip,haprox所以转移到了server1上
    而fence服务修复了server4,停留在server4上!

    展开全文
  • pcs cluster stop server5 ## 关闭backup-master,vip又自动漂移到master上 pcs resource providers # 查看资源提供者的列表 当master出故障时,backup-master会立刻接替master的工作, 保证客户端可以正常得到...

    一.MFS的原理及组成

    1.分布式原理:分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,用户要访问这些文件夹的时候,只要打开一个文件夹,就可以的看到所有链接到此文件夹内的共享文件夹。
    2.mfs文件系统组成

    1、管理服务器(master server)
    一台管理整个文件系统的独立主机,存储着每个文件的元数据(文件的大小、属性、位置信息,包括所有非常规文件的所有信息,例如目录、套接字、管道以及设备文件)
    2、数据服务器群(chunk servers)
    任意数目的商用服务器,用来存储文件数据并在彼此之间同步(如果某个文件有超过一个备份的话)
    3、元数据备份服务器(metalogger server)
    任意数量的服务器,用来存储元数据变化日志并周期性下载主要元数据文件,以便用于管理服务器意外停止时好接替其位置。
    4、访问mfs的客户端
    任意数量的主机,可以通过mfsmount进程与管理服务器(接收和更改元数据)和数据服务器(改变实际文件数据)进行交流。

    3.MFS读数据的处理过程

    客户端向元数据服务器发出读请求
    元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端
    客户端向已知的Chunk Server请求发送数据
    Chunk Server向客户端发送数据
    在这里插入图片描述

    4.写入的过程

    客户端向元数据服务器发送写入请求
    元数据服务器与Chunk Server进行交互,但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Servers告知元数据服务器操作成功
    元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据
    客户端向指定的Chunk Server写入数据
    该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功
    在这里插入图片描述

    二.MFS的部署

    实验环境RHEL7.3
    master server172.25.14.1(server1)
    chunk server1172.25.14.2(server2)
    chunk server2172.25.14.3(server3)
    clients172.25.254.14(物理机)

    1.配置master(server1)

    1)安装rpm包

    在这里插入图片描述
    yum install -y
    moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
    moosefs-cli-3.0.103-1.rhsystemd.x86_64.rpm
    moosefs-cgiserv-3.0.103-1.rhsystemd.x86_64.rpm
    moosefs-cgi-3.0.103-1.rhsystemd.x86_64.rpm

    2)修改本地地址解析
    加上 172.25.14.1 mfsmaster  server1,2,3,物理机都要加
    
    3)开启服务

    systemctl start moosefs-master
    netstat -atlnp ##查看端口,占用9419,9420,9420端口
    在这里插入图片描述
    systemctl start moosefs-cgiserv
    scp moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm root@172.25.14.2:/root ##将安装包给server2和server3都发

    一份

    2.配置chunk server1(server2 )

    1) 安装,创建目录
    yum install moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm 
    vim /etc/hosts				##修改本地地址解析
     mkdir /mnt/chunk1
    
    2)添加硬盘,挂载
    给虚拟机添加一块硬盘,将硬盘挂载,否则启动服务后占用的是根空间
     fdisk -l
    mkfs.xfs /dev/vda		##格式化
    mount /dev/vda /mnt/chunk1/
    chown mfs.mfs /mnt/chunk1/
     vim /etc/mfs/mfshdd.cfg		##在文件的最后添加下面一行
    /mnt/chunk1
    systemctl start moosefs-chunkserver		##开启服务
    

    3.配置chunk server2(server3)

    不给chunk server2添加硬盘,服务开启占用根空间
    rpm -ivh moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm 
    mkdir /mnt/chunk2
      vim /etc/hosts				##添加本地解析
     chown mfs.mfs /mnt/chunk2/
     vim /etc/mfs/mfshdd.cfg
    /mnt/chunk2
     systemctl start moosefs-chunkserver
    

    4.配置clients(客户端)

    yum install -y moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm
    vim /etc/mfs/mfsmount.cfg
    #/mnt/mfs ##指定挂载的地方
    mkdir /mnt/mfs
    vim /etc/hosts
    mfsmount
    [root@foundation14 ~]# df
    Filesystem 1K-blocks Used Available Use% Mounted on
    /dev/mapper/rhel_foundation14-root 225399264 79664564 145734700 36% /
    devtmpfs 3911020 0 3911020 0% /dev
    tmpfs 3924360 488 3923872 1% /dev/shm
    tmpfs 3924360 9084 3915276 1% /run
    tmpfs 3924360 0 3924360 0% /sys/fs/cgroup
    /dev/sda1 1038336 143400 894936 14% /boot
    /dev/loop0 3704296 3704296 0 100% /var/www/html/7.3yumpak
    tmpfs 784876 24 784852 1% /run/user/1000
    mfsmaster:9421 38772736 1627072 37145664 5% /mnt/mfs

    客户端已经成功挂载,可以通过浏览器进行查看
    可以看到chunk server的信息和挂载硬盘占用大小,以及客户端的基本信息

    在这里插入图片描述

    三.MFS的高可用

    1.配置master

    在此之前server1作为master

    1).配置yum源
    [rhel7.3]
    name=rhel7.3
    baseurl=http://172.25.14.250/7.3yumpak
    gpgcheck=0
    
    [HighAvailability]
    name=HighAvailability
    baseurl=http://172.25.14.250/7.3yumpak/addons/HighAvailability
    gpgcheck=0
    
    [ResilientStorage]
    name=ResilientStorage
    baseurl=http://172.25.14.250/7.3yumpak/addons/ResilientStorage
    gpgcheck=0
    

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

    2).下载软件
     yum install -y pacemaker corosync pcs
    
    3).免密操作
    ssh-keygen
    ssh-copy-id server4
    systemctl start pcsd
    systemctl enable pcsd
    passwd hacluster  ##主备密码要配置一致
    

    2.配置backup-master

    [root@server4 ~]# ls
    moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
    [root@server4~]#rpm-ivh moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
    
    1)配置yum源和server1(master)一样
    [rhel7.3]
    name=rhel7.3
    baseurl=http://172.25.14.250/7.3yumpak
    gpgcheck=0
    
    [HighAvailability]
    name=HighAvailability
    baseurl=http://172.25.14.250/7.3yumpak/addons/HighAvailability
    gpgcheck=0
    
    [ResilientStorage]
    name=ResilientStorage
    baseurl=http://172.25.14.250/7.3yumpak/addons/ResilientStorage
    gpgcheck=0
    
    2)vim /usr/lib/systemd/system/moosefs-master.service
    [Unit]
    Description=MooseFS Master server
    Wants=network-online.target
    After=network.target network-online.target
    
    [Service]
    Type=forking
    ExecStart=/usr/sbin/mfsmaster -a
    ExecStop=/usr/sbin/mfsmaster stop
    ExecReload=/usr/sbin/mfsmaster reload
    PIDFile=/var/lib/mfs/.mfsmaster.lock
    TimeoutStopSec=1800
    TimeoutStartSec=1800
    Restart=no
    
    [Install]
    WantedBy=multi-user.target
    

    在这里插入图片描述

     systemctl daemon-reload
    
    3)下载软件
    yum install -y pacemaker corosync pcs
     systemctl start pcsd
    systemctl enable pcsd
    passwd hacluster   ##设定密码,与master一致
    

    3.创建主备集群

    pcs cluster auth server1 server4
    

    在这里插入图片描述

    pcs cluster setup --name mycluster server1 server4
    

    在这里插入图片描述

    pcs cluster start --all  # 开启所有的服务
    pcs status nodes   # 再次查看节点信息
    

    在这里插入图片描述

    corosync-cfgtool -s    # 验证corosync是否正常
    pcs property set stonith-enabled=false
     crm_verify -L -V 
    pcs status   #查看状态
    

    在这里插入图片描述

    4.添加vip

    Pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.14.100 \
     cidr_netmask=32 op monitor interval=30s
    

    在这里插入图片描述

    5.打开监控,测试

    crm_mon ##开始在master(server1)上
    

    在这里插入图片描述

    pcs cluster stop server1  ##关掉server1的服务,服务到了server4上
    

    在这里插入图片描述

     pcs cluster start server1 #当master重新开启时,不会抢占资源
    pcs cluster stop server5 ## 关闭backup-master,vip又自动漂移到master上
    pcs resource providers     # 查看资源提供者的列表
    

    在这里插入图片描述

    当master出故障时,backup-master会立刻接替master的工作,
    保证客户端可以正常得到服务
    

    三.iscsi存储共享

    1.环境恢复

    物理机  umount /mnt/mfs/
    vim /etc/hosts
    172.25.14.100     mfsmaster
    Server1:
     systemctl stop moosefs-master
    vim /etc/hosts
    172.25.14.100     mfsmaster
    Server2,server3的操作
        systemctl stop moosefs-chunkserver
    vim /etc/hosts
    172.25.14.100     mfsmaster
    

    2.给server3上添加一块硬盘

    [root@server3 ~]# fdisk -l
    Disk /dev/vda: 8589 MB, 8589934592bytes, 16777216sectors
    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@server3 ~]# yum install -y targetcli
    [root@server3 ~]# systemctl start target
    

    在这里插入图片描述

    3.配置iscsi服务

    [root@server3 ~]# targetcli
    /> cd backstores/block
    /backstores/block> create my_disk1 /dev/vda
    Created block storage object my_disk1 using /dev/vda.
    /backstores/block> cd ..
    /backstores> cd ..
    /> cd iscsi 
    /iscsi> create iqn.2019-05.com.example:server3
    Created target iqn.2019-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> cd iqn.2019-05.com.example:server3
    /iscsi/iqn.20...ample:server3> cd tpg1/luns 
    /iscsi/iqn.20...er3/tpg1/luns> create /backstores/block/my_disk1 
    Created LUN 0.
    /iscsi/iqn.20...er3/tpg1/luns> cd ..
    /iscsi/iqn.20...:server3/tpg1> cd acls 
    /iscsi/iqn.20...er3/tpg1/acls> create iqn.2019-05.com.example:client
    Created Node ACL for iqn.2019-05.com.example:client
    Created mapped LUN 0.
    /iscsi/iqn.20...er3/tpg1/acls> cd ..
    /iscsi/iqn.20...:server3/tpg1> cd ..
    /iscsi/iqn.20...ample:server3> cd ..
    /iscsi> cd ..
    /> ls
    o- / ............................................................................ [...]
      o- backstores ................................................................. [...]
      | o- block ..................................................... [Storage Objects: 1]
      | | o- my_disk1 ........................... [/dev/vda (20.0GiB) write-thru activated]
      | o- fileio .................................................... [Storage Objects: 0]
      | o- pscsi ..................................................... [Storage Objects: 0]
      | o- ramdisk ................................................... [Storage Objects: 0]
      o- iscsi ............................................................... [Targets: 1]
      | o- iqn.2019-05.com.example:server3 ...................................... [TPGs: 1]
      |   o- tpg1 .................................................. [no-gen-acls, no-auth]
      |     o- acls ............................................................. [ACLs: 1]
      |     | o- iqn.2019-05.com.example:client .......................... [Mapped LUNs: 1]
      |     |   o- mapped_lun0 ................................. [lun0 block/my_disk1 (rw)]
      |     o- luns ............................................................. [LUNs: 1]
      |     | o- lun0 ......................................... [block/my_disk1 (/dev/vda)]
      |     o- portals ....................................................... [Portals: 1]
      |       o- 0.0.0.0:3260 ........................................................ [OK]
      o- loopback ............................................................ [Targets: 0]
    /> exit
    

    在这里插入图片描述

    4.发现设备

    [root@server1 ~]# iscsiadm -m discovery -t st -p 172.25.14.3
    172.25.14.3:3260,1 iqn.2019-05.com.example:server3
    fdisk -l     # 可以查看到远程共享出来的磁盘
    fdisk /dev/sda  # 使用共享磁盘,建立分区
    mkfs.xfs /dev/sdb1      # 格式化分区
    

    在这里插入图片描述

    [root@server1  ~]# cd /var/lib/mfs/     # 这是mfs的数据目录
    [root@server1 mfs]# ls
    changelog.1.mfs  changelog.2.mfs  changelog.3.mfs  metadata.crc  metadata.mfs  metadata.mfs.back.1  metadata.mfs.empty  stats.mfs
    [root@server1 mfs]# cp -p * /mnt
    [root@server1 mfs]# cd /mnt/
    [root@server1 mnt]# ll
    [root@server1 mnt]# chown mfs.mfs /mnt   #当目录属于mfs用户和组时,才能正常使用
    

    在这里插入图片描述

    [root@server1 mnt]# cd
    [root@server1 ~]# umount /mnt
    [root@server1 ~]# mount /dev/sdb1 /var/lib/mfs/	#使用分区,测试是否可以使用共享磁盘
    [root@server1 ~]# df
    

    5.配置backup-master

    [root@server4 ~]# vim /etc/hosts
    [root@server4 ~]# yum install -y iscsi-*
    [root@server4 ~]# vim /etc/iscsi/initiatorname.iscsi 
    InitiatorName=iqn.2019-05.com.example:client
    [root@server4 ~]# iscsiadm -m discovery -t st -p 172.25.40.2		##发现
    172.25.40.2:3260,1 iqn.2019-05.com.example:server2
    
    [root@server4 ~]# iscsiadm -m node -l			##登陆
    Logging in to [iface: default, target: iqn.2019-05.com.example:server2, portal: 172.25.40.2,3260] (multiple)
    Login to [iface: default, target: iqn.2019-05.com.example:server2, portal: 172.25.40.2,3260] successful.
    
    [root@server4 ~]# fdisk -l			##查看
    
    [root@server4 ~]# mount /dev/sdb1 /var/lib/mfs/
    ##此处使用的磁盘和master是同一块,因为master已经做过配置了,所以我们只需要使用即可,不用再次配置
    [root@server4 ~]# df
    

    在这里插入图片描述

    [root@server4 ~]# systemctl start moosefs-master		##测试磁盘是否可以正常使用
    [root@server4 ~]# systemctl stop moosefs-master
    

    6.在master上创建mfs文件系统

    [root@server1 ~]# pcs resource create mfsdata ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mfs fstype=xfs op monitor interval=30s
    [root@server1 ~]# pcs resource show
     vip	(ocf::heartbeat:IPaddr2):	Started server1
     mfsdata	(ocf::heartbeat:Filesystem):	Started server4
    

    在这里插入图片描述

    [root@server1 ~]# pcs resource create mfsd systemd:moosefs-master op monitor interval=1min
    [root@server1 ~]# pcs resource group add mfsgroup vip mfsdata mfsd 
    ##把vip,mfsdata,mfsd 集中在一个组中
    [root@server1 ~]# pcs cluster stop server1		## 当关闭master之后,master上的服务就会迁移到backup-master上
    server1: Stopping Cluster (pacemaker)...
    server1: Stopping Cluster (corosync)...
    

    在这里插入图片描述

    在这里插入图片描述

    四.fence机制

    通过以上实验我们发现,当master挂掉之后,backup-master会立刻接替master的工作,保证客户端可以进行正常访问,但是,当master重新运行时,我们不能保证master是否会抢回自己的工作,从而导致master和backup-master同时修改同一份数据文件从而发生脑裂,此时fence就派上用场了

    1.安装fence

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

    2.生成一份fence密钥文件,传给服务端

    [root@foundation61 ~]# yum install -y fence-virtd
    [root@foundation61 ~]# yum install fence-virtd-libvirt -y 
    [root@foundation61 ~]# yum install fence-virtd-multicast -y
    [root@foundation61 ~]# fence_virtd -c   
    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]: 
    
    [root@foundation61 ~]# mkdir /etc/cluster  # 这是存放密钥的文件,需要自己手动建立
    [root@foundation61 ~]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1 
    [root@foundation61 ~]# systemctl start fence_virtd
    [root@foundation61 ~]# cd /etc/cluster/
    [root@foundation61 cluster]# ls
    fence_xvm.key
    [root@foundation61 cluster]# scp fence_xvm.key root@172.25.61.1:/etc/cluster/
    [root@foundation61 cluster]# scp fence_xvm.key root@172.25.61.4:/etc/cluster/
    [root@foundation61 cluster]# netstat -anulp | grep 1229  
    

    在这里插入图片描述

    [root@foundation61 cluster]# virsh list  # 查看主机域名
    

    在这里插入图片描述

    在master查看监控crm_mon
    
    
    [root@server1 ~]# cd /etc/cluster 
    [root@server1 cluster]# pcs stonith create vmfence fence_xvm pcmk_host_map="server1:server1;server4:server4" op monitor interval=1min
    [root@server1 cluster]# pcs property set stonith-enabled=true
    [root@server1 cluster]# crm_verify -L -V
    
    [root@server1 cluster]# crm_mon  # 查看监控,服务在master上(server1)
    

    在这里插入图片描述

    [root@server4 cluster]# echo c > /proc/sysrq-trigger  # 模拟backup-master端内核崩溃
    

    在这里插入图片描述

    服务成功迁移到server1(master上)
    展开全文
  • 部分 Linux实用生产技能章 生产常用基础技能 21.1 Hostname & Network 31.1.1 基础知识 31.1.2 Network指令 31.1.3 配置以太网静态IP地址 41.1.4 实用网络指令 51.1.5 修改网络配置文件 61.1.6 添加、删除路由条目 ...

    部分 Linux实用生产技能

    章 生产常用基础技能 2

    1.1 Hostname & Network 3

    1.1.1 基础知识 3

    1.1.2 Network指令 3

    1.1.3 配置以太网静态IP地址 4

    1.1.4 实用网络指令 5

    1.1.5 修改网络配置文件 6

    1.1.6 添加、删除路由条目 7

    1.1.7 网络配置实例 8

    1.1.8 网桥 12

    1.1.9 bond 13

    1.1.10 图形化配置 14

    1.1.11 主机名 15

    1.2 软件管理 16

    1.2.1 基础知识 16

    1.2.2 RPM 16

    1.2.3 YUM软件包管理器 19

    1.2.4 tar包管理 21

    1.2.5 tar解压和压缩 22

    1.2.6 源码安装 22

    1.2.7 复杂的实例 23

    1.3 journalctl & NTP 24

    1.3.1 journalctl 24

    1.3.2 NTP 26

    1.4 rsync传输工具 27

    1.5 自定义安装光盘 30

    1.5.1 需要解决的问题 30

    1.5.2 可以选择的方案 30

    1.5.3 该选择哪种呢 30

    1.5.4 自定义光盘 31

    1.6 PXE自动化安装 36

    1.6.1 解决问题和注意事项 36

    1.6.2 Kickstart + PXE 36

    1.6.3 PXE无人值守安装配置 38

    1.7 系统急救 42

    1.7.1 意外的礼物 42

    1.7.2 单用户模式 42

    1.8 容器 45

    1.8.1 Docker的安装和使用 45

    1.8.2 使用Docker容器 46

    1.8.3 修改/保存Docker容器 47

    1.8.4 Docker桥接网络 47

    1.9 定制容器和私有仓库 48

    1.9.1 创建Docker容器 48

    1.9.2 定制容器 49

    1.9.3 私有仓库 51

    1.10 虚拟化(KVM) 53

    1.10.1 KVM的使用 54

    1.10.2 KVM热迁移 55

    第2章 生产实用LVM技术 58

    2.1 LVM基础 59

    2.1.1 LVM介绍及其原理 59

    2.1.2 LVM管理和使用 60

    2.1.3 LVM 删除 65

    2.2 LVM Cache & Snapshot 66

    2.2.1 LVM Cache 66

    2.2.2 DM Cache 实例 67

    2.2.3 LVM Snapshot 69

    2.2.4 Snapshot测试 70

    2.3 精简资源 73

    2.3.1 精简资源介绍 73

    2.3.2 精简资源实例 73

    2.4 条带化(Striped) 78

    2.4.1 线性和条带简介 78

    2.4.2 条带化实例 79

    2.5 数据处理 82

    2.5.1 数据迁移 82

    2.5.2 LVM数据迁移实例 83

    2.5.3 PVMOVE在线更换磁盘 85

    2.6 灾难恢复 86

    2.6.1 灾难的划分 86

    2.6.2 如何预防 87

    2.6.3 LVM逻辑卷故障――灾难恢复实例 87

    第3章 CentOS 7集群构建 90

    3.1 Pacemaker基础 91

    3.1.1 CentOS 7中的Cluster 91

    3.1.2 Pacemaker集群类型 91

    3.2 PCS-2集群的创建 93

    3.3 PCS-3故障模拟和恢复 106

    3.3.1 断开VIP网络,模拟集群切换 106

    3.3.2 如何解决回切问题(主机恢复后,VIP回归到原主机) 107

    3.3.3 断开心跳测试(脑裂的防范) 108

    3.3.4 双心跳 109

    3.3.5 stonith设置(Fence设置) 111

    3.3.6 备份和恢复集群 112

    3.4 PCS――DB2+Web 113

    3.4.1 DB2 HA配置 113

    3.4.2 Web集群 119

    3.5 PCS HA(NFS+DRBD) 121

    3.5.1 背景介绍 121

    3.5.2 DRBD+NFS+PCS配置实例 122

    第4章 系统调优 130

    4.1 性能调优的基础理论 131

    4.1.1 调优不是万能的 131

    4.1.2 信息模型 131

    4.1.3 屏蔽干扰项和学会使用帮助文档 133

    4.1.4 忠告 133

    4.1.5 工具 134

    4.1.6 单位 135

    4.1.7 实例 135

    4.2 经典理论(LAW) 136

    4.2.1 为什么要理解队列理论 136

    4.2.2 队列理论的核心思想 136

    4.2.3 带宽和吞吐量 141

    4.3 硬件 142

    4.3.1 CPU 142

    4.3.2 内存(Memory) 144

    4.3.3 存储 145

    4.3.4 网络 146

    4.3.5 在Linux上查看信息 146

    4.4 Process & CPU 147

    4.4.1 特征化的进程 148

    4.4.2 Linux进程状态 148

    4.4.3 进程在运行之前的准备工作 148

    4.4.4 CPU的缓存类型 149

    4.4.5 调度 150

    4.4.6 优先级 150

    4.4.7 优先级和队列的分类 151

    4.4.8 SCHED_OTHER 151

    4.4.9 对列调度器的调整策略 151

    4.4.10 内核时钟 152

    4.4.11 SystemTap 152

    4.4.12 SystemTap Scripts 152

    4.4.13 实验1――进程优先级对比 153

    4.4.14 实验2――安装SystemTap 153

    4.5 Memory调优 158

    4.5.1 虚拟地址和物理地址 158

    4.5.2 内存的分配 159

    4.5.3 Page Walk和大页 159

    4.5.4 Memory Cache 161

    4.5.5 vmcommit 162

    4.5.6 SysV IPC 163

    4.5.7 几种页面的状态和类型 164

    4.5.8 Swap分区 165

    4.6 Network 166

    4.6.1 数据的发送和接收 166

    4.6.2 Socket Buffer 167

    4.6.3 调整UDP Buffer的大小 167

    4.6.4 调整TCP Buffer的大小 168

    4.6.5 参考实验 168

    4.7 磁盘调度& FileSystem 173

    4.7.1 磁盘与I/O 173

    4.7.2 Elevator算法 175

    4.7.3 VFS-虚拟文件系统 176

    4.8 Tuned 179

    第5章 Linux系统安全 182

    5.1 Linux安全介绍 183

    5.2 Linux安全加固 185

    5.3 OpenVAS的部署和使用 189

    第6章 Linux实用规范 197

    6.1 系统安装规范 198

    6.2 问题处理规范 202

    6.3 上线检查规范 205

    第二部分 企业存储解决方案

    第7章 GlusterFS――分布式存储技术详解 210

    7.1 GlusterFS 211

    7.1.1 GlusterFS介绍 211

    7.1.2 GlusterFS常用卷 212

    7.1.3 安装GlusterFS 214

    7.2 GlusterFS技巧 219

    7.2.1 GlusterFS副本卷更换磁盘 219

    7.2.2 空间扩容 221

    7.2.3 挂载点网络中断 222

    7.2.4 磁盘隐性错误 223

    7.2.5 保留磁盘数据,更换主机(灾难恢复) 223

    7.2.6 参数调优 224

    7.2.7 控制 225

    7.2.8 写操作相关 226

    7.2.9 读操作相关 226

    7.2.10 线程控制 227

    7.2.11 脑裂 227

    7.3 GlusterFS不错特性 229

    7.3.1 配额 229

    7.3.2 RDMA 230

    7.3.3 Trash Translator 231

    7.3.4 Profile 监控分析 232

    7.3.5 top 232

    7.3.6 Statedump统计信息 233

    7.3.7 灾备(Geo-Replication) 233

    第8章 Ceph――分布式存储技术详解 237

    8.1 Ceph 1 238

    8.1.1 Ceph简介 238

    8.1.2 Ceph的设计思路 238

    8.1.3 Ceph的架构 238

    8.1.4 Ceph的安装和配置 242

    8.1.5 查看相关Map信息 252

    8.2 Ceph 2 RBD 253

    8.2.1 RBD块设备 253

    8.2.2 创建块设备 253

    8.2.3 使用块设备 255

    8.2.4 快照 256

    8.2.5 克隆 257

    8.2.6 OpenStack支持 258

    8.2.7 缓存参数 258

    8.2.8 预读参数 259

    8.3 Ceph对象网关1 259

    8.3.1 Ceph对象网关实现开源云盘系统(OwnCloud社区版) 259

    8.3.2 调试配置,简单使用 261

    8.3.3 Ceph对象存储结合OwnCloud 265

    8.4 Ceph对象网关2 267

    8.4.1 创建bucket 268

    8.4.2 Zone同步介绍(多活机制) 269

    8.4.3 实施 270

    8.5 Ceph+SSD 276

    8.6 Ceph-6 Luminous版本 279

    8.6.1 升级和重新部署 280

    8.6.2 Dashboard 284显示全部>>隐藏全部>>

    展开全文
  • FENCE设备是RHCS集群中必不可少的一个组成部分,通过FENCE设备可以避免因出现不可预知的情况而造成的“脑裂”现象,FENCE设备的出现,就是为了解决类似这些问题。 Fence设备主要就是通过服务器或者存储本身的硬件...
  • Linux 集群发展史 高可用集群的层次结构1 消息/基础架构 corosync 2 成员关系 :监听心跳信息,并进行处理成员关系和计算成员关系的票数等信息3 资源管理 VIP 磁盘 文件系统 CRM (群集资源管理器)等,有些策略...
  • Linux企业运维——HAProxy负载均衡 文章目录Linux企业运维——HAProxy负载均衡1、HAProxy简介1.1、HAProxy优缺点1.2、4层负载均衡1.3、7层负载均衡2、HAProxy工作原理3、HAProxy实验演练3.1、HAProxy负载均衡3.2、...
  • lvs介绍 LVS(Linux Virtual Server)是一个虚拟的服务器集群系统,可以在unix/linux平台下实现负载均衡集群功能。 LVS是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率...
  • 可以看到vip和haproxy都在server4节点上运行 #server4 pcs node standby #server1 pcs status 再次关闭server1的haproxy服务,查看集群运行状态,可以看到运行出现了错误和警告 六.fence防止脑裂 Fence主要作用是...
  • pcs status 我们将server1设为备用服务器,可以看到vip和haproxy都在server4节点上运行 关闭server4的haproxy服务,查看集群运行状态,可以看到运行出现了错误和警告 五、fence防止脑裂 Fence主要作用是防止两个...
  • Linux HA Cluster-HeartBeat

    2019-02-18 21:56:06
    Linux HA Cluster HeartBeat  HA Cluster可以解决单点故障问题,增加应用服务的可用性;  故障场景:  设计缺陷(bug):软件或服务器硬件设计或者制造时固有的问题;  使用过久,硬件损耗;  认为故障:管理人员...
  • haproxy运行在server4节点 将vip和haproxy 放入同一个组中解决不同步的问题 pcs status 手动删除vip,查看集群运行状态,运行出现了错误和警告 VIP自动添加 关闭server1的haproxy 节点自动切换 设置集群节点为备用...
  • [root@server1 ~]# pcs resource create vip ocf:heartbeat:IPaddr2 ip=172.25.12.100 cidr_netmask=32 op monitor interval=30s [root@server1 ~]# ip a 查看监控: crm_mon 7、执行故障转移 [root@...
  • Pacemaker简介1.1 Pacemaker简介1.2 pcs 简介1.3 pcs常用管理命令2. 安装与配置3. 测试4. pacemaker与HAProxy4.1 配置4.2 测试1:关闭节点的pcs服务4.3 测试2:关闭haproxy服务4.4 测试3:删除vip4.5 测试4:禁掉...
  • /dev/vda1 2048 41943039 20970496 83 Linux Command ( m for help ) : wq The partition table has been altered ! Calling ioctl ( ) to re-read partition table. Syncing disks. [ root@server2 ~ ] # ...
  • 前言: MFS文件系统: MooseFS是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。 MooseFS是一个分布式存储的框架,其具有如下特性: ...
  • Linux 集群

    2019-10-08 02:01:57
    Linux 集群 Linux_Cluster Linux_ClusterOverviewLBIntroductionLVS的调度方法:10种ipvsadm查看lvs状态VS/NATARP问题LVS my testing持久连接HA概述Cluste...
  • drbd 介绍、工作原理及脑裂故障处理 。 Corosync 是集群引擎,管理消息和成员。Pacemaker 是集群资源管理器,管理工具 pcs。 CentOS 7 中,将原来的管理工具进行了改进集成,现在仅需要使用 pcs 即可管理引擎...
  • Linux HA Cluster概述

    2015-10-23 10:28:05
     with out quorum 没有法定票数,集群发生脑裂 仲裁设备: ping node ping node group  quorum disk: qdisk 资源隔离机制: 节点级别:STONITH 电源交换机 服务硬件管理模块 资源级别:  stopped  ignore  ...
  • 所以需要做映射,这样fence在操作虚拟机就可以通过映射在宿主机上操作对应的虚拟机 步骤六:测试,通过fence来重启虚拟机 再次测试:将server4的网络停掉,然后观察 注意:如果没有fence设备,将可能造成脑裂,因为...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 140
精华内容 56
关键字:

linuxpcs脑裂

linux 订阅