Tag Archive - drbd

New cluster to be deploye…

@pacharest: New cluster to be deployed very soon. #VMWARE & #SMART_NETWORK (#PUPPET #DRBD #ZABBIX #SNORT)

Cutting-edge of Cloud Computing

Just got off the bus in Montreal, Québec. This is a lightning visit, in 48 hours, I’ll be back in my office in Ottawa. But, right now, I’m taking a drink in one of my favorite downtown coffee shop and I’m planning.

The next few hours will see little sleep and lots of action ; More precisely I’ll be deploying lots of hardware (2 IBM SAN, 2 core servers, 2 switchs, 2 APC, 5 branchs servers – supporting up to 20 ‘leaf’/virtual servers), and then somes (3 couples of 2 systems in high redundancy (wackamole IP ‘fencing’, shared-storage through DRBD). All that will go in ‘my’ new 48U cage @Hypertec (old nortel building) to act as a demo for some clients.

Once that’s completed, the true fun start: A very big part of this infrastructure is going to be self-healing, failure resitant and high performance. We are speaking of :

  • automatic & dynamic launch of new ‘branch’ systems (xen dom0), without having to do anything more than to rack them (no OS install needed, can be upgraded by rebooting them),
  • high redundancy at the leaf level (xen domU, automatic migration toward less used dom0),
  • failure resistace through bonded interface, multi-path & multi-host fiberchannel SAN & controller…
  • This is going to be solid, scalable, fast : the holy grail of a lot of service provider that are aiming at automatization of their ‘hosting’ business. The result of a lot of planning and testing ; the cutting-edge of cloud-computing.

    It is clichée – I know.

    I know it is so much of a cliché to write a blog post about why you haven’t update in quite some times – but I can’t stand not writing anything.

    Putting so much time in my enterprise (Les Laboratoires Phoenix) also took me away from some very interesting project ; such as DRBD-8.3 releases. It now allows stacked resources – meaning that you can have 3 (maybe more?) nodes in your setup. This is a very good news and make this release the next thing that goes through my labs.

    There is so much to do! Got at least 3 big projects for cloudweavers, the social/community aspect of my corp. Haven’t had any time to draft some press release but just yesterday, 2 lucky dev. got free access to brand new servers – for their apps, sites, and codes. I am now hosting around 6 projects on those servers and it will be growing very fast next month.

    Btw, there’s going to be a new photos posted today. Garanti ou argent remis!

    drbd_selector.sh

    Here is a quick bash code snippet. It allows the execution of code/scripts on a server with a Primary drbd array.

    It does not take into account that there can be more than one array, or that split-brain scenario exist, or that the script might be not-executable, or …

    I’m really posting that because I get to use it quite often and always forget ‘how I did it last time’… the search function on this blog is kinda nice ;-).

    if [ $(grep st:Primary /proc/drbd | wc -l) = 1 ] ;
    then $@ ;
    fi

    glusterfs & synchronous data storage

    Labs: installation & configuration of GlusterFS as synchronous data storage solution.
    By: Pascal Charest, Freesoftware consultant
    Date: September, 2008.

    Synchronization of files in a cloud environment is a challenge in the path of high-{availability, performance}. From simple load balanced web sites to full-blown applications – some files always need to be in sync. Peoples, for simplicity, rely on asynchronous transfer (ie: rsync ), others deploy bigger solutions (ie: block device replication through DRBD or shared storage through AoE protocol & concurrency management with OCFSv2) or even go for the “lazy” “no-shared-storage” solution through NFS.

    To address this problem in the PraizedMedia software stack, I decided to give FUSE based GlusterFS a try. Awesome, really ! The technical knowledge to deploy a basic solution is very very low. The modularity of the program also help to have “something working right now”. This isn’t meant as a direct alternative to DRBD or a good SAN deployment but in my use case, it fit perfectly.

    In this lab, I will guide you through the installation of GlusterFS on 2 networked systems. They will be both used as “servers” & “client” for the GlusterFS filesystem. They will be sharing a directory (on both system : /var/production/brick), re-mounted as /var/production/static through GlusterFS. Any write I/O on this directory (of any client server) will be synchronized to the pool. This last feature is called “AFR” (for automatic file replication) and is a module (called a translator) to the GlusterFS file system.

    The specificity of my environment is around the file-locking management : I don’t need any. By design, the application will never try to write the same file twice on any of the server.

    #Installation of requirement (standard tools)
    apt-get install flex bison libfuse-dev linux-headaers-`uname -r` curl

    #download of the sources
    cd /usr/local/src/
    curl -O http://ftp.zresearch.com/pub/gluster/glusterfs/1.3/glusterfs-CURRENT.tar.gz
    tar zxf glusterfs-CURRENT.tar.gz


    # configure
    cd glusterfs-1.3.11
    ./configure --prefix=/usr/local/glusterfs-1.3.11
    make && make install
    ln -s /usr/local/glusterfs-1.3.11 /usr/local/glusterfs


    So we now have a basic 2 servers GlusterFS systems installed. Lets be honest, that wasn’t really hard! We are still missing configuration files though.

    #Editing /usr/local/glusterfs/etc/glusterfs/glusterfs-server.vol
    #
    # glusterfs-servers definition
    # volume definition are on first lvl, other are on second lvl (tabbed)
    volume brick
    type storage/posix
    option directory /mnt/production/brick
    end-volume

    volume server
    type protocol/server
    option transport-type tcp/server
    option auth.ip.brick.allow *
    subvolumes brick
    end-volume


    #Editing the /usr/local/glusterfs/etc/glusterfs/glusterfs-client.vol
    #
    # glusterfs-client.vol
    # volume definition are on first lvl, other are on second lvl (tabbed)
    #
    volume remote1
    type protocol/client
    option transport-type tcp/client
    option remote-host 002.praized.com
    option remote-subvolume brick
    end-volume

    volume remote2
    type protocol/client
    option transport-type tcp/client
    option remote-host 001.praized.com
    option remote-subvolume brick
    end-volume

    volume mirror0
    type cluster/afr
    subvolumes remote1 remote2
    end-volume


    #Launching services (servers and clients)
    mkdir -p /mnt/production/brick
    /usr/local/glusterfs-1.3.11/sbin/glusterfsd -f /usr/local/glusterfs-1.3.11/etc/glusterfs/glusterfs-server.vol

    mkdir -p /mnt/production/static
    /usr/local/glusterfs-1.3.11/sbin/glusterfs -f /usr/local/glusterfs-1.3.11/etc/glusterfs/glusterfs-client.vol /mnt/production/static/


    You now possess a synchronized directory between your two systems. Please note that GlusterFS require TCP/6996 port to be open. There is also some improvement that can be done to this setup through adding a locking mechanism & i/o thread – I don’t currently need them, but you might.
    Enjoy!

    Debugging notes ; after starting the server process you should have a kernel process call glusterfs. All log files are in /usr/local/glusterfs/var/log/glusterfs*. After starting the client, “df -h” should show you your new mount point. Careful with UID/GID (&Permission), there is no such thing as root_squash_fs in GlusterFS yet.


    Other notes ; Using Amazon EBS would have been the perfect solution if they did allow multiple servers-volume mount and lets us deal with concurrency / lock problems. But, they don’t.

    Page 1 of 212»