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 高可用软件展示

  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/wangtao1993/p/5901690.html
Copyright © 2011-2022 走看看