2007年11月15日 星期四

DRBD+Heartbeat+DHCP+VLAN整合

前置要求

先做過前一篇文章DHCP HA + 802.1q(VLAN)整合
我們直接將前篇文章設定好的環境來繼續實驗。
假設安裝了第二顆硬碟於 /dev/sdb
(亦可不加硬碟,在系統安裝時便留空間,此時fdisk出兩邊一樣大的空間也可以)

安裝套件(兩台ha1及ha2同時作)

沒有rpm的方式,我們需要手動以tar方式安裝

cd /root

wget http://oss.linbit.com/drbd/8.2/drbd-8.2.1.tar.gz

tar -zxvf
drbd-8.2.1.tar.gz

cd drbd-8.2.1

make ; make install

配置drbd(兩台ha1及ha2同時作)

vi /etc/drbd.conf
global { usage-count yes; }
common { syncer { rate 100M; } }
resource r0 {
protocol C;
net {
cram-hmac-alg sha1;
shared-secret "FooFunFactory";
allow-two-primaries;
}
on ha1 {
device /dev/drbd0;
disk /dev/sdb;
address 10.1.1.1:7789;
flexible-meta-disk internal;
}
on ha2 {
device /dev/drbd0;
disk /dev/sdb;
address 10.1.1.2:7789;
flexible-meta-disk internal;
}
}


初始化ro資源
drbdadm create-md r0

啟動drbd來測試摟
service drbd start


檢查是否正常運作
cat /proc/drbd

於ha1上執行以下指令以確定為主要
drbdadm -- --overwrite-data-of-peer primary all

馬上執行以下指令可看到進度表在跑[==================>.] sync'ed: 90.5%,等跑完
cat /proc/drbd


加入開機啟動
chkconfig --level 35 drbd on

建立/op 掛載目錄
mkdir /op


於ha1上執行以下指令格式化磁碟並且掛載測試

mke2fs /dev/drbd0

mount /dev/drbd0 /op

配置新增dhcp指令檔(兩台ha1及ha2同時作)

vi /etc/ha.d/resource.d/dhcp
#!/bin/sh

case "$1" in
start)
unalias cp
cp -rf /op/dhcpd.leases /var/lib/dhcpd/dhcpd.leases
;;
stop)
unalias cp
cp -rf /var/lib/dhcpd/dhcpd.leases /op/dhcpd.leases
;;

esac

exit 0
chmod 755 /etc/ha.d/resource.d/dhcp

開始與heartbeat做整合摟(兩機器同時修改)

修改為將drbd啟動同時掛載於dhcpd的記錄目錄
vi /etc/ha.d/haresources
ha1 vlan drbddisk::r0 Filesystem::/dev/drbd0::/op::ext2 dhcp

重新啟動雙方的系統
reboot

啟動後,heartbeat的主控權在ha1上,drbd也是。


啟動及測試

將兩台主機測試是否正確運作

2007年11月14日 星期三

DHCP HA + 802.1q(VLAN)整合

前置要求

先做過前一篇文章HeartBeat 2.0 安裝(作ftp HA)
基本Heartbeat概念就不重複敘述, 直接帶設定檔。

假設實驗環境

Platform : Fedora Core 6 (經實際測試 Fedora7及8皆可以)
Machine:
ha1(10.1.1.1) =>eth0
eth1 ==>不設定IP
ha2(10.1.1.2) =>eth0
eth1 ==>不設定IP
Virtual-IP:(10.1.1.3)

假設所想要提供服務的IP和主機名稱如上。
兩台機器皆有兩張網卡,為了好閱讀我將網段分開,eth0為提供HA偵測使用,eth1則提供802.1q(vlan)使用。

安裝套件

yum -y install glib glib-devel net-snmp-libs net-snmp net-snmp-devel libnet heartbeat*

modprobe softdog

vi /etc/modules.conf
加入 alias watchdog softdog

修改主機名稱

將兩台主機的hostname分別修正為ha1及ha2
vi /etc/sysconfig/network
修改 HOSTNAME=ha1

同時於 /etc/hosts 下加入

192.168.1.10 ha1
192.168.1.20 ha2

修改dhcpd設定檔
vi /etc/dhcpd.conf
ddns-update-style none;
default-lease-time 3600;
max-lease-time 36000;
option domain-name-servers 168.95.1.1;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
option subnet-mask 255.255.255.0;
option routers 192.168.1.10;
option broadcast-address 192.168.1.255;
}

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.150;
option subnet-mask 255.255.255.0;
option routers 192.168.2.10;
option broadcast-address 192.168.2.255;
}

建立vlan指令檔
vi /etc/ha.d/resource.d/vlan
#!/bin/sh

case "$1" in
start)
/sbin/vconfig add eth1 10
/sbin/vconfig add eth1 20
/sbin/ifconfig eth1.10 192.168.1.10 up
/sbin/ifconfig eth1.20 192.168.2.10 up
/etc/init.d/dhcpd start
;;
stop)
/sbin/vconfig rem eth1.10
/sbin/vconfig rem eth1.20
/etc/init.d/dhcpd stop
;;

esac

exit 0
chmod 755 /etc/ha.d/resource.d/vlan

複製設定檔

cp /usr/share/doc/heartbeat-2.0.8/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.0.8/haresources /etc/ha.d/
cp /usr/share/doc/heartbeat-2.0.8/authkeys /etc/ha.d/

修改ha.cf(2機器一樣)

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 5
deadtime 30
warntime 10
initdead 180
bcast eth0
auto_failback on
watchdog /dev/watchdog
node ha1
node ha2

修改haresources(2機器一樣)

ha1 10.1.1.3 vlan

修改authkeys(2機器一樣)

auth 1
1 crc

chmod 600 /etc/ha.d/authkeys

啟動及測試

將兩台主機的heartbeat都啟動

HeartBeat 2.0 安裝(作ftp HA)

假設實驗環境

Platform : Fedora Core 6 (經實際測試 Fedora7及8皆可以)
Machine:
ha1(192.168.1.10)
ha2(192.168.1.20)
Virtual-IP:ftp(192.168.1.30)
假設所想要提供服務的IP和主機名稱如上。

安裝套件

依造相依性依序安裝前置套件
yum -y install glib glib-devel net-snmp-libs net-snmp net-snmp-devel libnet

安裝主套件
yum -y install heartbeat*

watchdog是一個在系統完全停住時,讓kernel強制重開系統的服務,啟動它
modprobe softdog

vi /etc/modules.conf
加入 alias watchdog softdog

修改主機名稱

將兩台主機的hostname分別修正為ha1及ha2
vi /etc/sysconfig/network
修改 HOSTNAME=ha1

同時於 /etc/hosts 下加入

192.168.1.10 ha1
192.168.1.20 ha2

設定

主要設定檔都放在/etc/ha.d/
請先瀏覽README.config

範例檔都放在/usr/share/doc/heartbeat-2.0.8
請將ha.cf, haresources, authkeys複製到/etc/ha.d/

ha.cf

只列出必要的設定
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
兩秒偵測一遍應該是足夠了,如果你的網管會將特定速度的ping視做是病毒,你可能會需要調整時間。
deadtime 30
視你的服務需要,一般來說heartbeat從探知對方服務終止到取代服務約要個10秒,儘量不要小於這個數字。
warntime 10
initdead 180
對於大部分的OS,可能heartbeat服務啟動之後,需要一些時間網路才能正常運作,在此可以設定讓heartbeat啟動時不要去偵測是否存活的時間。
bcast eth0 # Linux
如果你只使用網路偵測,就必須使用broadcast
auto_failback on
這決定是否主要節點回覆後,次要節點會回到standby的狀態。
watchdog /dev/watchdog
node ha1
node ha2
如此一來ha-1就是主要節點,配合前面auto-failback的設定,當ha-1服務終止時,ha-2的heartbeat會把服務叫起來,當ha -1服務回覆時,ha-2會自動終止服務跳至standby的狀態。要注意到節點名稱最好是要能夠由DNS查詢到,

haresources

注意!這個檔案在所有的機器上都要一樣
只要一行便可以
ha1 192.168.1.30 vsftpd
所以,這個設定的格式如下
[full hostname] [ip] [service1] [service2]...
服務的script,heartbeat會自動搜尋/etc/ha.d/resource.d及/etc/rc.d/init.d這兩個目錄
當heartbeat啟動的時候,他會自動呼叫httpd start及proftpd start,反之停止的時候他會呼叫這兩個script的stop。

authkeys

這個檔案基本上也是都要一樣

auth 1
1 crc

這樣即可
請確定這個檔案的owner及group是root
接著chmod 600 authkeys

啟動及測試

將兩台主機的heartbeat都啟動


2007年11月9日 星期五

Linux與Cisco設備介接(採用VLAN),DHCP分vlan發 IP

實驗清單:
Linux主機(Fedora core 6)、Cisco 2960


====以下為Fedora core 6的設定====
==以下為VLAN on Fedora6上==
首先檢視核心是否載入了802.1q
lsmod | grep 8021q
=>檢視是否有載入~若沒則進行下一步載入
modprobe -v 8021q
=>載入此mod
lsmod | grep 8021q
=>此時看的到有訊息

系統已經有vconfig套件安裝,若沒有則用yum新增~
Linux主機只有一張網路卡eth0,不可以設定任何IP資訊,同時需確定此張網路卡有啟動~


假設需建立兩個vlan,vlan 10及vlan 20,則以以下指令新增
vconfig add eth0 10
vconfig add eth0 20
再來將該介面啟動,同時給予管理vlan IP(192.168.10.1及192.168.20.1)
ifconfig eth0.10 192.168.10.1 up
ifconfig eth0.10 | head -2
ifconfig eth0.20 192.168.20.1 up
ifconfig eth0.20 | head -2
若要刪除該vlan可使用以下指令
vconfig rem eth0.10
將vlan設定跟隨網路服務一起啟動
echo VLAN=yes >> /etc/sysconfig/network
將默認關閉的ip forwarding功能打開
echo "1">/proc/sys/net/ipv4/ip_forward

==以下為DHCP on Fedora6上==
首先先將dhcpd服務裝好.(沒有的話用yum -y install dhcpd)
vi /etc/dhcpd.conf
ddns-update-style none;
default-lease-time 3600;
max-lease-time 36000;
option domain-name-servers 168.95.1.1;

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.150;
option subnet-mask 255.255.255.0;
option routers 192.168.10.254;
option broadcast-address 192.168.10.255;


}

subnet 192.168.20.0 netmask 255.255.255.0 {
    range 192.168.20.100 192.168.20.150;    
option subnet-mask 255.255.255.0;
option routers 192.168.20.254;
option broadcast-address 192.168.20.255;


}
接下來啟動一下dhcp服務
service dhcpd start
若回應失敗,使用以下指令觀看原因然後修正
tail -n 50 /var/log/messages
成功後可以看租用的用戶資料
cat /var/lib/dhcp/dhcpd.leases

測試沒問題後將vlan設定及dhcp設定寫入開機執行,注意vlan要先成功才可以開啟dhcp服務
vi /etc/rc.local
/sbin/vconfig add eth0 10
/sbin/vconfig add eth0 20
/sbin/ifconfig eth0.10 192.168.10.1 up
/sbin/ifconfig eth0.10 | head -2
/sbin/ifconfig eth0.20 192.168.20.1 up
/sbin/ifconfig eth0.20 | head -2
/etc/init.d/dhcpd start

====以下為CISCO 2960上的設定====
接著在2960內建立vlan 10及vlan 20,將其對應到實體port,同時將最後一port設定trunk與pc接
>en
#vlan database
#vlan 10
#vlan 20
#exit
#conf t
#int fastethernet 0/24
#switchport mode trunk
#switchport trunk allowed vlan 10,20
#switchport trunk encapsulation dot1q
#duplex full
#speed 100
#exit
#int fastethernet 0/1
#switchport mode access
#switchport access vlan 10
#spanning-tree portfast
#no shutdown
#exit
#int fastethernet 0/2
#switchport mode access
#switchport access vlan 20
#spanning-tree portfast
#no shutdown
#exit
存檔後做好switch上的設定~

====測試====
將XP Client設定使用DHCP方式取得IP,將網路線連接至Switch上的port1和Port2測試,
看是否能正確透過vlan10取得設定的IP
存檔後做好switch上的設定~