前端httpd+keepalived加后端heartbeat+nfs+drbd实现httpd服务的高效应用及资源统一管理...
本文四臺機器:Centos6.0
lv1、lv2兩臺機器做httpd的前端,使用keepalived做高可用;虛擬出一個vip供client訪問。
node1、node2應用drbd技術實現文件鏡像存儲,虛擬出一個vip做nfsserver_ip供httpd服務,方便配置,資料的統一管理;
涉及應用技術;httpd、keepalived、drbd、nfs、heartbeat
如圖:
lv1: 192.168.182.130
lv2: 192.168.182.129 ? ? VIP:192.168.182.200 該vip供client訪問
node1:192.168.182.133
node2:192.168.182.134 ?VIP:192.168.182.150 ?該VIP充當nfsserver進行掛載 ?
首先關閉了selinux、iptables;當然真實環境并非如此,我們進行分別配置即可
一、開始配置,lv1、lv2;進行測試前端是否正常
1、分別執行:yum install -y httpd ipvsadm keepalived
為了分別出lv1、lv2的頁面區別,分別在頁面標識lv1、lv2
2、接下來配置keepalived;
lv1:上配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
? notification_email {
? ? coffee_lanshan@sina.com
? }
? notification_email_from admin@example.com
? smtp_server 127.0.0.1
? smtp_connect_timeout 30
? router_id LV_ha
}
vrrp_instance httpd {
? ?state MASTER
? ?interface eth0
? ?virtual_router_id 51
? ?priority 100
? ?advert_int 1
? ?authentication {
? ? ? ?auth_type PASS
? ? ? ?auth_pass 1111
? ?}
? ?virtual_ipaddress {
? ? ? ?192.168.182.200
? ?}
}
virtual_server 192.168.182.200 80 {
? ?delay_loop 2
? ?lb_algo rr
? ?lb_kind DR
? ?persistence_timeout 50
? ?protocol TCP
? ?real_server 192.168.182.130 80 {
? ? ? ?weight 3
? ?notify_down ? ?/var/www/httpd.sh
? ?TCP_CHECK {
? ?connect_timeout ? ?3
? ?nb_get_retry ? ?3
? ?delay_before_retry ? ?3
? ?connect_port 80
? ? ? ?}
? ?}
}
lv2:配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
? notification_email {
? ? coffee_lanshan@sina.com
? }
? notification_email_from admin@example.com
? smtp_server 127.0.0.1
? smtp_connect_timeout 30
? router_id LV_ha
}
vrrp_instance httpd {
? ?state MASTER
? ?interface eth0
? ?virtual_router_id 51
? ?priority 100
? ?advert_int 1
? ?authentication {
? ? ? ?auth_type PASS
? ? ? ?auth_pass 1111
? ?}
? ?virtual_ipaddress {
? ? ? ?192.168.182.200
? ?}
}
virtual_server 192.168.182.200 80 {
? ?delay_loop 2
? ?lb_algo rr
? ?lb_kind DR
? ?persistence_timeout 50
? ?protocol TCP
? ?real_server 192.168.182.129 80 {
? ? ? ?weight 3
? ?notify_down ? ?/var/www/httpd.sh
? ?TCP_CHECK {
? ?connect_timeout ? ?3
? ?nb_get_retry ? ?3
? ?delay_before_retry ? ?3
? ?connect_port 80
? ? ? ?}
? ?}
}
分別在lv1、lv2創建httpd.sh
vim /var/www/httpd.sh
#!/bin/sh
pkill ? ?keepalived
#####
chmod +x httpd.sh
現在為此測試上面的是否正常,是否正常轉移
發現現在是lv1在提供服務,在vrrp中也可以看到( priority 100);
現在在lv1停掉httpd
現在發現是lv2在提供服務,現在當你啟動lv1上的httpd和keepalived的服務后,httpd會自動切換會lv1上;這里不演示了;
二:現在開始node1、node2配置drbd+heartbeat+nfs并進行測試;
1、配置hosts,安裝drbd、heartbeat、nfs
1>、node1、node2:
vim hosts
192.168.182.133 ? ?node1
192.168.182.134 ? ?node2
2>、drbd安裝
yum -y install gcc kernel-devel kernel-headers flex
wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz
?tar zxvf drbd-8.4.3.tar.gz
? ?cd drbd-8.4.3
? ?./configure --prefix=/usr/local/drbd --with-km
? ?make KDIR=/usr/src/kernels/2.6.32-71.el6.i686/
? make install
? ?mkdir -p /usr/local/drbd/var/run/drbd
? ? cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d
? ? chkconfig --add drbd
? ? chkconfig drbd on
? ? cd drbd
? ? cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
? ? depmod
? ? modprobe drbd
確定加載了drbd模塊
到此兩臺機器的drbd安裝完畢;開始config
首先需要在node1、node2;fdisk新增的disk(這里我新增了一個8G的disk來做drbd),切記不可格式化
node1:
cd /usr/local/drbd/etc/drbd.d
mv global_common.conf global_common.conf.bak
vim global_common.conf
global ? ?{
? ?usage-count ? ?yes; ?#是否參加DRBD使用者統計,默認yes
? ?}
? ?common ? ?{
? ?net ? ?{
? ? ? protocol ? ?C; ?#使用drbd的第三種同步協議,表示收到遠程主機的寫入確認后,則認為寫入完成.
? ?}
? ?}
vim r0.res
resource ? ?r0 ? ?{
? ? ? ?on node1 ? ?{ ? #每個主機的說明以on開頭,后面是hostname
? ? ? ?device ? ?/dev/drbd1; ? #drbd設備名
? ? ? ?disk ? ?/dev/sdb1; ?#/dev/drbd1使用的磁盤分區是/dev/sdb1。
? ? ? ?address ? ?192.168.182.133:7789; ? ?#設置DRBD的監聽端口,用于與另一臺主機通信。
? ? ? ?meta-disk ? ?internal;
? ?}
? ? ? ?on node2 ? ?{
? ? ? ?device ? ?/dev/drbd1;
? ? ? ?disk ? ?/dev/sdb1;
? ? ? ?address ? ?192.168.182.134:7789;
? ? ? ?meta-disk ? ?internal;
? ?}
}
將上面這個配置文件分別復制到兩臺主機的/etc/drbd.d目錄下。
2、 啟動DRBD
在兩個節點執行
在啟動DRBD之前,你需要分別在兩臺主機的sdb1分區上,創建供DRBD記錄信息的數據塊.分別在兩臺主機上執行:?
[root@Centos ~]# drbdadm create-md r0 或者執行drbdadm create-md all
[root@Centos ~]# drbdadm create-md r0
在兩個節點啟動服務
[root@Centos ~]#/etc/init.d/drbd start
[root@Centos ~]#/etc/init.d/drbd start
最好同時啟動
在任意節點查看節點狀態
對輸出的含義解釋如下:
ro表示角色信息,第一次啟動drbd時,兩個drbd節點默認都處于Secondary狀態,
ds是磁盤狀態信息,“Inconsistent/Inconsisten”,即為“不一致/不一致”狀態,表示兩個節點的磁盤數據處于不一致狀態。“UpToDate/UpToDate”。即為“實時/實時”狀態了。
Ns表示網絡發送的數據包信息。
Dw是磁盤寫信息
Dr是磁盤讀信息
設置主節點
由于默認沒有主次節點之分,因而需要設置兩個主機的主次節點,選擇需要設置為主節點的主機,然后執行如下命令:
drbdsetup /dev/drbd1 primary --o
第一次執行完此命令后,在后面如果需要設置哪個是主節點時,就可以使用另外一個命令:
drbdadm primary r0或者drbdadm primary all
執行此命令后,開始同步兩臺機器對應磁盤的數據
從輸出可知:
? ?“ro狀態現在變為“Primary/Secondary”,“ds”狀態也變為“UpToDate/Inconsistent”,也就是“實時/不一致”狀態,現在數據正在主備兩個主機的磁盤間進行同步,且同步進度為8.4%,同步速度每秒10M左右。
等待片刻,再次查看同步狀態,輸出如下:
可以看到同步完成了,并且“ds“狀態也變為“UpToDate/UpToDate”了。即為“實時/實時”狀態了。
格式化disk
mkfs.ext4 /dev/drbd1
接下了就可以mount 使用了
3、安裝heartbeat、nfs
yum install heartbeat nfs libnet -y
cp /usr/share/doc/heartbeat-3.0.4/authkeys ha.cf haresources /etc/ha.d/
1、node1配置ha.cf
logfile ? ?/var/log/ha-log
logfacility ? ?local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport ? ?694
ucast eth0 192.168.182.134
auto_failback off
node node1
node node2
ping 192.168.182.2
respawn root /usr/lib/heartbeat/ipfail
++++++++++++++++++++++++++++++++
node2的ha.cf和上面一樣,只是ucast eth0 192.168.182.133(對方IP)
配置/etc/ha.d/authkeys
auth 2
#1 crc
2 sha1 heartbeat
#3 md5 Hello!
node2同上
配置/etc/ha.d/haresources?
node1 IPaddr::192.168.182.150/24/eth0 drbddisk::r0 Filesystem::/dev/drbd1::/mnt::ext4 nfs
node2同上
chmod 600 authkeys
node2同上
cp /usr/local/drbd/etc/ha.d/resource.d/drbddisk /etc/ha.d/resource.d/
node2同上
啟動heartbeat
/etc/init.d/heartbeat start
現在為止:你會發現node1上網卡
將node1上heartbeat關閉:你會發現node2
自動掛載,drbd狀態自動切換,vip自動漂移全部正常
分別在node1、node2上配置nfs共享目錄
[root@node2 ~]# vim /etc/exports?
/root/data ? ? ?*(rw)
[root@node2 ~]# exportfs -r
[root@node2 ~]# exportfs -u
/root/data ? ? ? ?<world>
4、接下來怎么在前面的兩臺lv上面掛載充當httpd服務的主目錄;
lv1、lv2:
mount -t nfs 192.168.182.150:/root/data /var/www/html
可以把這個寫到fstab中,開機啟動
192.168.182.150:/root/data ? ?/var/www/html ? ?nfs ? ?defaults ? ?0 ? ?0
5、接下來進行測試了:
1>、我們在node1中的/root/data/ 中創建index.html;期中內容:node+heartbeat+test
2>、現在我們將lv1宕機掉進行測試也是一樣的,不影響
3>、現在我們將node1宕掉,node間的服務會切換到node2,然后修改index.html的內容進行分別
這里新增了two一個標識
node1:/etc/init.d/heartbeat stop
node2:
[root@node2 data]# vim index.html?
node+heartbeat+test two
現在再訪問vip
一切正常!ok
這樣方便統一管理了資源,并且實現了可靠性;
本文轉自 西索oO 51CTO博客,原文鏈接:http://blog.51cto.com/lansgg/1208485
總結
以上是生活随笔為你收集整理的前端httpd+keepalived加后端heartbeat+nfs+drbd实现httpd服务的高效应用及资源统一管理...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux之shell脚本(2)
- 下一篇: 简单解决Ubuntu修改locale的问