Heartbeat v3 + ttserver + DRBD 構建高可用ttserver

一、軟件概述

DRBD是一種塊設備,可以被用於高可用(HA)之中.它類似於一個網絡RAID-1功能.當你將數據寫入本地 文件系統時,數據還將會被髮送到網絡中另一臺主機上.以相同的形式記錄在一個文件系統中. 本地(主節點)與遠程主機(備節點)的數據可以保證實時同步.當本地系統出現故障時,遠程主機上還會保留有一份相同的數據,可以繼續使用.

Heartbeat:heartbeat是一種主要提供高可用的軟件

Ttserver:ttserver是一種高併發的分佈式持久存儲系統,具體可以自己google一下 

二、ttserver + DRBD + Heartbeat v3 安裝和配置

準備工作

機器包括space142和space143

space142上的兩個IP分別爲10.0.0.1和192.168.20.180;

space142上的兩個IP分別爲10.0.0.2和192.168.20.181;

漂移IP(VIP)爲192.168.20.183;

10.0.0.x網段用於DRBD通信。

分別在兩臺機器上配置/etc/hosts文件

  1. #vim /etc/hosts 

10.0.0.1  space142
192.168.20.180 space142
10.0.0.2  space143

192.168.20.181 space143

ttsserver安裝和配置

具體可以參看我的其他文章

  1. #cp /usr/local/tokyotyrant/bin/ttserver /etc/init.d/ 
  2. #vim /etc/init.d/ttserver          #修改相關的變量  

prog="ttservctl"
cmd="/usr/local/tokyotyrant/bin/ttserver"
basedir="/data/ttserver1"
port="1978"
pidfile="$basedir/pid"
logfile="$basedir/log"
ulogdir="$basedir/ulog"
ulimsiz="256m"
sid=1
#mhost="remotehost1"
#mport="1978"
#rtsfile="$basedir/rts"
dbname="$basedir/casket.tch#bnum=1000000"
retval=0

/etc/init.d/ttserver腳本被用做資源腳本被heartbeat調用

安裝和配置DRBD

分別在space142、space143上安裝DRBD

  1. #wget http://oss.linbit.com/drbd/8.3/drbd-8.3.10.tar.gz 
  2. #tar zxvf drbd-8.3.10.tar.gz 
  3. #cd drbd-8.3.10 
  4. #./configure 
  5. #make rpm 
  6. #make km-rpm 
  7. #cd /usr/src/redhat/RPMS/x86_64 
  8. #rpm -ivh drbd* 
  9. #modprobe drbd 
  10. #lsmod |grep drbd 

DRBD配置如下:

 

  1. #vim /etc/drbd.conf 

global { usage-count yes; }

common { syncer { rate 33M; } }

resource r0 {

        protocol C;

        startup {

          }
        disk {
               on-io-error   detach;
                #size 1G;
        }
        net {
        }
        on space142 {
                device    /dev/drbd0;
                disk      /dev/sdb1;
                address   10.0.0.1:7898;
                meta-disk internal;
        }
        on space143 {
                device    /dev/drbd0;
                disk      /dev/sdb1;
                address   10.0.0.2:7898;
                meta-disk internal;
        }
}

 

初始化DRBD資源

  1. #drbdadm create-md r0 
  2. #mkfs.ext3 /dev/drbd0 
  3. #/etc/init.d/drbd start && chkconfig drbd off 
  4. #mkdir /data  

/data目錄用來掛載drbd設備

安裝和配置Heartbeat V3

1)安裝heartbeat前準備,安裝Cluster Glue

  1. #groupadd haclient 
  2. #useradd -g haclient hacluster 
  3. #wget http://hg.linux-ha.org/glue/archive/glue-1.0.7.tar.bz2 
  4. #tar jxvf glue-1.0.7.tar.bz2 
  5. #cd Reusable-Cluster-Components-glue--glue-1.0.7/ 
  6. #./autogen.sh  
  7. #./configure 
  8. #make 
  9. #make install 

2)安裝resource-agents

  1. #wget https://download.github.com/ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz 
  2. #tar -jvxf ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz 
  3. #cd Cluster-Resource-Agents-agents-1.0.4 
  4. #./autogen.sh 
  5. #./configure 
  6. #make 
  7. #make install 

3)安裝heartbeat

  1. #wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/STABLE-3.0.4.tar.bz2 
  2. #tar jxvf STABLE-3.0.4.tar.bz2 
  3. #cd Heartbeat-3-0-STABLE-3.0.4/ 
  4. #./bootstrap 
  5. #./configure 
  6. #make 
  7. #make install 

4)配置ha.cf和authkeys

  1. # vim /etc/ha.d/ha.cf 

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

initdead 30

udpport 694

mcast eth1 239.0.0.1 694 1 0 # 使用多播方式進行相互通信

auto_failback on

node space142

node space143

compression     bz2

compression_threshold 2

crm respawn

# 以下兩行是pacemaker-mgmt提供的hb_gui 連接所必須的,2.1.4時沒有

apiauth         mgmtd   uid=root

# 注意,下面文件的路徑不能有錯(可查詢pacemaker-mgmt包),並且一定是可執行文件

respawn         root    /usr/lib64/heartbeat/mgmtd –v

配置authkeys

  1. # vi /etc/ha.d/authkeys  

auth 1

1 sha1 0366577bdaed36f08b5f1c29431812dc

5)資源配置

利用crm命令進入crm shell進行配置

primitive ClusterIP ocf:heartbeat:IPaddr2 \

        params ip="192.168.20.183" cidr_netmask="32" \

        op monitor interval="30s"

primitive drbd ocf:linbit:drbd \

        params drbd_resource="r0" drbdconf="/etc/drbd.conf" \

        op monitor interval="60s" \

        op start interval="0" timeout="240s" \

        op stop interval="0" timeout="100s"

primitive fs ocf:heartbeat:Filesystem \

        params device="/dev/drbd0" directory="/data" fstype="ext3" \

        op start interval="0" timeout="240s" \

        op stop interval="0" timeout="100s"

primitive ttserver lsb:ttservctl

group group_ttserver ClusterIP fs ttserver \

        meta target-role="Started" is-managed="true"

ms ms_drbd drbd \

        meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"

colocation ttserver-on-drbd inf: group_ttserver ms_drbd:Master

order ttserver-after-drbd inf: ms_drbd:promote group_ttserver:start

property $id="cib-bootstrap-options" \

        stonith-enabled="false" \

        dc-version="1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3" \

        cluster-infrastructure="Heartbeat"

三、常用的管理命令

1、drbd常用操作

#watch -n 1 cat /proc/drbd  查看drbd的狀態

主從切換:先umount drbd設備。再用drbdadm primary all切換爲主,drbdadm primary all切換爲從

2、heartbeat常用操作

查看heartbeat資源狀態,crm_mon可以查看資源使用情況:
#crm_mon

============
Last updated: Thu Apr 7 14:15:44 2011
Stack: Heartbeat
Current DC: space143 (fdec6bb1-a091-44a6-a542-af6afc3030a5) - partition with quorum
Version: 1.0.10-da7075976b5ff0bee71074385f8fd02f296ec8a3
2 Nodes configured, unknown expected votes
2 Resources configured.
============
Online: [ space142 space143 ]
Master/Slave Set: ms_drbd
Masters: [ space143 ]
Slaves: [ space142 ]
Resource Group: group_ttserver
ClusterIP (ocf::heartbeat:IPaddr2): Started space143
fs (ocf::heartbeat:Filesystem): Started space143
ttserver (lsb:ttservctl): Started space143

資源切換

如果資源掛載space142,通過以下命令可以把資源手動的切換到space143

crm node standby space142

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章