zoukankan      html  css  js  c++  java
  • heartbeat+DRBD 高可用 双机热备

    heartbeat+DRBD 高可用 双机热备

    原创博文http://www.cnblogs.com/elvi/p/7658109.html

    ## heartbeat+DRBD 高可用 双机热备
    # 环境centos6 
    # 测试演练
    
    # 虚拟机添加10G硬盘
    # 添加网卡,作为数据传输
    #主机
    VIP 192.168.18.80
    web1
    192.168.18.11
    192.168.99.11(心跳线)
    192.168.100.11(数据传输)
    web2
    192.168.18.12
    192.168.99.12
    192.168.100.12
    vim /etc/sysconfig/network-scripts/ifcfg-eth2
    DEVICE="eth2"
    BOOTPROTO="static"
    IPADDR=192.168.100.12
    NETMASK=255.255.255.0
    ONBOOT="yes"
    #
    ifup eth2
    uname -r
    
    #关闭防火墙
    
    #分区
    #fdisk快速分区
    #echo -e "n
    p
    1
    +10G
    n
    p
    2
    
    +20G
    w" | fdisk /dev/sdb
    fdisk -l
    fdisk /dev/sdb
        p
        n
        1
        +8G
        2
        w
    #备节点、状态分区 不需要格式化
    mkfs.ext4 /dev/sdb1
    e2label /dev/sdb1 /data #给分区标签
     
    #
    #安装 DRBD
    rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
    yum install drbd kmod-drbd84 -y
    #内核加载
    lsmod |grep drbd
    modprobe drbd #加载DRBD模块到内核
    modprobe -l | grep -i drbd 
    echo "modprobe drbd" >>/etc/rc.local ##开机自动加载
    #yum install kernel-devel -y
    
    #模板
    ll /etc/drbd.d/
    #配置
    vim  /etc/drbd.conf
    global {
            usage-count no;
    }
    common {
           syncer {
                 rate 200M;
                 verify-alg crc32c;  
           }
    }
    resource webdata {
       protocol C;
    
       disk {
         on-io-error detach;
       }
       on web1 {
         device    /dev/drbd0; 
         disk      /dev/sdb1;
         address    192.168.100.11:7788;
         meta-disk /dev/sdb2[0];   
       }
       on web2 {
         device    /dev/drbd0;
         disk      /dev/sdb1;
         address    192.168.100.12:7788;
         meta-disk /dev/sdb2[0];  
      }
    }
    
    #drbd初始化与启动
    drbdadm create-md webdata
    drbdadm up webdata
    /etc/init.d/drbd start
    #将第一个节点置为primary
    drbdadm -- --overwrite-data-of-peer primary webdata
    #drbdsetup /dev/drbd0 primary -o
    
    #查看同步完成状态
    cat /proc/drbd 
    #磁盘挂载(仅primary节点),Secondary挂载需要先drbdadm down data -->mount /dev/sdb1 /data
    mkdir /data
    mount /dev/drbd0 /data
    df -l
    
    #验证同步
    #主节点创建文件
    echo $(date +%Y-%m-%d-%H%M%S)>>/data/test.txt
    cat /data/test.txt
    #备节点停用服务,挂载分区查看
    drbdadm down webdata
    mount /dev/sdb1 /data
    ll /data
    cat /data/test.txt
    #备节点启用
    umount /dev/sdb1
    drbdadm up webdata
    cat /proc/drbd
    
    #DRBD主备节点切换
    #主:卸载分区,设置为备节点
    umount /dev/drbd0
    drbdadm secondary webdata     #(all)
    #备:设置为主节点,挂载分区
    drbdadm primary webdata     #(all)
    mount /dev/drbd0 /data
    
    # DRBD脑裂后的处理
    #从节点上切换成secondary,并放弃该资源的数据:
    drbdadm secondary alldrbdadm -- --discard-my-data connect all
    drbdadm -- --overwrite-data-of-peer primary data #设置主节点同步数据到备节点
    #重新连接资源
    drbdadm down webdata
    drbdadm connect webdata
    drbdadm up webdata
    drbdadm primary all #主
    drbdadm secondary all #备
    
    #+ heartbeat高可用
    vim /etc/ha.d/haresources
    #web1 IPaddr::192.168.18.80/24/eth0 nginx
    web1 IPaddr::192.168.18.80/24/eth0 nginx drbddisk::webdata Filesystem::/dev/drbd0::/data::ext4 
    #主节点 ,解除磁盘挂载,重启heartbeat服务
    umount /dev/drbd0
    service heartbeat stop
    service heartbeat start
    #备节点启动heartbeat
    service heartbeat start
    #查看服务
    ip add | grep eth0
    mount|grep data
    cat /proc/drbd
    
    #主备切换验证
    service heartbeat stop #主,停止服务
    #查看备节点服务
    ip add | grep eth0
    mount|grep data
    cat /proc/drbd
    service heartbeat restart #主,启动服务
    
    #备节点实际容量变小调整
    /etc/init.d/drbd stop
    e2fsck -f /dev/sdb1
    resize2fs /dev/sdb1
    
    #增加主机测试(主备/usr/share/nginx/html主页文件不同)
    ln -s /usr/share/nginx/html /data/html
    vim /etc/nginx/conf.d/test.conf
    server {
    listen 80;
    server_name test.com;
    location / {
        root /data/html;
        index index.html index.htm index.php;
            }
        }
    #重启服务
    service heartbeat stop
    service heartbeat start
    #本机访问,修改本机hosts文件C:WindowsSystem32driversetc
    192.168.18.80 test.com
    #浏览器访问域名 test.com
    
    ##NFS
    #服务端配置
    mkdir /data/share
    #vim /etc/exports
    echo "/data/share 192.168.18.0/24(rw,no_root_squash)">>/etc/exports
    /etc/init.d/rpcbind restart
    /etc/init.d/nfs restart
    #客户端
    showmount -e 192.168.18.80 #查看共享
    service rpcbind start
    mkdir -p /data/share
    umount /data/share
    mount -t nfs 192.168.18.80:/data/share /data/share
    #查看测试
    mount|grep /data/share
    echo $(date +%Y-%m-%d-%H%M%S)>>/data/share/nfs.txt
    cat /data/share/nfs.txt
    ##开机挂载
    echo "192.168.18.80:/data/share /data/share nfs defaults 0 0">>/etc/fstab
    
    #heartbeat+drbd+nfs配置
    vim /etc/ha.d/haresources
    web1 IPaddr::192.168.18.80/24/eth0 nginx drbddisk::webdata Filesystem::/dev/drbd0::/data::ext4 nfs
    showmount -e localhost
    #主备切换验证 ……  
    
    mount|grep /data/share
    echo $(date +%Y-%m-%d-%H%M%S)>>/data/share/nfs.txt
    cat /data/share/nfs.txt
    showmount -e localhost
    
    mount|grep data
    ip add | grep eth0
    cat /proc/drbd
    
    service heartbeat stop
    service heartbeat start
    service heartbeat restart
    
    
    # 参考
    #http:
    //blog.csdn.net/lt53130640688/article/details/50152615 #http://www.cnblogs.com/wsl222000/p/5777382.html
  • 相关阅读:
    element ui 表单清空
    element ui 覆盖样式 方法
    element ui 修改表单值 提交无效
    element ui 抽屉里的表单输入框无法修改值
    element ui 抽屉首次显示 闪烁
    css 左侧高度 跟随右侧内容高度 自适应
    PICNUF框架
    elementui 抽屉组件标题 出现黑色边框
    vue 子组件跨多层调用父组件中方法
    vue 编辑table 数据 未点击提交,table里的数据就发生了改变(深拷贝处理)
  • 原文地址:https://www.cnblogs.com/elvi/p/7658109.html
Copyright © 2011-2022 走看看