日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

corosync/openais+pacemaker+drbd+web实现高可用群集

發(fā)布時間:2024/4/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 corosync/openais+pacemaker+drbd+web实现高可用群集 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

拓?fù)鋱D:

配置前提:
1.節(jié)點(diǎn)的名字必須跟uname -n的名字相同,而且兩個主機(jī)必須能通過主機(jī)名來訪問。盡量不通過DNS來訪問。時鐘時間保持一樣。
2.雙方的通信要必須通過SSL的無障礙通信機(jī)制
3.雙節(jié)點(diǎn)之間可以通過某個IP來提供連接,但是這只是通信Ip,我們需要VIP來對外提供服務(wù)。
4.我采用虛擬機(jī)的方式實(shí)現(xiàn)配置,操作系統(tǒng)使用rhel5.4,x86平臺
5.兩個節(jié)點(diǎn)主機(jī)IP分別為192.168.2.10(node1.a.com),以及192.168.2.20(node2.a.com)
6.集群服務(wù)為apache的httpd服務(wù)
7.提供Web服務(wù)的地址(VIP)為192.168.2.100
8.在兩個節(jié)點(diǎn)上分別準(zhǔn)備一塊大小為2G的分區(qū)用于實(shí)現(xiàn)DRBD的共享。(本文使用新分區(qū)/dev/sda4)

node1.a.com 配置
1.準(zhǔn)備工作
[root@localhost ~]# vim /etc/sysconfig/network
HOSTNAME=node1.a.com
[root@localhost ~]# hostname node1.a.com
重新登錄
[root@localhost ~]# vim /etc/sysconfig/network
HOSTNAME=node2.a.com
[root@localhost ~]# hostname node2.a.com
我們首先要保證兩節(jié)點(diǎn)之間時間相差不應(yīng)該超過1秒
[root@node1 ~]# hwclock -s
[root@node2 ~]# hwclock -s
分別在兩個節(jié)點(diǎn)上設(shè)置
# vim /etc/hosts
192.168.2.10 node1.a.com node1
192.168.2.20 node2.a.c node2


生成密鑰,確保通信正常
node1節(jié)點(diǎn)
[root@node1 ~]# ssh-keygen -t rsa

[root@node1 ~]# cd /root/.ssh
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub node2
node2節(jié)點(diǎn)
[root@node2 ~]# ssh-keygen -t rsa
[root@node2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub node1


由于需要用到軟件的依賴,這里配置yum,在node1上

[root@node1 ~]# mkdir /mnt/cdrom/

[root@node1 ~]# mount /dev/cdrom /mnt/cdrom/
# vim /etc/yum.repos.d/rhel-debuginfo.repo

[root@node2~]# scp node1:/etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/


在node1,node2上安裝apache服務(wù),為了測試在node1上創(chuàng)建含’node1.a.com’的index.html文件,在node2上創(chuàng)建’node2.a.com’的index.html確保服務(wù)能啟動,這里采用yum安裝:
# mount /dev/cdrom /mnt/cdrom
# yum install -y httpd
[root@node1 ~]# echo "node1.a.com" >>/var/www/html/index.html //node1上
[root@node2 ~]# echo "node2.a.com" >/var/www/html/index.html //node2上
# service httpd start
# chkconfig httpd on


2.安裝所需要的軟件包(corosync/openais+pacemaker軟件包)

cluster-glue-1.0.6-1.6.el5.i386.rpm

cluster-glue-libs-1.0.6-1.6.el5.i386.rpm

corosync-1.2.7-1.1.el5.i386.rpm

corosynclib-1.2.7-1.1.el5.i386.rpm

heartbeat-3.0.3-2.3.el5.i386.rpm

heartbeat-libs-3.0.3-2.3.el5.i386.rpm

libesmtp-1.0.4-5.el5.i386.rpm

openais-1.1.3-1.6.el5.i386.rpm

openaislib-1.1.3-1.6.el5.i386.rpm

pacemaker-1.1.5-1.1.el5.i386.rpm

pacemaker-cts-1.1.5-1.1.el5.i386.rpm

pacemaker-libs-1.1.5-1.1.el5.i386.rpm

perl-TimeDate-1.16-5.el5.noarch.rpm

resource-agents-1.0.4-1.1.el5.i386.rpm


# yum localinstall -y *.rpm --nogpgcheck
[root@node1 ~]# cd /etc/corosync/
[root@node1 corosync]# cp -p corosync.conf.example corosync.conf
[root@node1 corosync]# vim corosync.conf
10 bindnetaddr: 192.168.145.0 心跳探測
33 service {
34 ver: 0
35 name: pacemaker
36 }
37 aisexec {
38 user: root
39 group: root
40 }

創(chuàng)建目錄
#mkdir /var/log/cluster
為了便面其他主機(jī)加入該集群,需要認(rèn)證,生成一個authkey
[root@node1 corosync]# corosync-keygen
Corosync Cluster Engine Authentication key generator.
Gathering 1024 bits for key from /dev/random.
Press keys on your keyboard to generate entropy.
Writing corosync key to /etc/corosync/authkey.
[root@node1 corosync]# ll
總計 28
-rw-r--r-- 1 root root 5384 2010-07-28 amf.conf.example
-r-------- 1 root root 128 10-20 13:02 authkey
-rw-r--r-- 1 root root 540 10-20 12:59 corosync.conf
-rw-r--r-- 1 root root 436 2010-07-28 corosync.conf.example
drwxr-xr-x 2 root root 4096 2010-07-28 service.d
drwxr-xr-x 2 root root 4096 2010-07-28 uidgid.d
拷貝到node2上去 (使用 -p 以保留權(quán)限)
[root@node1 corosync]# scp -p authkey corosync.conf node2:/etc/corosync/


在另外的一個節(jié)點(diǎn)上創(chuàng)建日志目錄
[root@node1 corosync]# ssh node2 'mkdir /var/log/cluster'
在節(jié)點(diǎn)上啟動服務(wù)
[root@node1 corosync]# service corosync start
[root@node1 corosync]# ssh node2 'service corosync start'


驗(yàn)證啟動corosync是否正常:
查看corosync引擎是否正常啟動
[root@node1 corosync]# grep -i -e "corosync cluster engine" -e "configuration file" /var/log/messages
Oct 30 13:08:39 localhost corosync[32303]: [MAIN ] Corosync Cluster Engine ('1.2.7'): started and ready to provide service.
Oct 30 13:08:39 localhost corosync[32303]:[MAIN] Successfully read main configuration file '/etc/corosync/corosync.conf'.


查看初始化成員節(jié)點(diǎn)通知是否發(fā)出
[root@node1 corosync]# grep -i totem /var/log/messages
Oct 30 13:08:39 localhost corosync[32303]: [TOTEM ] Initializing transport (UDP/IP).
Oct 30 13:08:39 localhost corosync[32303]:[TOTEM] Initializing transmit/receive security: libtomcrypt SOBER128/SHA1HMAC (mode 0).
Oct 30 13:08:39 localhost corosync[32303]: [TOTEM ] The network interface [192.168.145.100] is now up.
Oct 30 13:08:40 localhost corosync[32303]:[TOTEM] A processor joined or left the membership and a new membership was formed.
Oct 30 13:09:18 localhost corosync[32303]: [TOTEM] A processor joined or left the membership and a new membership was formed.


檢查過程中是否有錯誤產(chǎn)生
[root@node1 corosync]# grep -i error: /var/log/messages |grep -v unpack_resources


查看pacemaker是否正常啟動:
[root@node1 corosync]# grep -i pcmk_startup /var/log/messages
Oct 30 13:08:39 localhost corosync[32303]: [pcmk ] info: pcmk_startup: CRM: Initialized
Oct 30 13:08:39 localhost corosync[32303]: [pcmk ] Logging: Initialized pcmk_startup
Oct 30 13:08:39 localhost corosync[32303]: [pcmk ] info: pcmk_startup: Maximum core file size is: 4294967295
Oct 30 13:08:40 localhost corosync[32303]: [pcmk ] info: pcmk_startup: Service: 9
Oct 30 13:08:40 localhost corosync[32303]: [pcmk ] info: pcmk_startup: Local hostname: node1.a.com


將前面的驗(yàn)證步驟在另外一個節(jié)點(diǎn)上再次驗(yàn)證一次
在任何一個節(jié)點(diǎn)上 查看集群的成員狀態(tài)
[root@node1 corosync]# crm status
============
Last updated: Sat Oct 30 13:17:52 2013
Stack: openais
Current DC: node1.a.com - partition with quorum
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
0 Resources configured.
============
Online: [ node1.a.com node2.a.com ]
提供高可用服務(wù)
在corosync中,定義服務(wù)可以用兩種借口
1.圖形接口 (使用hb—gui)
2.crm (pacemaker 提供,是一個shell)


[root@node1 corosync]# crm configure show
node node1.a.com
node node2.a.com
property $id="cib-bootstrap-options" \
dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \
cluster-infrastructure="openais" \
expected-quorum-votes="2"

用于查看cib的相關(guān)信息
如何驗(yàn)證該文件的語法錯誤
[root@node1 corosync]# crm_verify -L
crm_verify[32397]: 2013/11/1_13:24:12 ERROR: unpack_resources: Resource start-up disabled since no STONITH resources have been defined
crm_verify[32397]: 2013/11/1_13:24:12 ERROR: unpack_resources: Either configure some or disable STONITH with the stonith-enabled option
crm_verify[32397]: 2013/11/1_13:24:12 ERROR: unpack_resources: NOTE: Clusters with shared data need STONITH to ensure data integrity


Errors found during check: config not valid
-V may provide more details
可以看到有stonith錯誤,在高可用的環(huán)境里面,會禁止實(shí)用任何支援
可以禁用stonith
[root@node1 corosync]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false
crm(live)configure# commit
crm(live)configure# show
node node1.a.com
node node2.a.com
property $id="cib-bootstrap-options" \
dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
stonith-enabled="false"
再次進(jìn)行檢查
[root@node1 corosync]# crm_verify -L
沒有錯誤了

系統(tǒng)上有專門的stonith命令
stonith -L 顯示stonith所指示的類型
crm可以使用交互式模式
可以執(zhí)行help
保存在cib里面,以xml的格式
集群的資源類型有4種
primitive 本地主資源 (只能運(yùn)行在一個節(jié)點(diǎn)上)
group 把多個資源軌道一個組里面,便于管理
clone 需要在多個節(jié)點(diǎn)上同時啟用的 (如ocfs2 ,stonith ,沒有主次之分)
master 有主次之分,如drbd
ip地址 http服務(wù) 共享存儲
用資源代理進(jìn)行配置
ocf lsb的
使用list可以查看
crm(live)# ra
crm(live)ra# classes
heartbeat
lsb
ocf / heartbeat pacemaker
stonith
可以實(shí)用list lsb 查看資源代理的腳本
crm(live)ra# list lsb
NetworkManager acpid anacron apmd
atd auditd autofs avahi-daemon
avahi-dnsconfd bluetooth capi conman
corosync cpuspeed crond cups
cups-config-daemon dnsmasq dund firstboot
functions gpm haldaemon halt
heartbeat hidd hplip ip6tables
ipmi iptables irda irqbalance
isdn kdump killall krb524
kudzu lm_sensors logd lvm2-monitor
mcstrans mdmonitor mdmpd messagebus
microcode_ctl multipathd netconsole netfs
netplugd network nfs nfslock
nscd ntpd openais openibd
pacemaker pand pcscd portmap
psacct rawdevices rdisc readahead_early
readahead_later restorecond rhnsd rpcgssd
rpcidmapd rpcsvcgssd saslauthd sendmail
setroubleshoot single smartd sshd
syslog vncserver wdaemon winbind
wpa_supplicant xfs xinetd ypbind
(是/etc/init.d目錄下的)
查看ocf的heartbeat
crm(live)ra# list ocf heartbeat
實(shí)用info或者meta 用于顯示一個資源的詳細(xì)信息
meta ocf:heartbeat:IPaddr 各個子項(xiàng)用:分開


配置一個資源,可以在configure下面進(jìn)行配置
1.先資源名字
crm(live)configure# primitive webip ocf:heartbeat:IPaddr params ip=192.168.2.100
2.查看
crm(live)configure# show
node node1.a.com

node node2.a.com

primitive webip ocf:heartbeat:IPaddr \

params ip="192.168.2.100"

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

dc-version="1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f" \

cluster-infrastructure="openais" \

expected-quorum-votes="2" \

stonith-enabled="false"

3.提交 crm(live)configure# commit
4.crm(live)# status
============
Last updated: Mon May 7 19:39:37 2012
Stack: openai
Current DC: node1.a.com - partition with quorum
Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
2 Nodes configured, 2 expected votes
1 Resources configured.
============
Online: [ node1.a.com node2.a.com ]
webIP (ocf::heartbeat:IPaddr): Started node1.a.com
可以看出該資源在node1上啟動
5.實(shí)用ifconfig 在節(jié)點(diǎn)1上進(jìn)行查看
[root@node1 corosync]# ifconfig



6.定義web服務(wù)資源
在兩個節(jié)點(diǎn)上都要進(jìn)行安裝
安裝完畢后,可以查看httpd的lsb腳本
[root@node2 corosync]# crm ra list lsb
或者
crm(live)ra# list lsb
查看httpd的參數(shù)
crm(live)ra# meta lsb:httpd
lsb:httpd
Apache is a World Wide Web server. It is used to serve \
HTML files and CGI.
Operations' defaults (advisory minimum):
start timeout=15
stop timeout=15
status timeout=15
restart timeout=15
force-reload timeout=15
monitor interval=15 timeout=15 start-delay=15
定義httpd的資源
crm(live)configure# primitive webserver lsb:httpd
crm(live)configure# show

crm(live)configure# commit

crm(live)configure# en

crm(live)# status

發(fā)現(xiàn)httpd已經(jīng)啟動了,但是在node2節(jié)點(diǎn)上(高級群集服務(wù)資源越來越多,會分布在不同的節(jié)點(diǎn)上,以盡量負(fù)載均衡)需要約束在同一個節(jié)點(diǎn)上,定義成一個組

可以實(shí)用 crm(live)configure# help group 查看配置組的幫助 信息
crm(live)configure# help group

定義組
crm(live)configure# group web webip webserver
crm(live)configure# show

因?yàn)檫@里只有兩個節(jié)點(diǎn),需要對這兩個節(jié)點(diǎn)的票數(shù)進(jìn)行關(guān)閉

可選的參數(shù)有如下 ignore (忽略)
freeze (凍結(jié),表示已經(jīng)啟用的資源繼續(xù)實(shí)用,沒有啟用的資源不能啟用)
stop(默認(rèn))
suicide (所有的資源殺掉)

crm(live)configure# property no-quorum-policy=ignore

在次查看群集的狀態(tài)
crm(live)# status

(現(xiàn)在ip地址和 httpd都已經(jīng)在node1上了)


lsb之類的服務(wù),一定不能自動啟動 chkconfig httpd off
1 .測試,在兩個節(jié)點(diǎn)上做網(wǎng)頁
在節(jié)點(diǎn)1 和節(jié)點(diǎn)2 上分別創(chuàng)建網(wǎng)頁
使用http://群集ip 發(fā)現(xiàn)在第一個節(jié)點(diǎn)上
2.將節(jié)點(diǎn)1 的corosync 服務(wù)停止
[root@node1 corosync]# service corosync stop
3. 在節(jié)點(diǎn)2上進(jìn)行觀察
[root@node2 corosync]# crm status


DRBD
添加分區(qū)
[root@node1 ~]# fdisk /dev/sda

[root@node1~]# partprobe /dev/sda
[root@node1 ~]# cat /proc/partitions

在節(jié)點(diǎn)2上做同樣配置

安裝drbd,用來構(gòu)建分布式存儲。
這里要選用適合自己系統(tǒng)的版本進(jìn)行安裝,我用到的是


軟件:

kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

drbd83-8.3.8-1.el5.centos.i386.rp

1.安裝DRBD軟件

[root@drbd1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm //主文件安裝

[root@drbd1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm //內(nèi)核文件安裝

2.加載內(nèi)核

[root@drbd1 ~]# modprobe drbd

3.配置主文件

root@drbd1 ~]# vim /etc/drbd.conf 在末行模式下輸入如下命令

:r /usr/share/doc/drbd83-8.3.8/drbd.conf

# You can find an example in /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";

include "drbd.d/*.res";

# please have a a look at the example configuration file in

# /usr/share/doc/drbd83/drbd.conf

#

4.配置全局文件

[root@drbd1 ~]# cd /etc/drbd.d

[root@drbd1 drbd.d]# cp global_common.conf global_common.conf.bak //備份文件

[root@drbd1 drbd.d]# vim global_common.conf 修改如下

global {

usage-count no; //取消DRBD使用者統(tǒng)計

# minor-count dialog-refresh disable-ip-verification

}

common {

protocol C; //使用協(xié)議C

startup {

wfc-timeout 120; //啟動延遲

degr-wfc-timeout 120;

}

disk { //fence防腦裂

on-io-error detach;

fencing resource-only;

}

net {

cram-hmac-alg "sha1"; //主備節(jié)點(diǎn)使用的通信算法

shared-secret "mydrbdlab";

}

syncer {

rate 100M; //主備節(jié)點(diǎn)同步速率

}

}

5.定義資源

[root@drbd1 ~]# vim web.res

resource web { (資源名稱)

on node1.a.com { (節(jié)點(diǎn)名)

device /dev/drbd0; (虛擬設(shè)備名稱)

disk /dev/sda4; (真實(shí)設(shè)備名)

address 192.168.2.10:7789; (監(jiān)聽自身的IP的地址端口)

meta-disk internal;

}

on node2.a.com {

device /dev/drbd0;

disk /dev/sda4;

address 192.168.2.20:7789;

meta-disk internal;

}

}

6.node2也需要進(jìn)行同樣的配置,配置與node1配置是一樣的

node1node2上初始化資源web

[root@drbd1 ~]# drbdadm create-md web

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.

[root@drbd2 ~]# drbdadm create-md web

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.

7.啟動drbd服務(wù)

注意兩個節(jié)點(diǎn)要一起啟動,否則在啟動時會處于一直等待狀態(tài)

[root@drbd1 ~]# service drbd start

[root@drbd2 ~]# service drbd start

8.查看節(jié)點(diǎn)狀態(tài)

在節(jié)點(diǎn)一上查看

[root@drbd1 ~]# drbd-overview

0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----

在節(jié)點(diǎn)二上查看

[root@drbd2 ~]# drbd-overview

0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----

web:資源名

Secondary/Secondary:自身狀態(tài)/另外節(jié)點(diǎn)狀態(tài)

由上面的兩個節(jié)點(diǎn)的狀態(tài)可看到,兩個節(jié)點(diǎn)都是備用節(jié)點(diǎn),我們需要手動調(diào)整

9.drbd1.a.com調(diào)整為主節(jié)點(diǎn)

[root@drbd1 ~]# drbdadm -- --overwrite-data-of-peer primary web

10.再次查看狀態(tài)

節(jié)點(diǎn)一

[root@drbd1 ~]# drbd-overview

0:web Connected Primary/Secondary UpToDate/UpToDate C r----

節(jié)點(diǎn)二

[root@drbd2 ~]# drbd-overview

0:web Connected Secondary/Primary UpToDate/UpToDate C r----

可以看出drbd1.a.com已經(jīng)成為主節(jié)點(diǎn)了

11.在主節(jié)點(diǎn)上創(chuàng)建文件系統(tǒng)

[root@drbd1 ~]# mkfs.ext3 -L drbdweb /dev/drbd0 L:卷名

12.測試

1> 在主節(jié)點(diǎn)上創(chuàng)建掛載點(diǎn),掛載后,寫入一個文件

[root@drbd1 ~]# mkdir /mnt/drbd

[root@drbd1 ~]# mount /dev/drbd0 /mnt/drbd

[root@drbd1 ~]# cd /mnt/drbd

[root@drbd1 drbd]# touch index.html

[root@drbd1 drbd]# ll

total 16

-rw-r--r-- 1 root root 0 Jan 20 18:09 index.html

drwx------ 2 root root 16384 Jan 20 18:07 lost+found

2> drbd1.a.com配置成從節(jié)點(diǎn),將drbd2.a.com配置成主節(jié)點(diǎn)

節(jié)點(diǎn)一

[root@drbd1 drbd]# cd

[root@drbd1 ~]# umount /mnt/drbd

[root@drbd1 ~]# drbdadm secondary web

[root@drbd1 ~]# drbdadm role web

Secondary/Primary

[root@drbd1 ~]#

節(jié)點(diǎn)二

[root@drbd2 ~]# drbdadm primary web

[root@drbd2 ~]# drbd-overview

0:web Connected Primary/Secondary UpToDate/UpToDate C r----

3> 在節(jié)點(diǎn)二掛載,查看是否有內(nèi)容

[root@drbd2 ~]# mkdir /mnt/drbd

[root@drbd2 ~]# mount /dev/drbd0 /mnt/drbd

[root@drbd2 ~]# ll /mnt/drbd/

total 16

-rw-r--r-- 1 root root 0 Jan 20 18:09 index.html //可以看到已經(jīng)寫入成功

drwx------ 2 root root 16384 Jan 20 18:07


轉(zhuǎn)載于:https://blog.51cto.com/ymchaofeng/1319275

總結(jié)

以上是生活随笔為你收集整理的corosync/openais+pacemaker+drbd+web实现高可用群集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。