zoukankan      html  css  js  c++  java
  • 存储系统高可用架构

    1 存储系统高可用架构

    1.1 系统整体架构

     

    2 主要部件相关机制

    2.1 pacemaker + cman + corosync

    这部分主要工作有以下方面:(1)关于高可用架构的选型

    2.1.1 IBA网络

    IBA虚拟化

    2.1.2 Lustre文件系统

    双控盘阵支撑

    盘整MMP参数调整

    lustre服务脚本改造

    Lustre resource脚本

    2.1.3 虚拟机及内lwfsd管理

    Lwfsd resource脚本

    虚拟机服务加入到pacemaker

    2.1.4 高可用图形界面展示

    2.2 高可用容错主要场景

    3 软件栈配置过程

    软件安装[all]

    pacemaker-libs-1.1.12-4.el6.x86_64

    pacemaker-1.1.12-4.el6.x86_64

    pacemaker-cts-1.1.12-4.el6.x86_64

    pacemaker-libs-devel-1.1.12-4.el6.x86_64

    pacemaker-cluster-libs-1.1.12-4.el6.x86_64

    pacemaker-remote-1.1.12-4.el6.x86_64

    pacemaker-cli-1.1.12-4.el6.x86_64

    pacemaker-doc-1.1.12-4.el6.x86_64

    pcs-0.9.123-9.0.1.el6.centos.x86_64

    双控盘整MMP设置,将mmp_update_interval设置为60s[all]

    tune2fs -O mmp /dev/sdf

    tune2fs -E mmp_update_interval=60 -f /dev/sdf

    清理旧环境下的遗留信息[选做][all]

    rm -fr /etc/cluster/cluster.conf

    rm -fr /var/lib/pacemaker/cib/*

    rm -fr /var/lib/pcsd/*

    在每个节点上为用户hacluster设置密码[在每个需要添加的点上]

    echo 123456 |passwd --stdin hacluster

    关闭corosync开机自启动[all]

    chkconfig corosync off

    开机自启动pcsd服务[在每个需要添加的节点上]

    chkconfig pcsd on

    并在节点上启动以下服务,接受pcs命令[在每个需要添加的节点上]s

    service pcsd start

    认证节点脚本[在集群中的一个点上,添加新的节点进去] 命令格式:sh node_auth.sh gio033

     

    将节点加入到同一个集群中[one]

    pcs cluster setup --enable --name clustre raid-dev vm02 vm03【初始化】

    pcs cluster node add gio031 --start --enable [后续节点添加]

    启动集群[all]

    pcs --debug cluster start

    设置集群参数[one]

    pcs property set start-failure-is-fatal=false

    pcs property set stonith-enabled=false

    pcs property set symmetric-cluster=false

    设置资源的默认设置[one]

    pcs resource defaults migration-threshold=5

    pcs resource defaults failure-timeout=10s

    创建资源[one]

     

    创建资源colocation[all];在需要加入的点上执行:sh colocation.sh 

     

    设置Lustre的资源为optional order

    关闭所有资源[one]

    for i in `pcs resource|awk '{print $1}'`;do pcs resource disable $i;done

    打开所有资源[one]

    for i in `pcs resource|awk '{print $1}'`;do pcs resource enable $i;done

    清理所有资源的状态

    for i in `pcs resource|awk '{print $1}'`;do pcs resource cleanup $i;done

    4 虚拟机的安装及克隆

    4.1 KMV模板的制件

    4.1.1 安装相关软件

    yum install -y python-virtinst virt-viewer virt-manager libvirt-client libvirt  qemu-img qemu-kvm gpxe-roms-qemu

    4.1.2 配置桥接网络

    更改主机网络配置文件分别如下:

    /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE="eth0"

    BOOTPROTO="none"

    IPV6INIT="no"

    MTU="1500"

    NM_CONTROLLED="no"

    ONBOOT="yes"

    BRIDGE=br0

    /etc/sysconfig/network-scripts/ifcfg-br0

    DEVICE="br0"

    BOOTPROTO="static"

    IPV6INIT="no"

    MTU="1500"

    NM_CONTROLLED="no"

    ONBOOT="yes"

    IPADDR="20.0.11.16"

    GATEWAY="20.0.255.254"

    NETMASK="255.0.0.0"

    TYPE="Bridge"

    4.1.3 生成虚拟机镜像

    qemu-img create /root/kvm.img 40G

     

    4.1.4 安装虚拟机

    virt-install --name=kvmtem --ram 8192 --vcpus=8 -f /root/kvmtem.img --cdrom rhel-6.4.iso --network bridge=br0 --force --graphics vnc,listen=*,port=5908 --noreboot

    此时会自动启动KVM图形安装界面,安装完毕后关闭虚拟机.

    4.1.5 添加IB虚拟设备

    virsh attach-device kvmtem ./mellax02.xml  --config

    virsh attach-device kvmtem ./mellax01.xml  --config

    melle*.xml示例如下,其中的busslot可以通过lspci | grep Mella获取

    <hostdev mode='subsystem' type='pci' managed='yes'>

    <source>

    <address domain='0x0000' bus='0x82' slot='0x01' function='0x0'/>

    </source>

    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

    </hostdev>

    4.1.6 说明

    再次启动虚拟机,安装Lustre文件系统,IB驱动,lwfsd,lwfsd-pacemaker脚本(拷贝至/usr/lib/ocf/resource.d/heartbeat/.后关闭虚拟机.此安装的虚拟机只用于克隆目的.请先安装好所有必须软件.

    4.2 KVM的克隆

    4.2.1 安装相关软件

    yum install -y python-virtinst virt-viewer virt-manager libvirt-client libvirt  qemu-img qemu-kvm gpxe-roms-qemu

    4.2.2 复制镜像

    scp 18.0.11.1:/root/ /kmvtem.img /root/vnio008.img

    4.2.3 修改镜像配置

    此步当克隆虚拟机较多时,可写成脚本使用c3执行.

    mkdir /mnt/loop

    mount -o loop,offset=$((512 * 2099200)) ./vnio008.img /mnt/loop

     

    rm -f /mnt/loop/etc/udev/rules.d/70-persistent-net.rules

    sed -i "s/^HOSTNAME.*$/HOSTNAME=vnio008/" /mnt/loop/etc/sysconfig/network

    sed -i "s/^IPADDR=.*$/IPADDR=20.0.211.8/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-eth0

    sed -i "s/^UUID/# UUID/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-eth0

    sed -i "s/^HWADDR/# HWADDR/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-eth0

    sed -i "s/^IPADDR=.*$/IPADDR=19.0.211.8/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-ib0

    sed -i "s/^UUID/# UUID/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-ib0

    sed -i "s/^HWADDR/# HWADDR/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-ib0

    sed -i "s/^IPADDR=.*$/IPADDR=18.0.211.8/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-ib1

    sed -i "s/^UUID/# UUID/"  /mnt/loop/etc/sysconfig/network-scripts/ifcfg-ib1

    sed -i "s/^HWADDR/# HWADDR/" /mnt/loop/etc/sysconfig/network-scripts/ifcfg-ib1

    4.2.4 生成虚拟机

    virt-install --name=kvm --ram 8192 --vcpus=8 -f ./kvm.img --network bridge=cloudbr0 --force --graphics vnc,listen=*,port=5908 --noreboot --import –noautoconsole

    4.2.5 设置虚拟机开机启动,添加ib网卡

    当一台主机上要同时启动两台及以上虚拟机时,保证每一个虚拟网卡的使用的slotfunc组合唯一.具体可参见前面的安装部分,用8虚拟网卡可用.

    virsh autostart vnio008

    virsh attach-device vnio008 ./mellax02.xml  --config

    virsh attach-device vnio008 ./mellax01.xml  --config

    4.2.6 启动虚拟机

    virsh start vnio008

    4.2.7 查看虚拟机

    virsh list –all

    4.3 pacemaker安装及设置

    下文档中带有[ALL]指令表示须在所有节点上执行(使用C3),带有[ONE]的指令表示只须在其中一台上执行,台主机最好固定.以下操作在实机上执行.

    4.3.1 安装pacemaker相关软件

    [ALL]       cat << -EOF >> /etc/hosts;

    [mds00]     cexec cluster: "mkdir -p /root/.ssh; rm -f /root/.ssh/id_ras*"

    [mds00]     cpush cluster: /etc/.ssh/* /etc/.ssh

    [ALL]       yum -y erase corosync pcs rubygems pacemaker-cli pacemaker-libs pacemaker pacemaker-cluster-libs

    [ALL]       rm -f /etc/cluster/cluster.conf

    [ALL]       yum install -y cman  corosync

    [ALL]       yum localinstall -y pcs*.rpm rubygems*.rpm pacemaker*.rpm glib2*.rpm ccs*.rpm

    4.3.2 初始配置

    [ALL]       chkconfig corosync off

    [ALL]       /etc/init.d/corosync stop

    [ALL]       chkconfig NetworkManager off

    [ALL]       /etc/init.d/NetworkManager stop

    [ALL]       chkconfig pcsd on

    [ALL]       echo CMAN_QUORUM_TIMEOUT=0 > /etc/sysconfig/cman

    [ALL]       echo 123456 | passwd --stdin hacluster

    [ALL]       service pcsd start

    [ONE]       pcs cluster auth node01 node02

    [ONE]       pcs cluster setup --start --name 0102 node01 node02

     

    [ONE]       pcs property set stonith-enabled=false

    [ONE]       pcs property set symmetric-cluster=false

    [ONE]       pcs property set no-quorum-policy=stop

    [ONE,OPT]   pcs cluster enable --all

    [ONE]       pcs cluster status

    4.4 Pacemaker_remote安装配置与lwfsd资源添加

    以下文档中带有[guest]的指令表示须在所有虚拟机中执行(可使用C3),带有[ONE]的指令表示只须在其中一台实体机上执行,此台主机最好固定.且以下操作在实机上执行.

    4.4.1 安装pacemaker_remote

    [guest]    yum -y localinstall pacemaker-remote-*.rpm resource-agents-*.rpm pacemaker-libs-*.rpm glib2-*.rpm  pacemaker-cli-*.rpm pacemaker-cts-*.rpm pacemaker-cluster-libs-*.rpm

    4.4.2 虚拟机内配置

    [guest]    echo 123456 | passwd --stdin hacluster

    [guest]    echo CMAN_QUORUM_TIMEOUT=0 > /etc/sysconfig/cman

    [guest]    chkconfig corosync off

    [guest]    /etc/init.d/corosync stop

    [guest]    chkconfig NetworkManager off

    [guest]    /etc/init.d/NetworkManager stop

    [guest]    chkconfig pacemaker_remote on

    [guest]    /etc/init.d/pacemaker_remote start

    4.4.3 认证设置

    [one]      dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1

    将生成的authkey拷贝至所有的节点,包括实体机与虚拟机.节点中可能没有/etc/pacemaekr文件夹,行新建.

    4.4.4 创建虚拟机resource

    第一步在特定虚拟机所在的实体节点上执行.

    [kvm-host] virsh dumpxml vnio006 > /root/vnio006.xml

    [one]      pcs resource create vm-vnio006 VirtualDomain hypervisor="qemu:///system" config="/root/vnio006.xml" meta remote-node=vnio006 --disabled

    [one]      pcs constraint location vm-vnio006 prefers nio006=500 nio005=100

    [one]      pcs resource enable vm-vnio006

    4.4.5 创建lwfsd资源

    当虚拟机及其内的pacemaker_remote服务均启动后,用pcs status验证虚拟机作为节点(container)包括在集群中后,执行如下命令,中的资源名称与虚拟机主机名据具体情况更改.

    [one]      pcs resource create lwfsd-vnio006 ocf:heartbeat:lwfsd vhost=vnio006

    [one]      pcs constraint location lwfsd-vnio006 prefers vnio006=500

    [one]      pcs resource enable lwfsd-vnio006

    [one]      pcs constraint order start vm-vnio006 then start lwfsd-vnio006

    [one] pcs constraint order stop lwfsd-vnio006 then stop vm-vnio006

    [ONE,optional]  pcs resource update vm-vnio00 op start timeout=900

    5 高可用软件展示

  • 相关阅读:
    团队冲刺第四天
    团队冲刺第三天
    团队冲刺第二天
    团队冲刺第一天
    全球疫情地图显示
    团队博客——keep running视频+PPT介绍
    周总结7
    人月神话阅读笔记03
    Java枚举类型的使用,数值的二进制表示
    四则运算器
  • 原文地址:https://www.cnblogs.com/wangtao1993/p/5901690.html
Copyright © 2011-2022 走看看