免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yuhongchun

[讨论]论DRBD+Heartbeat+MySQL在生产环境下的可实施性(获奖名单已公布-2012-7-13) [复制链接]

论坛徽章:
0
发表于 2012-06-04 15:03 |显示全部楼层
本帖最后由 sacry 于 2012-06-04 15:24 编辑

关于资源浪费的话,利用gfs实现读写分离应该是个不错的主意。
又或者同时高可用其他资源,实现N-to-N集群。

关于脑裂,应该是无法绝对避免,
但可以通过增加冗余心跳,或者使用STONITH设备。
PS:好像在SUSE的guilde的看到过“不会对未使用STONITH的集群进行技术支持“这样的说法。

-----------------------------------------------------------------------

额,借地提问下。
想去ML里去提问的,但是英语苦手使得拖延症加重,结果到现在还是没搞明白。

在我的测试环境里,使用heartbeat时,STONITH的结果会变得很奇怪。
比如ABC3个节点,目前A是DC节点,切断A和BC的通信,期待自然的是A被BC给强制关机。
但是实际结果有很多很多的可能性,
其中比较常见的结果是,Ashoot掉BC中的一个比如B,然后留下了不能通信的A和C...
PS:quorum是启动状态,所以会不继续shoot,不然通常就是只会留下A或者C。
PPS:测试环境,使用的是external/ssh,但是应该不是主要原因。

通过看日志,感觉有点像是多播广播本身的劣势,各台机器对于"A和BC通信切断"这个问题的观察的不统一。
使用corosync作为通信层的话,就没有这个问题了...

-----------------------------------------------------------------------

编辑下,追加个无聊的小问题。

其实现在一般应该说pacemaker集群吧,毕竟heartbeat本身只作为通信层,可以用corosync取代。
难道现在主流还在用2.14之前的heartbeat吗?

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
发表于 2012-06-04 15:26 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-06-04 22:51 |显示全部楼层
本帖最后由 zhujinzz 于 2012-06-04 22:56 编辑

冲着奖品,必须发一个:
1、生产环境下究竟能否用DRBD+Heartbeat作为MySQL高可用方案。
   1.1 在硬件资源宽裕的情况下,根据业务的需求来实施方案,读写要求不是非常高的情况,完全可以使用。
   1.2其实还可以配合mysql的replication来做
((heartbeat+drbd))+mysql replication,可分别跑ha+drbd(主/从),单机mysql(从/主)

2、生产环境下使用DRBD+Heartbeat的注意事项。
    2.1 heartbeat,drbd版本选择,我用过的是heartbeat3,drbd8.4
    2.2 心跳网络与vip服务网络分离(有测试过vip与心跳跑在同一个网卡的),
    2.3 iptables针对心跳网络放开drbd,heartbeat的端口,vip可根据自己的应用开启对应端口
    2.4 drbd可能会造成坏数据。不管啥HA,数据备份一定要有,没备份,整个HA瘫痪掉,你也嗝屁了,闪人吧
    2.5 监控drbd,heartbeat状态,最好做成脚本,自动检测,出问题报警
    2.6 通常都有流量监控系统(mrtg,cacti等),定期检查机器的负载,流量情况!
     mysql优化啥的.......

3、Heartbeat的“脑裂”问题如何规避。
    3.1 heartbeat 本身就有stonish(fence):ibmrsa,ibmrsa-telnet,ipmi
    3.2 监控心跳网络
    3.3 监控drbd状态,下面是从drbd官方文档摘录下来的,split brain造成drbd的节点出现StandAlone或者WFConnection状态
    After split brain has been detected, one node will always have the resource in a StandAlone connection state. The other might either also be in the StandAlone state (if both nodes detected the split brain simultaneously), or in WFConnection (if the peer tore down the connection before the other node had a chance to detect split brain).

论坛徽章:
0
发表于 2012-06-05 01:06 |显示全部楼层
一般的HA,浪费一台机器是很正常的,这样才能体现所有的业务能够在单个机器上稳定可靠运行。而且这样的HA应该定期切换到另一台机器来运行,比如按半年一次来交替使用。

数据量不是非常大的机器MYSQL数据库,完全可以使用drbd来实现,数据镜像可以通过走万兆的网卡来实现。服务器配置大缓存的带RAID卡 如hp 1G fbwc,硬盘配置 raid10模式

论坛徽章:
0
发表于 2012-06-05 09:33 |显示全部楼层
我最近也在折腾这个东西,我的课题是xen+pacemaker+drbd实现双节点备援,PV DomU的双节点自动切换很容易达成,但是HVM DomU的备援没有完成。HVM DomU采用的是迂回策略,结合clvm+gfs2来保证两个节点数据在都是master的情况下一致,个人认为既然两边的数据能保证完全一致,HVM DomU的备援应当没有问题,但是遗憾的是,利用crm控制台切换时,不能成功,它会在原节点上开始迁移,但是很快会失败,并在原节点重启这个DomU服务,不知道大家有何高见。另外单机上利用do dd if=/dev/zero of=/root/bigfile bs=512M count=2 oflag=direct,磁盘能达到120M/s,而在drbd设备上则降为40M/s(千兆网),这个下降大惊人了,即便使用gfs2,也没有改善,何解?以下是我的日志,请大家赐教


Xen,DRBD,Openais,Pacemaker,Corosync On Debian 6.0 For Two-node Clusters Fail-over
        By Wang Xiantong,xiantong at gmail dot com
date:2012.4.18


Dom0
首先安装hypervisor,xen kernel,xen-tools,xen-docs
# apt-get install xen-hypervisor-4.0-amd64 linux-image-xen-amd64 -y
# apt-get install xen-docs-4.0

Caution: 如果是32位系统,请安装相应的32版本
# apt-install xen-hypervisor-4.0-i386 linux-image-xen-686

稍后我们会运行win系统DomU,所以必须要HVM支持
# apt-get install xen-qemu-dm-4.0 -y


Debian 6.0(squeeze)采用grub2,让系统默认从刚刚安装的xen内核引导
# mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux
# update-grub2

禁止Dom0系统探测其它卷的引导记录,这将防止grub引导菜单添加系统卷上DomU的引导内核,当然如果主机是多引导的,如windows也将被禁止
# echo "" >> /etc/default/grub
# echo "# Disable OS prober to prevent virtual machines on logical volumes from appearing in the boot menu." >> /etc/default/grub
# echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub
# update-grub2

默认情况下,dom0关机或重启会尝试保存正在运行的domU状态,有时这一特性会导致问题,关闭这一特性,修改/etc/default/xendomains
XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=""
# sed -i.bak "s/^XENDOMAINS_RESTORE.*/XENDOMAINS_RESTORE=false/g" /etc/default/xendomains
# sed -i.bak "s/^XENDOMAINS_SAVE.*/XENDOMAINS_SAVE=""/g" /etc/default/xendomains
# scp /etc/default/xendomains 192.168.1.16:/etc/default/

修改/etc/xen/xend-config.sxp,以启用network bridge
(network-script 'network-bridge antispoof=yes')
antispoof=yes将激活dom0防火墙以防止domU使用dom0不允许使用的IP做为地址,比如domU使用网关作为其IP,这可能会引起网络混乱。另外这一功能还需要在domU的配置文件中指定domUIP,比如:
vif = ['vifname=vbox1,ip=192.168.1.50']
这将决定domU只能使用192.168.1.50这个IP,使用其它IP,将会被dom0的防火墙阻止
(network-script network-bridge)默认就打开了这个功能,如果关闭这一功能,则更改为
(network-script 'network-bridge antispoof=no')

打开migration功能,修改/etc/xen/xend-config.sxp中的以下参数
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts-allow '192.168.1.15 192.168.1.16')

# sed -i.bak "s/.*(network-script network-bridge)$/(network-script network-bridge)/g" /etc/xen/xend-config.sxp
# sed -i.bak "s/^#(xend-relocation-server no)$/(xend-relocation-server yes)/g" /etc/xen/xend-config.sxp
# sed -i.bak "s/^#(xend-relocation-port 8002)$/(xend-relocation-port 8002)/g" /etc/xen/xend-config.sxp
# sed -i.bak "s/^#(xend-relocation-address '')$/(xend-relocation-address '')/g" /etc/xen/xend-config.sxp
# sed -i.bak "s/^#(xend-relocation-hosts-allow '')$/(xend-relocation-hosts-allow '192.168.1.15 192.168.1.16')/g" /etc/xen/xend-config.sxp
# scp /etc/xen/xend-config.sxp 192.168.1.16:/etc/xen/


修改/etc/hosts,添加
192.168.1.15    vbox1
192.168.1.16    vbox2

# cat >/etc/hosts<<-EOF
127.0.0.1       localhost
192.168.1.15    vbox1
192.168.1.16    vbox2

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF

# scp /etc/hosts 192.168.1.16:/etc/
# ssh vbox2 -- reboot
# reboot && exit

以上Dom0的安装及参数调整,同时应用于vbox1(192.168.1.15)和vbox2(192.168.1.16)

DRBD
# apt-get install drbd8-utils
# ssh vbox2 -- apt-get install drbd8-utils
# lvcreate -L8G -n mail_root vg1
# lvcreate -L100G -n mail_var vg1
# lvcreate -L2G -n mail_swap vg1

# ssh vbox2 -- apt-get install drbd8-utils
# ssh vbox2 -- lvcreate -L8G -n mail_root vg1
# ssh vbox2 -- lvcreate -L100G -n mail_var vg1
# ssh vbox2 -- lvcreate -L2G -n mail_swap vg1

# cat >/etc/drbd.d/mail.res<<-EOF
resource mail_root {
        on vbox1 {
                device          /dev/drbd0;
                disk            /dev/vg1/mail_root;
                address         192.168.1.15:7790;
                meta-disk       internal;
        }
        on vbox2 {
                device          /dev/drbd0;
                disk            /dev/vg1/mail_root;
                address         192.168.1.16:7790;
                meta-disk       internal;
        }
        net {
                allow-two-primaries;
        }
        syncer {
                verify-alg md5;
        }
}

resource mail_var {
        on vbox1 {
                device          /dev/drbd1;
                disk            /dev/vg1/mail_var;
                address         192.168.1.15:7791;
                meta-disk       internal;
        }
        on vbox2 {
                device          /dev/drbd1;
                disk            /dev/vg1/mail_var;
                address         192.168.1.16:7791;
                meta-disk       internal;
        }
        net {
                allow-two-primaries;
        }
        syncer {
                verify-alg md5;
        }
}

resource mail_swap {
        on vbox1 {
                device          /dev/drbd2;
                disk            /dev/vg1/mail_swap;
                address         192.168.1.15:7792;
                meta-disk       internal;
        }
        on vbox2 {
                device          /dev/drbd2;
                disk            /dev/vg1/mail_swap;
                address         192.168.1.16:7792;
                meta-disk       internal;
        }
        net {
                allow-two-primaries;
        }
        syncer {
                verify-alg md5;
        }
}
EOF

把该文件同步到vbox2
# scp /etc/drbd.d/mail.res vbox2:/etc/drbd.d/
# /etc/init.d/drbd start (vbox1,vbox2两上节点都要运行)

Create device metadata. This step must be completed only on initial device creation. It initializes DRBD's metadata
# drbdadm create-md mail_root
# drbdadm create-md mail_var
# drbdadm create-md mail_swap

# ssh vbox2 -- drbdadm create-md mail_root <<<yes
# ssh vbox2 -- drbdadm create-md mail_var <<<yes
# ssh vbox2 -- drbdadm create-md mail_swap <<<yes

Attach to backing device. This step associates the DRBD resource with its backing device:
# drbdadm attach mail_root
# drbaddm attach mail_var
# drbdadm attach mail_swap
Set synchronization parameters. This step sets synchronization parameters for the DRBD resource
# drbdadm syncer mail_root
# drbdadm syncer mail_var
# drbdadm syncer mail_swap
Connect to peer. This step connects the DRBD resource with its counterpart on the peer node
# drbdadm connect mail_root
# drbdadm connect mail_var
# drbdadm connect mail_swap

# ssh vbox2 -- drbdadm up mail_root
# ssh vbox2 -- drbdadm up mail_var
# ssh vbox2 -- drbdadm up mail_swap

TIP: You may collapse the steps drbdadm attach, drbdadm syncer, and drbdadm connect into one, by using the shorthand command drbdadm up
# cat /proc/drbd

Select an initial sync source. If you are dealing with newly-initialized, empty disk, this choice is entirely arbitrary. If one of your nodes already has valuable data that you need to preserve, however, it is of crucial importance that you select that node as your synchronization source. If you do initial device synchronization in the wrong direction, you will lose that data. Exercise caution.
Start the initial full synchronization. This step must be performed on only one node, only on initial resource configuration, and only on the node you selected as the synchronization source. To perform this step, issue this command:

# drbdadm -- --overwrite-data-of-peer primary mail_root
# drbdadm -- --overwrite-data-of-peer primary mail_var
# drbdadm -- --overwrite-data-of-peer primary mail_swap

# drbdsetup /dev/drbd0 syncer -r 110M
# drbdsetup /dev/drbd1 syncer -r 110M
# drbdsetup /dev/drbd2 syncer -r 110M

# cat /proc/drbd
以上命令和文件配置,除特别注明处,都要在vbox2和vbox2上执行

# mkfs.ext3 /dev/drbd0
# mkfs.ext3 /dev/drbd1
# mkswap /dev/drbd2

PV DomU
xen的一大特色就是采用了PV半虚拟技术,这一方面提高了性能,另一方面让硬件不支持虚拟的实现虚拟化成为可能,安装DomU的方法有很多,这里演示最容易的最可靠的安装方法
# wget http://mirrors.163.com/debian/di ... netboot/xen/vmlinuz
# wget http://mirrors.163.com/debian/di ... tboot/xen/initrd.gz

# cat /etc/xen/scripts/hotplugpath.sh
#!/bin/bash
#
# CAUTION: this script is manually created
# see: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=591456
# it should go away with xen-common 4.1.0~rc6-1
#
SBINDIR="/usr/sbin"
BINDIR="/usr/bin"
#LIBEXEC="/usr/lib/xen/bin"
LIBEXEC="/usr/lib/xen-4.0/bin"
LIBDIR="/usr/lib64"
#LIBDIR="/usr/lib"
SHAREDIR="/usr/share"
PRIVATE_BINDIR="/usr/lib64/xen-4.0/bin"
#PRIVATE_BINDIR="/usr/lib/xen-4.0/bin"
#XENFIRMWAREDIR="/usr/lib/xen/boot"
XENFIRMWAREDIR="/usr/lib/xen-4.0/boot"
XEN_CONFIG_DIR="/etc/xen"
XEN_SCRIPT_DIR="/etc/xen/scripts"

# scp /etc/xen/scripts/hotplugpath.sh vbox2:/etc/xen/scripts/

Caution:注意hotplugpath.sh这个文件,debian6没有打包进来,必须手动建立,否则xen不能处理DomU中drbd:mail_root格式的磁盘格式
创建DomU mail的配置文件/etc/xen/mail
# cat /etc/xen/mail
name = "mail"
memory = "1024"
disk = ['drbd:mail_root,xvda,w','drbd:mail_var,xvdb,w','drbd:mail_swap,xvdc,w']
#disk = ['phy:/dev/drbd0,xvda,w','phy:/dev/drbd1,xvdb,w','phy:/dev/drbd2,xvdc,w']
kernel = "/tmp/vmlinuz"
ramdisk = "/tmp/initrd.gz"
vif = ['vifname=mail,ip=192.168.1.21']
on_reboot = 'restart'
on_crash = 'destroy'

# xm create mail -c
象真机一样安装,注意分区的时候用现成的分区,不要破坏分区结构,可以格式化,安装完成之后,domU会自动重启,另外domU的IP地址必须设定为domU配置文件中设定的192.168.1.21,不然将不能联网
# xm destroy mail
修改 /etc/xen/mail
name = "mail"
memory = "1024"
disk = ['drbd:mail_root,xvda,w','drbd:mail_var,xvdb,w','drbd:mail_swap,xvdc,w']
#disk = ['phy:/dev/drbd0,xvda,w','phy:/dev/drbd1,xvdb,w','phy:/dev/drbd2,xvdc,w']
bootloader = "/usr/bin/pygrub"
vif = ['vifname=mail,ip=192.168.1.21']
on_reboot = 'restart'
on_crash = 'destroy'

# xm create mail -c
# scp /etc/xen/mail vbox2:/etc/xen/

# xm migrate --live mail vbox2

Corosync and Pacemaker
# echo "deb http://backports.debian.org/debian-backports squeeze-backports main">>/etc/apt/sources.list
# scp /etc/apt/sources.list vbox2:/etc/apt/
# apt-get update
# ssh vbox2 -- apt-get update
# apt-get -t squeeze-backports install pacemaker corosync dlm-pcmk gfs-pcmk gfs2-tools clvm -y
# ssh vbox2 -- apt-get -t squeeze-backports install pacemaker corosync dlm-pcmk gfs-pcmk gfs2-tools clvm -y
修改/etc/corosync/corosync.conf,添加或修改如下
compatibility: whitetank

interface {
                # The following values need to be set based on your environment
                ringnumber: 0
                bindnetaddr: 192.168.1.0
                mcastaddr: 226.94.1.1
                mcastport: 5405
        }
service {
        # Load the Pacemaker Cluster Resource Manager
        ver:       0
        name:      pacemaker
        clustername:    mycluster
}

aisexec {
        user:   root
        group:  root
}
修改/etc/default/corosync
START=yes

# for f in /etc/corosync/corosync.conf /etc/default/corosync; do scp $f vbox2f; done

/etc/corosync/authkey (此文件需要分发到各节点,各节点共用同一份authkey)

远程登录时,利用corosync-keygen生成authkey,可以通过产生io操作来较有效产生entropy, 如 dd if=/dev/zero of=bigfile count=51200 bs=10240(执行多次)
# for i in $(seq 20); do dd if=/dev/zero of=/root/bigfile bs=512M count=2 oflag=direct; done
# corosync-keygen
# chmod 400 /etc/corosync/authkey
# scp /etc/corosync/authkey vbox2:/etc/corosync/
# ssh vbox2 -- chmod 400 /etc/corosync/authkey


# /etc/init.d/corosync start (vbox1,vbox2两个结点)
# crm status
============
Last updated: Fri May 25 15:22:43 2012
Last change: Fri May 25 15:07:02 2012 via crmd on vbox1
Stack: openais
Current DC: vbox1 - partition with quorum
Version: 1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c
2 Nodes configured, 2 expected votes
0 Resources configured.
============

Online: [ vbox1 vbox2 ]

# crm
crm(live)# configure
crm(live)configure#
crm(live)configure# property stonith-enabled=false
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# commit


crm(live)configure#primitive mail ocf:heartbeat:Xen \
        params xmfile="/etc/xen/mail" \
        op monitor interval="10s" \
        op start interval="0s" timeout="30s" \
        op stop interval="0s" timeout="300s" \
        meta allow-migrate="true" target-role="Started"
crm(live)configure# commit
crm(live)configure# exit

# crm resource move mail vbox2
# crm status
============
Last updated: Fri May 25 15:36:05 2012
Last change: Fri May 25 15:35:39 2012 via crm_resource on vbox1
Stack: openais
Current DC: vbox1 - partition with quorum
Version: 1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ vbox1 vbox2 ]

mail   (ocf::heartbeat:Xen):   Started vbox2

HVM DomU
修改 /etc/lvm/lvm.conf
locking_type = 3
# filtering for DRBD:
filter = [ "a|drbd.*|", "a|sda.*|", "r|.*|" ]
# scp /etc/lvm/lvm.conf vbox2:/etc/lvm/

# lvcreate -L200G -ngfs2mirror vg1
# ssh vbox2 -- lvcreate -L200G -ngfs2mirror vg1
建立/etc/drbd.d/gfs2mirror.res
resource gfs2mirror {
        on vbox1 {
                device          /dev/drbd10;
                disk            /dev/vg1/gfs2mirror;
                address         192.168.1.15:7800;
                meta-disk       internal;
        }
        on vbox2 {
                device          /dev/drbd10;
                disk            /dev/vg1/gfs2mirror;
                address         192.168.1.16:7800;
                meta-disk       internal;
        }
        net {
                allow-two-primaries;
                after-sb-0pri discard-zero-changes;
                after-sb-1pri discard-secondary;
                after-sb-2pri disconnect;
        }
        syncer {
                verify-alg md5;
        }
        startup {
                become-primary-on both;
        }
}

# scp /etc/drbd.d/gfs2mirror.res vbox2 -- /etc/drbd.d/
# drbdadm create-md gfs2mirror
# ssh vbox2 -- drbdadm create-md gfs2mirror <<<yes
# drbdadm up gfs2mirror
# ssh vbox2 -- drbdadm up gfs2mirror
# drbdadm -- --overwrite-data-of-peer primary gfs2mirror
# drbdsetup /dev/drbd10 syncer -r 110M
# ssh vbox2 -- drbdadm primary gfs2mirror

# mkfs.gfs2 -p lock_dlm -j 2 -t pcmk:gfs2mirror /dev/drbd/by-res/gfs2mirror

primitive p_drbd_gfs2mirror ocf:linbit:drbd \
        params drbd_resource="gfs2mirror" \
        op monitor interval="10" role="Master" \
        op monitor interval="30" role="Slave"
ms ms_drbd_gfs2mirror p_drbd_gfs2mirror \
         meta notify="true" master-max="2" interleave="true"
primitive p_controld ocf:pacemaker:controld \
        params daemon="dlm_controld.pcmk" \
        op start interval="0" timeout="90" \
        op stop interval="0" timeout="100" \
        op monitor interval="10"
primitive p_gfs2_controld ocf:pacemaker:controld \
        params daemon="gfs_controld.pcmk" \
        op start interval="0" timeout="90" \
        op stop interval="0" timeout="100" \
        op monitor interval="10"
group g_gfs2mgmt p_controld p_gfs2_controld
clone cl_gfs2mgmt g_gfs2mgmt \
        meta interleave="true"
primitive p_fs_gfs2mirror ocf:heartbeat:Filesystem \
        params device="/dev/drbd/by-res/gfs2mirror" directory="/gfs2mirror" fstype="gfs2" options="rw,noatime"
clone cl_fs_gfs2mirror p_fs_gfs2mirror \
        meta target-role="Started"

colocation c_gfs2mirror inf: cl_fs_gfs2mirror cl_gfs2mgmt ms_drbd_gfs2mirror:Master
order o_gfs2mirror inf: ms_drbd_gfs2mirror:promote cl_gfs2mgmt:start cl_fs_gfs2mirror:start

# service corosync restart
# ssh vbox2 -- corosync restart

# mkdir /gfs2mirror/{image,iso,xen}
创建/gfs2mirror/xen/ad1

kernel='/usr/lib/xen-4.0/boot/hvmloader'
builder='hvm'
name='ad1'
device_model='/usr/lib/xen-4.0/bin/qemu-dm'
disk=['file:/gfs2mirror/image/ad1.img,hda,w','file:/gfs2mirror/iso/en_windows_server_2008_datacenter_enterprise_standard_sp2_x86_dvd_342333.iso,hdc:cdrom,r']
#disk=['file:/gfs2mirror/image/ad1.img,hda,w']
boot='dc'
#boot='c'
memory='2048'
shadow_memory='8'
vcpus=1
#vif=['type=ioemu,model=e1000,mac=00:21:41:e2:31:04,bridge=eth0']
vif=['type=ioemu,mac=00:21:41:e2:31:04,bridge=eth0']
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'
vnc=1
vnclisten='0.0.0.0'
vncdisplay=0
vncunused=1
vncpasswd='pass'

# ln -s /gfs2mirror/xen/ad1 /etc/xen/ad1
# ssh vbox2 -- ln -s /gfs2mirror/xen/ad1 /etc/xen/ad1

制作HVM硬盘镜像文件
# qemu-img create -f raw /gfs2mirror/image/ad1.img 50G
# ls /gfs2mirror/image -l
total 4
-rw-r--r-- 1 root root 53687091200 May 25 17:10 ad1.img
# du /gfs2mirror/image
8       /gfs2mirror/image

# xm create ad1
vncviewer远程安装系统,完成后,修改/gfs2mirror/xen/ad1
kernel='/usr/lib/xen-4.0/boot/hvmloader'
builder='hvm'
name='ad1'
device_model='/usr/lib/xen-4.0/bin/qemu-dm'
#disk=['file:/gfs2mirror/image/ad1.img,hda,w','file:/gfs2mirror/iso/en_windows_server_2008_datacenter_enterprise_standard_sp2_x86_dvd_342333.iso,hdc:cdrom,r']
disk=['file:/gfs2mirror/image/ad1.img,hda,w']
#boot='dc'
boot='c'
memory='2048'
shadow_memory='8'
vcpus=1
#vif=['type=ioemu,model=e1000,mac=00:21:41:e2:31:04,bridge=eth0']
vif=['type=ioemu,mac=00:21:41:e2:31:04,bridge=eth0']
on_poweroff='destroy'
on_reboot='restart'
on_crash='restart'
vnc=1
vnclisten='0.0.0.0'
vncdisplay=0
vncunused=1
vncpasswd='pass'

primitive ad1 ocf:heartbeat:Xen \
        params xmfile="/gfs2mirror/xen/ad1" \
        op monitor interval="10s" \
        op start interval="0s" timeout="30s" \
        op stop interval="0s" timeout="300s" \
        meta allow-migrate="true" target-role="Started"

注:HVM在线迁移失败,此法似乎不可行,HVM DomU迁移失败,并且在原来节点重新启动,但是HVM DomU不纳入pacemaker管理,用xm做在线迁移,却是成功的



论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
发表于 2012-06-05 09:44 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-06-05 09:49 |显示全部楼层
大家给力~干货比较多啊。大家继续分享啊

论坛徽章:
0
发表于 2012-06-05 09:51 |显示全部楼层
yuhongchun 发表于 2012-06-05 09:44
有心了。
2.4 drbd可能会造成坏数据。不管啥HA,数据备份一定要有,没备份,整个HA瘫痪掉,你也嗝屁了 ...

这要看你怎么用,比如你用单独一台做存储,并对存储应用drbd做同步,写操作只应用在primary的存储上,当primary 挂了的时候,secondary 应该会有一份完整的数据备份, 采用protocal C

论坛徽章:
1
摩羯座
日期:2015-01-08 14:01:55
发表于 2012-06-05 09:52 |显示全部楼层
这个得好好学习下

论坛徽章:
0
发表于 2012-06-05 10:12 |显示全部楼层
本帖最后由 root_wxt 于 2012-06-05 10:15 编辑

既然drbd设备的速度下降到40M/s,改用10G的网络环境应该会得到提升,可惜没有10G的网络环境,无法测试,所以很自然的想到了bonding,于是我在vbox1和vbox2的Dom0主机上各增加一块千兆网卡,采用active-backup模式,效果很好,随机关闭eth0或eth1系统不间断运行,此模式表现良好,提高可靠性可以采用此模式,但我想倍增网络带宽,可惜的是采用其它几种模式都不能达到增加带宽的目的,速度不是等于active-bakup,就是低于它(模式4要交换机支持,未测试)。很晕,bonding高手,现身说个法?以下是基本安装记录:
图乱了,图大家可以参考:http://wiki.xen.org/wiki/Xen_Networking
Xen Networking with bonding for Debian Squeeze setting

              PRT0 PRT1                       PRT2 PRT3
                |   |                           |   |
+--------------+---+---------------------------+---+--------------+
|              |   |                           |   |              |
|            eth0 eth1                       eth2 eth3            |
|              |   |                           |   |              |
|              +-+-+                           +-+-+              |
|                |                               |                |
| +--------------+--------------+ +--------------+--------------+ |
| |              |              | |              |              | |
| |            bond0            | |            bond1            | |
| |                             | |                             | |
| | xenbr0       vif1.0  vif1.1 | |  vif2.0  vif2.1      xenbr1 | |
| |                |       \    | |    /       |                | |
| +---^------------+---------\--+ +--/---------+------------^---+ |
|     |            |           \   /           |            |     |
|     |     +------+-------------X-------------+------+     |     |
|     |     |      |           /   \           |      |     |     |
|     |     | +----+---------/--+ +--\---------+----+ |     |     |
|     |     | |    |       /    | |    \       |    | |     |     |
|     |     | |  eth0    eth1   | |   eth0   eth1   | |     |     |
|     |     | |    |       |    | |    |       |    | |     |     |
|   +-+-+   | |  +-+-+   +-+-+  | |  +-+-+   +-+-+  | |   +-+-+   |
|   |   |   | |  |   |   |   |  | |  |   |   |   |  | |   |   |   |
|  www ssh  | | www ssh ftp pop | | www ssh ftp pop | |  ftp pop  |
|           | |                 | |                 | |           |
|  Domain0  | |     Domain1     | |     Domain2     | |  Domain0  |
+-----------+ +-----------------+ +-----------------+ +-----------+
# apt-get install ifenslave-2.6

配置网卡
bonding采用active-backup模式
修改/etc/network/interfaces
auto bond0
iface bond0 inet static
        address 192.168.1.15
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        bond-mode active-backup
        bond_miimon 100
        bond_downdelay 200
        bond_updelay 200
        slaves eth0 eth1
auto xenbr0
iface xenbr0 inet static
        bridge_ports bond0
        address 192.168.1.15
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 61.177.7.1
# service networking restart
配置/etc/xen/xend-config.sxp
注释掉(network-script network-bridge),不允许系统自动桥接,否则系统会冲突
PV DomU的网卡配置
vif = ['vifname=mail,ip=192.168.1.21,bridge=xenbr0']

以下是bonding的几种模式,一并列出来,供参考
mode=0 (balance-rr)
Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.

mode=1 (active-backup)  

One slave interface is active at any time. If one interface fails, another interface takes over the MAC address and becomes the active interface. Provides fault tolerance only. Doesn’t require special switch support

mode=2 (balance-xor)  

Tranmissions are balanced across the slave interfaces based on ((source MAC) XOR (dest MAC)) modula slave count. The same slave is selected for each destination MAC. Provides load balancing and fault tolerance.

mode=3 (broadcast)  

Transmits everything on all slave interfaces. Provides fault tolerance.

mode=4 (802.3ad)  

This is classic IEEE 802.3ad Dynamic link aggregation. This requires 802.3ad support in the switch and driver support for retrieving the speed and duplex of each slave.

mode=5 (balance-tlb)  

Adaptive Transmit Load Balancing. Incoming traffic is received on the active slave only, outgoing traffic is distributed according to the current load on each slave. Doesn’t require special switch support

mode=6 (balance-alb)  

Adaptive Load Balancing - provides both transmit load balancing (TLB) and receive load balancing for IPv4 via ARP negotiation. Doesn’t require special switch support, but does require the ability to change the MAC address of a device while it is open.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP