av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Centos5.6x86下部署安裝DRBD+Heartbeat+MySQL

【獨(dú)家特稿】報錯信息如下所示:

創(chuàng)新互聯(lián)公司服務(wù)項目包括龍華網(wǎng)站建設(shè)、龍華網(wǎng)站制作、龍華網(wǎng)頁制作以及龍華網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,龍華網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到龍華省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

 
 
 
  1. Operation refused.
  2. Command 'drbdmeta 0 v08 /dev/sda2 internal create-md' terminated with exit code 40
  3. drbdadm create-md r0: exited with code 40

這個時候我們需要使用dd命令覆蓋文件系統(tǒng)中的設(shè)備塊信息,如下所示:

 
 
 
  1. dd if=/dev/zero of=/dev/sda2 bs=1M count=128

這個時候請一定要注意dd命令要清除的分區(qū)信息,不要搞錯了,不然很容易將系統(tǒng)損壞,我第一次實驗時就遇到了這個問題;如果部署DRBD時的分區(qū)信息是不需要寫進(jìn)/etc/fstab表的,即不需要在安裝系統(tǒng)時就掛載,不然重啟系統(tǒng)時很容易發(fā)生Emergency信息,簽于以上情況,所以我這里建議大家還是用獨(dú)立硬盤作為DRBD的設(shè)備。

兩臺機(jī)器的基本情況如下所示:

centos1.cn7788.com 192.168.11.32

centos2.cn7788.com 192.168.11.33

Heartbeat的vip為 192.168.11.30

兩臺機(jī)器的hosts文件內(nèi)容如下所示:

192.168.11.32 centos1.cn7788.com centos1

192.168.11.33 centos2.cn7788.com centos2

實驗中暫時先用千M交換機(jī)的網(wǎng)絡(luò)作為心跳線線路,等實驗搭建成功后再考慮加雙絞線作為心跳線,兩臺機(jī)器的hostname及ntp對時這些在實驗前就應(yīng)該配置好,iptables和SElinux關(guān)閉,具體情況略過。

一、DRBD的部署安裝

兩臺機(jī)器分別用如下命令來安裝drbd軟件,如下所示:

 
 
 
  1. yum -y install drbd83 kmod-drbd83
  2. modprobe drbd
  3. lsmod | grep drbd

正確顯示如下類似信息,表示DRBD已成功安裝:

 
 
 
  1. drbd                  300440  4

兩臺機(jī)器的drbd.conf配置文件內(nèi)容如下所示(兩臺機(jī)器的配置是一樣的):

 
 
 
  1. cat  /etc/drbd.conf                  
  2. global {
  3. # minor-count dialog-refresh disable-ip-verification
  4. usage-count no;         #統(tǒng)計drbd的使用
  5. }
  6. common {
  7. syncer  { rate 30M; }    #同步速率,視帶寬而定
  8. }
  9. resource r0 {           #創(chuàng)建一個資源,名字叫”r0”
  10. protocol C;             #選擇的是drbd的C 協(xié)議(數(shù)據(jù)同步協(xié)議,C為收到數(shù)據(jù)并寫入后返回,確認(rèn)成功)
  11. handlers {              #默認(rèn)drbd的庫文件
  12. pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
  13. pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
  14. local-io-error "/usr/lib/drbd/notify-io-error.sh; 
  15. /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
  16. # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
  17. # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
  18. # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
  19. # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
  20. # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
  21. }
  22. startup {
  23. # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
  24. wfc-timeout 120;
  25. degr-wfc-timeout 120;     
  26. }
  27. disk {
  28. # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes
  29. # no-disk-drain no-md-flushes max-bio-bvecs
  30. on-io-error detach;
  31. }
  32. net {
  33. # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers
  34. # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret
  35. # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork
  36. max-buffers 2048;
  37. cram-hmac-alg "sha1";
  38. shared-secret "123456";
  39. #DRBD同步時使用的驗證方式和密碼信息
  40. #allow-two-primaries;
  41. }
  42. syncer {
  43. rate 100M;
  44. # rate after al-extents use-rle cpu-mask verify-alg csums-alg
  45. }
  46. on centos1.cn7788.com {  #設(shè)定一個節(jié)點,分別以各自的主機(jī)名命名
  47. device  /dev/drbd0;     #設(shè)定資源設(shè)備/dev/drbd0 指向?qū)嶋H的物理分區(qū) /dev/sdb
  48. disk    /dev/sdb;
  49. address 192.168.11.32:7788;  #設(shè)定監(jiān)聽地址以及端口
  50. meta-disk       internal;
  51. }
  52. on centos2.cn7788.com {          #設(shè)定一個節(jié)點,分別以各自的主機(jī)名命名
  53. device  /dev/drbd0; #設(shè)定資源設(shè)備/dev/drbd0 指向?qū)嶋H的物理分區(qū) /dev/sdb
  54. disk    /dev/sdb;
  55. address 192.168.11.33:7788;       #設(shè)定監(jiān)聽地址以及端口
  56. meta-disk       internal;         #internal表示是在同一個局域網(wǎng)內(nèi)
  57. }
  58. }

1.創(chuàng)建DRBD元數(shù)據(jù)信息,執(zhí)行命令如下所示(兩臺機(jī)器都需要執(zhí)行此步):

 
 
 
  1. [root@centos1 ~]# drbdadm create-md r0
  2. md_offset 8589930496
  3. al_offset 8589897728
  4. bm_offset 8589635584
  5. Found some data
  6.  ==> This might destroy existing data! <==
  7. Do you want to proceed?
  8. [need to type 'yes' to confirm] yes
  9. Writing meta data...
  10. initializing activity log
  11. NOT initialized bitmap
  12. New drbd meta data block successfully created.
  13. [root@centos2 ~]# drbdadm create-md r0
  14. md_offset 8589930496
  15. al_offset 8589897728
  16. bm_offset 8589635584
  17. Found some data
  18.  ==> This might destroy existing data! <==
  19. Do you want to proceed?
  20. [need to type 'yes' to confirm] yes
  21. Writing meta data...
  22. initializing activity log
  23. NOT initialized bitmap
  24. New drbd meta data block successfully created.

2.啟動DRBD設(shè)備,兩臺機(jī)器上分別執(zhí)行如下命令:

 
 
 
  1. service drbd start 

3.在centos1的機(jī)器上我們查看DRBD狀態(tài),命令如下所示:

 
 
 
  1. [root@centos1 ~]# service drbd status
  2. drbd driver loaded OK; device status:
  3. version: 8.3.13 (api:88/proto:86-96)
  4. GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by [email protected], 2012-05-07 11:56:36
  5. m:res  cs         ro                   ds                         p  mounted  fstype
  6. 0:r0   Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

4.將centos1的機(jī)器作為DRBD的Primary機(jī)器,命令如下所示:

 
 
 
  1. [root@centos1 ~]# drbdsetup /dev/drbd0 primary -o 
  2. [root@centos1 ~]# drbdadm primary r0

然后我們再查看其狀態(tài),命令如下所示:

 
 
 
  1. [root@centos1 ~]# service drbd status
  2. drbd driver loaded OK; device status:
  3. version: 8.3.13 (api:88/proto:86-96)
  4. GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by [email protected], 2012-05-07 11:56:36
  5. m:res  cs          ro                 ds                     p  mounted  fstype
  6. ...    sync'ed:    3.9%               (7876/8188)M
  7. 0:r0   SyncSource  Primary/Secondary  UpToDate/Inconsistent  C

我們發(fā)現(xiàn),Primary/Secondary關(guān)系已形成,而且數(shù)據(jù)在進(jìn)行同步,已同步了3.9%,我們稍為等待段時間,再查看Primary機(jī)器的DRBD狀態(tài),如下所示:

 
 
 
  1. [root@centos1 ~]# service drbd status
  2. drbd driver loaded OK; device status:
  3. version: 8.3.13 (api:88/proto:86-96)
  4. GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by [email protected], 2012-05-07 11:56:36
  5. m:res  cs         ro                 ds                 p  mounted  fstype
  6. 0:r0   Connected  Primary/Secondary  UpToDate/UpToDate  C

UpToDate/UpToDate表示數(shù)據(jù)已經(jīng)同步完成了。

5.在兩臺機(jī)器上都建立/drbd分區(qū),準(zhǔn)備將其作為MySQL的掛載目錄,命令如下所示:

 
 
 
  1. mkdir /drbd

6.格式化Primary機(jī)器的DRBD分區(qū)并掛載使用。

 
 
 
  1. mkfs.ext3 /dev/drbd0 
  2. mount /dev/drbd0 /drbd/

注:Secondary節(jié)點上是不允許對DRBD設(shè)備進(jìn)行任何操作,包括只讀,所以的讀寫操作都只能在Primary節(jié)點上進(jìn)行,只有當(dāng)Primary節(jié)點掛掉時,Secondary代替主節(jié)點作為Primary節(jié)點時才能進(jìn)行讀寫操作。

7.兩臺機(jī)器都將DRBD設(shè)為自啟動服務(wù),命令如下:

chkconfig drbd on

二、Heartbeat的安裝和部署

1.兩臺機(jī)器上分別用yum來安裝heartbeat,如下命令操作二次:

 
 
 
  1. yum -y install heartbeat

如果你只操作一次,你會驚奇的發(fā)現(xiàn),heartbeat第一次時并沒有安裝成功。

2.兩個節(jié)點的heartbeat配置文件,分別如下所示:

centos1.cn7788.com的配置文件:

 
 
 
  1. logfile /var/log/ha-log
  2. #定義Heartbeat的日志名字及位置
  3. logfacility local0
  4. keepalive 2
  5. #設(shè)定心跳(監(jiān)測)時間為2秒
  6. deadtime 15
  7. #設(shè)定死亡時間為15秒
  8. ucast eth0 192.168.11.33
  9. #采用單播的方式,IP地址指定為對方IP
  10. auto_failback off
  11. #當(dāng)Primary機(jī)器發(fā)生故障切換到Secondary機(jī)器后不再進(jìn)行切回操作
  12. node centos1.cn7788.com centos2.cn7788.com

centos2.cn7788.com的配置文件:

 
 
 
  1. logfile /var/log/ha-log
  2. logfacility local0
  3. keepalive 2
  4. deadtime 15
  5. ucast eth0 192.168.11.32
  6. auto_failback off
  7. node centos1.cn7788.com centos2.cn7788.com

3.編輯雙機(jī)互連驗證文件authkeys,如下所示:

 
 
 
  1. cat /etc/ha.d/authkeys
  2. auth 1
  3. 1 crc 

需要將此文件設(shè)定為600權(quán)限,不然啟動heartbeat服務(wù)時會報錯,命令如下所示:

 
 
 
  1. chmod 600 /etc/ha.d/authkeys

4.編輯集群資源文件/etc/ha.d/haresource

 
 
 
  1. centos1.rogrand.com IPaddr::192.168.11.30/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/drbd::ext3  mysqld

這個文件在兩臺機(jī)器上都是一樣的,這個就不要輕易改動了。

mysqld為mysql服務(wù)器啟動、重啟及關(guān)閉腳本,這個是安裝MySQL自帶的,我們等會會在安裝MySQL提到此步。

                                           

三、源碼編譯安裝mysql5.1.47并部署haresource

1.在MySQL官方網(wǎng)站上下載mysql5.1.47的源碼包,在兩臺機(jī)器上分別安裝,具體步驟如下所示:

安裝gcc等基礎(chǔ)庫文件

 
 
 
  1. yum install gcc gcc-c++ zlib-devel libtool ncurses-devel libxml2-devel

生成mysql用戶及用戶組

 
 
 
  1. groupadd mysql
  2. useradd -g mysql mysql

源碼編譯安裝mysql5.1.47

 
 
 
  1. tar zxvf mysql-5.1.47.tar.gz
  2. cd mysql-5.1.47
  3. ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all --enable-thread-safe-client --enable-assembler --with-readline --with-big-tables --with-plugins=all  --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static
  4. make
  5. make install

2.對mysql進(jìn)行權(quán)限配置,使其能順利啟動。

 
 
 
  1. cd /usr/local/mysql
  2. cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
  3. cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
  4. cp /usr/local/mysql/share/mysql/mysql.server /etc/ha.d/resource.d/mysqld
  5. chmod +x /etc/init.d/mysqld 
  6. chmod +x /etc/ha.d/resource.d/mysqld
  7. chown -R mysql:mysql /usr/local/mysql 

3.兩臺機(jī)器上的/etc/my.cnf的[mysqld]項下面重新配置下mysql運(yùn)行時的數(shù)據(jù)存放路徑

 
 
 
  1. datadir=/drbd/data

4.在Primary機(jī)器上運(yùn)行如下命令,使其數(shù)據(jù)庫目錄生成數(shù)據(jù),Secondary機(jī)器不需要運(yùn)行此步。

 
 
 
  1. /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/drbd/data

注意:這里是整個實驗環(huán)境的一個重要環(huán)節(jié),我起初在搭建此步時出過幾次問題,我們運(yùn)行MySQL是在啟動DRBD設(shè)備之后,即正確將/dev/drbd0目錄正確掛載到/drbd目錄,而并非沒掛載就去啟動MySQL,這會導(dǎo)致整個實驗完全失敗,大家做到此步時請注意。做完這步以后,我們不需要啟動MySQL,它可以靠腳本來啟動,如果已經(jīng)啟動了MySQL請手動關(guān)閉。

四、在兩臺機(jī)器上將DRBD和Heartbeat都設(shè)成自啟動方式

service drbd start

chkcfonig drbd on

service heartbeat start

chkconfig heartbeat on

通過觀察Primary機(jī)器上的信息,我們得知,Primary機(jī)器已經(jīng)正確啟動了MySQL和Heartbaet了,信息如下所示:

 
 
 
  1. [root@centos1 data]# ip addr 
  2. 1: lo:  mtu 16436 qdisc noqueue 
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5. 2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
  6.     link/ether 00:0c:29:48:2e:9f brd ff:ff:ff:ff:ff:ff
  7.     inet 192.168.11.32/24 brd 192.168.11.255 scope global eth0
  8.     inet 192.168.11.30/24 brd 192.168.11.255 scope global secondary eth0:0

通過查看到3306端口被占用情況,我們得知mysql服務(wù)已被正常開啟。

 
 
 
  1. [root@centos1 data]# lsof -i:3306
  2. COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
  3. mysqld  4341 mysql   18u  IPv4   9807       TCP *:mysql (LISTEN)

五、其余的工作其實就比較好測試了,我們主要是模擬Primary機(jī)器重啟或死機(jī)時,看Secondary機(jī)器能不能自動接管過來并啟動MySQL,我們重啟Primary機(jī)器后在Secondary機(jī)器上觀察,命令如下所示:

 
 
 
  1. IPaddr[3050]:   2012/09/04_09:51:24 INFO:  Resource is stopped
  2. ResourceManager[3023]:  2012/09/04_09:51:24 info: Running /etc/ha.d/resource.d/IPaddr 192.168.11.30/24/eth0 start
  3. IPaddr[3149]:   2012/09/04_09:51:25 INFO: Using calculated netmask for 192.168.11.30: 255.255.255.0
  4. IPaddr[3149]:   2012/09/04_09:51:26 INFO: eval ifconfig eth0:0 192.168.11.30 netmask 255.255.255.0 broadcast 192.168.11.255
  5. IPaddr[3119]:   2012/09/04_09:51:26 INFO:  Success
  6. heartbeat[2842]: 2012/09/04_09:51:26 WARN: Late heartbeat: Node centos1.rogrand.com: interval 3510 ms
  7. ResourceManager[3023]:  2012/09/04_09:51:26 info: Running /etc/ha.d/resource.d/drbddisk r0 start
  8. Filesystem[3300]:   2012/09/04_09:51:27 INFO:  Resource is stopped
  9. ResourceManager[3023]:  2012/09/04_09:51:27 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /drbd ext3 start
  10. Filesystem[3382]:   2012/09/04_09:51:28 INFO: Running start for /dev/drbd0 on /drbd
  11. Filesystem[3370]:   2012/09/04_09:51:28 INFO:  Success
  12. ResourceManager[3023]:  2012/09/04_09:51:29 info: Running /etc/ha.d/resource.d/mysqld  start
  13. mach_down[2997]:    2012/09/04_09:51:31 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
  14. mach_down[2997]:    2012/09/04_09:51:31 info: mach_down takeover complete for node centos1.rogrand.com.
  15. heartbeat[2842]: 2012/09/04_09:51:31 info: mach_down takeover complete.
  16. heartbeat[2842]: 2012/09/04_09:51:32 WARN: node centos1.rogrand.com: is dead
  17. heartbeat[2842]: 2012/09/04_09:51:32 info: Dead node centos1.rogrand.com gave up resources.
  18. heartbeat[2842]: 2012/09/04_09:51:35 info: Link centos1.rogrand.com:eth0 dead.

稍等片刻我們會發(fā)現(xiàn),Secondary機(jī)器會自動接管VIP,并啟動MySQL服務(wù),如下所示:

 
 
 
  1. [root@centos2 data]# ip addr 
  2. 1: lo:  mtu 16436 qdisc noqueue 
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5. 2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
  6.     link/ether 00:0c:29:34:ee:af brd ff:ff:ff:ff:ff:ff
  7.     inet 192.168.11.33/24 brd 192.168.11.255 scope global eth0
  8. inet 192.168.11.30/24 brd 192.168.11.255 scope global secondary eth0:0

實施整個過程需要注意有以下幾點:

一、Secondary主機(jī)用來做DRBD的硬盤可以跟Primar主機(jī)的不一樣大小,但請不要小于Primary主機(jī),以免發(fā)生數(shù)據(jù)丟失的現(xiàn)象;

二、服務(wù)器網(wǎng)卡及交換機(jī)我都推薦千M系列的,在測試中發(fā)現(xiàn)其同步速率介于100M-200M之間,這里采用官方的建議,以最小值的30%帶寬來設(shè)置rate速率,即100M*30%,大家也可根據(jù)自己的實際網(wǎng)絡(luò)環(huán)境來設(shè)定此值;

三、DRBD對網(wǎng)絡(luò)環(huán)境要求很高,建議用單獨(dú)的雙絞線來作為二臺主機(jī)之間的心跳線,如果條件允許,可以考慮用二根以上的心跳線;如果這個環(huán)節(jié)做得好,基本上腦裂的問題是不存在的。其實整個實驗初期都可以在同一網(wǎng)絡(luò)下實現(xiàn),后期再加心跳線也是可行的。

四、安裝Heartbeat時需要安裝二遍,即yum -y install heartbeat要執(zhí)行二次;

五、建議不要用根分區(qū)作為MySQL的datadir,不然你show database時會發(fā)現(xiàn)會出現(xiàn)名為#mysql50#lost+found的數(shù)據(jù)庫,這也是我將MySQL的數(shù)據(jù)庫目錄設(shè)置成/drbd/data的原因。

六、就算發(fā)生腦裂的問題,DRBD也不會丟失數(shù)據(jù)的,手動解決就是;正因為DRBD可靠,MySQL也推薦將其作為MySQL實現(xiàn)高可用方案之一。

七、MySQL的DRBD此方案不能達(dá)到毫秒級的切換速度,MyISAM引擎的表在系統(tǒng)宕機(jī)后需要很長的修復(fù)時間,而且也有可能發(fā)生表損壞的情況,建議大家將所有除了系統(tǒng)表之外的所有表引擎改為InnoDB引擎。

作者微博:weibo.com/yuhongchun027

作者博客:andrewyu.blog.


網(wǎng)頁題目:Centos5.6x86下部署安裝DRBD+Heartbeat+MySQL
分享路徑:http://uogjgqi.cn/article/cdjeheo.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流