成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

CentOS 7.5數(shù)據(jù)庫架構(gòu)之NFS+Heartbeat+DRBD實(shí)測

理論概述

本案例只是,為搭建MySQL集群做準(zhǔn)備,并無MySQL

DRBD

DRBD(distributed replicated block device分布式復(fù)制塊設(shè)備)是一個基于軟件實(shí)現(xiàn)的、無共享的、服務(wù)器之間鏡像塊設(shè)備內(nèi)容的存儲復(fù)制解決方案。DRBD是鏡像塊設(shè)備,是按數(shù)據(jù)位鏡像成一樣的數(shù)據(jù)塊

DRBD可以部署在如下類的底層設(shè)備上: 1、一個磁盤,或者是磁盤的某一個分區(qū); 2、一個soft raid 設(shè)備; 3、一個LVM的邏輯卷; 4、一個EVMS(Enterprise Volume Management System,企業(yè)卷管理系統(tǒng))的卷; 5、其他任何的塊設(shè)備。

工作原理

CentOS 7.5數(shù)據(jù)庫架構(gòu)之NFS+Heartbeat+DRBD實(shí)測

DRBD需要運(yùn)行在各個節(jié)點(diǎn)上,且是運(yùn)行在節(jié)點(diǎn)主機(jī)的內(nèi)核中,所以DRBD是內(nèi)核模塊,在Linux2.6.33版本起開始整合進(jìn)內(nèi)核。

DRBD工作的位置在文件系統(tǒng)的buffer Cache和磁盤調(diào)度器之間

如上圖左節(jié)點(diǎn)為活躍節(jié)點(diǎn)實(shí)線箭頭,有節(jié)點(diǎn)為備用節(jié)點(diǎn)虛線箭頭。 左節(jié)點(diǎn)接收到數(shù)據(jù)法網(wǎng)內(nèi)核的數(shù)據(jù)通路,DRBD在數(shù)據(jù)通路中注冊鉤子檢查數(shù)據(jù)(類似ipvs)當(dāng)檢測到接收的數(shù)據(jù)是發(fā)往自己管理的存儲位置,程序會復(fù)制另一份,一份存儲到本機(jī)的DRBD存儲設(shè)備,另一份就發(fā)給TCP/IP協(xié)議棧,通過網(wǎng)絡(luò)傳輸?shù)搅硪慌_節(jié)點(diǎn)上TCP/IP協(xié)議棧;另一臺節(jié)點(diǎn)上運(yùn)行的DRBD模塊同樣在數(shù)據(jù)通路上監(jiān)測數(shù)據(jù),當(dāng)檢測到傳輸過來的數(shù)據(jù)時,運(yùn)行存儲機(jī)制,存儲到本機(jī)DRBD存儲設(shè)備的對應(yīng)位置。

如果左節(jié)點(diǎn)宕機(jī),在高可用集群中右節(jié)點(diǎn)成為活躍節(jié)點(diǎn),并且會接收到左節(jié)點(diǎn)宕機(jī)的信號,接受數(shù)據(jù)先保存到本地,左節(jié)點(diǎn)恢復(fù)上線之后,再把左節(jié)點(diǎn)宕機(jī)后右節(jié)點(diǎn)變動的 數(shù)據(jù)鏡像到左節(jié)點(diǎn)。 每個設(shè)備(drbd 提供了不止一個設(shè)備)都有一個狀態(tài),可能是‘主’狀態(tài)或‘從’態(tài)。在主節(jié)點(diǎn)上,應(yīng)用程序應(yīng)能運(yùn)行和訪問drbd設(shè)備(/dev/drbd)。每次寫入會發(fā)往本地磁盤設(shè)備和從節(jié)點(diǎn)設(shè)備中。從節(jié)點(diǎn)只能簡單地把數(shù)據(jù)寫入它的磁盤設(shè)上。 讀取數(shù)據(jù)通常在本地進(jìn)行。如果主節(jié)點(diǎn)發(fā)生故障,心跳(heartbeat或corosync)將會把從節(jié)點(diǎn)轉(zhuǎn)換到主狀態(tài),并啟動其上的應(yīng)用程序。(如果您將它和無日志FS 一起使用,則需要運(yùn)行fsck)。如果發(fā)生故障的節(jié)點(diǎn)恢復(fù)工作,它就會成為新的從節(jié)點(diǎn),而且必須使自己的內(nèi)容與主節(jié)點(diǎn)的內(nèi)容保持同步。

復(fù)制模式 鏡像過程完成之后還需要返回成功或失敗的回應(yīng)信息?;貞?yīng)信息可以在傳輸過程中的不同位置返回,如上圖A/B/C三處, 可以分為三種復(fù)制模式:

特點(diǎn): 實(shí)時復(fù)制:一段修改之后馬上復(fù)制過去 透明的傳輸:程序不需要檢測到這個數(shù)據(jù)存儲在多個主機(jī)上 同步或者異步:同步鏡像:程序?qū)懖僮魍瓿珊髸ㄖ幸呀?jīng)連接的主機(jī);異步同步:程序會在本地寫完之前通知其它的主機(jī)。

A:一旦本地磁盤寫入已經(jīng)完成,數(shù)據(jù)包已在發(fā)送隊列中,則寫操作被認(rèn)為是完成的 。在一個節(jié)點(diǎn)發(fā)生故障時,可能發(fā)生數(shù)據(jù)丟失,因為被寫入到遠(yuǎn)程節(jié)點(diǎn)上的數(shù)據(jù)可能仍在發(fā)送隊列。盡管,在故障轉(zhuǎn)移節(jié)點(diǎn)上的數(shù)據(jù)是一致的,但沒有及時更新。這通常是用于地理上分開的節(jié)點(diǎn)。 B:一旦本地磁盤寫入已完成且復(fù)制數(shù)據(jù)包達(dá)到了對等節(jié)點(diǎn)則認(rèn)為寫操作在主節(jié)點(diǎn)上被認(rèn)為是完成的。數(shù)據(jù)丟失可能發(fā)生在參加的兩個節(jié)點(diǎn)同時故障的情況下,因為在飛行中的數(shù)據(jù)可能不會被提交到磁盤。 C:只有在本地和遠(yuǎn)程節(jié)點(diǎn)的磁盤已經(jīng)確認(rèn)了寫操作完成,寫才被認(rèn)為完成。沒有任何數(shù)據(jù)丟失,所以這是一個群集節(jié)點(diǎn)的流行模式,但I(xiàn)/O吞吐量依賴于網(wǎng)絡(luò)帶寬。 A 數(shù)據(jù)一旦寫入磁盤并發(fā)送到網(wǎng)絡(luò)中就認(rèn)為完成了寫入操作。 B 收到接收確認(rèn)就認(rèn)為完成了寫入操作。 C 收到寫入確認(rèn)就認(rèn)為完成了寫入操作。 就目前而言應(yīng)用最多和應(yīng)用最廣泛的為協(xié)議C。

架構(gòu)

MySQL+heartbeat+drbd+lvs是一套成熟的集群解決方案在現(xiàn)在多數(shù)企業(yè)里面,通過heartbeat+DRBD完成MySQL的主節(jié)點(diǎn)寫操作的高可用性,通過MySQL+lvs實(shí)現(xiàn)MySQL數(shù)據(jù)庫的主從復(fù)制和MySQL讀寫的負(fù)載均衡。這個方案在讀寫方面進(jìn)行了分離,融合了寫操作的高可用和讀操作的負(fù)載均衡。

NFS

NFS作為業(yè)界常用的共享存儲方案,被眾多公司采用。使用NFS作為共享存儲,為前端WEB server提供服務(wù),主要存儲網(wǎng)頁代碼以及其他文件。

  • 常用同步技術(shù)
  1. rsync+inotify實(shí)現(xiàn)文件同步
  2. 借助DRBD,實(shí)現(xiàn)文件同步
    但是以上方案都沒有實(shí)現(xiàn)高可用,只是實(shí)現(xiàn)了兩者數(shù)據(jù)同步。但是業(yè)務(wù)要求NFS服務(wù)器必須是高可用,所以我們在第二種同步方案的基礎(chǔ)上,在結(jié)合heartbeat來實(shí)現(xiàn)高可用。

架構(gòu)部署

采用MySQL讀寫分離的方案;而讀寫之間的數(shù)據(jù)同步采用MySQL的單項或者雙向復(fù)制技術(shù)實(shí)現(xiàn)。 MySQL寫操作采用基于heartbeat+DRBD+MySQL搭建高可用集群;讀操作普遍采用基于LVS+keepalived搭建高可用擴(kuò)展集群方案

本案例中暫時沒部署MySQL,實(shí)現(xiàn)思路:dbmaster和dbbackup兩臺機(jī)器,分別安裝nfs,heartbeat,dbmaster,DRBD。

  • nfs可以另找一臺服務(wù)器搭建專門用為共享存儲。
  • nfs的控制權(quán)交給了heartbeat。

架構(gòu)拓?fù)?/p>

CentOS 7.5數(shù)據(jù)庫架構(gòu)之NFS+Heartbeat+DRBD實(shí)測

環(huán)境 全部都是CentOS 7.5 系統(tǒng)
主機(jī)名|IP|擔(dān)任角色
–|–|–
dbmaster|192.168.111.3|drbd主,nfs server,heartbeat主
dbbackup|192.168.111.4|drbd被,heartbeat被
VIP|192.168.111.100
nfs客戶端|192.168.111.5|掛載VIP共享的目錄測試

部署DRBD

  1. 所有主機(jī)配置hosts并且改為對應(yīng)的主機(jī)名
  2. 所有主機(jī)保持網(wǎng)絡(luò)狀況的良好通信
  3. 所有主機(jī)安裝最新的epel源
  4. DRBD這兩臺各自分別添加了1GB硬盤供DRBD使用
  5. 同步時間
[root@localhost ~]# vim /etc/hosts      192.168.111.7 lvsmaster             192.168.111.8 lvsbackup      192.168.111.3 dbmaster      192.168.111.4 dbbackup      192.168.111.5 dbslave1      192.168.111.6 dbslave2    [root@dbmaster yum.repos.d]# uname -r  3.10.0-862.el7.x86_64  #這是舊的    [root@dbbackup ~]# yum install kernel* -y    [root@dbbackup ~]# reboot    [root@localhost ~]# uname -r  3.10.0-957.12.1.el7.x86_64  #這是新的      drbd                  397041  0   libcrc32c              12644  4 xfs,drbd,nf_nat,nf_conntrack      [root@dbbackup ~]# yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y    [root@dbbackup ~]# yum -y install drbd84-utils kmod-drbd84  #安裝DRBD  [root@localhost ~]# modprobe drbd  #不出意外這樣就OK了  [root@localhost ~]# lsmod |grep -i drbd
  • 分區(qū)
[root@localhost ~]# fdisk /dev/sdb   歡迎使用 fdisk (util-linux 2.23.2)。    更改將停留在內(nèi)存中,直到您決定將更改寫入磁盤。  使用寫入命令前請三思。    Device does not contain a recognized partition table  使用磁盤標(biāo)識符 0x7ce5781e 創(chuàng)建新的 DOS 磁盤標(biāo)簽。    命令(輸入 m 獲取幫助):n  Partition type:     p   primary (0 primary, 0 extended, 4 free)     e   extended  Select (default p): p  分區(qū)號 (1-4,默認(rèn) 1):  起始 扇區(qū) (2048-2097151,默認(rèn)為 2048):  將使用默認(rèn)值 2048  Last 扇區(qū), +扇區(qū) or +size{K,M,G} (2048-2097151,默認(rèn)為 2097151):  將使用默認(rèn)值 2097151  分區(qū) 1 已設(shè)置為 Linux 類型,大小設(shè)為 1023 MiB    命令(輸入 m 獲取幫助):w  The partition table has been altered!    Calling ioctl() to re-read partition table.  正在同步磁盤。    #以上關(guān)于DRBD和分區(qū)的操作在111.3和111.4機(jī)器上重復(fù)操作,master和backup分區(qū)大小一致。
  • 修改配置文件
[root@dbmaster ~]# vim /etc/drbd.conf   #include "drbd.d/global_common.conf";   #注釋掉這行,避免和我們自己寫的配置產(chǎn)生沖突。      include "drbd.d/*.res";      include "drbd.d/*.cfg";  [root@localhost ~]# vim /etc/drbd.d/drbd_basic.cfg       global {          usage-count yes;          #是否參與DRBD使用者統(tǒng)計,默認(rèn)為yes,yes or no都無所謂       }      common {          syncer { rate 30M; }      }      #設(shè)置主備節(jié)點(diǎn)同步的網(wǎng)絡(luò)速率最大值,默認(rèn)單位是字節(jié),我們可以設(shè)定為兆      resource r0 {      #r0為資源名,我們在初始化磁盤的時候就可以使用資源名來初始化。          protocol C;          #使用 C 協(xié)議。          handlers {              pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f ";                pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt ";              local-io-error "echo o > /proc/sysrq-trigger ; halt -f";              fence-peer "/usr/lib4/heartbeat/drbd-peer-outdater -t 5";              pri-lost "echo pri-lst. Have a look at the log file.mail -s 'Drbd Alert' root";              split-brain "/usr/lib/drbd/notify-split-brain.sh root";              out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";      }          net {            cram-hmac-alg "sha1";            shared-secret "MySQL-HA";            #drbd同步時使用的驗證方式和密碼信息      }          disk {            on-io-error detach;            fencing resource-only;            # 使用DOPD(drbd outdate-peer deamon)功能保證數(shù)據(jù)不同步的時候不進(jìn)行切換。      }          startup {            wfc-timeout 120;            degr-wfc-timeout 120;      }          device /dev/drbd0;          #這里/dev/drbd0是用戶掛載時的設(shè)備名字,由DRBD進(jìn)程創(chuàng)建          on dbmaster {          #每個主機(jī)名的說明以on開頭,后面是hostname(必須在/etc/hosts可解析)            disk /dev/sdb1;            #使用這個磁盤作為drbd的磁盤/dev/drbd0。            address 192.168.111.3:7788;            #設(shè)置DRBD的監(jiān)聽端口,用于與另一臺主機(jī)通信            meta-disk internal;            #drbd的元數(shù)據(jù)存放方式      }          on dbbackup {            disk /dev/sdb1;            address 192.168.111.4:7788;            meta-disk internal;      }      }
  • drbd報錯
[root@dbmaster ~]# drbdadm create-md r0  WARN:    You are using the 'drbd-peer-outdater' as fence-peer program.    If you use that mechanism the dopd heartbeat plugin program needs    to be able to call drbdsetup and drbdmeta with root privileges.      You need to fix this with these commands:    chgrp haclient /lib/drbd/drbdsetup-84    chmod o-x /lib/drbd/drbdsetup-84    chmod u+s /lib/drbd/drbdsetup-84      chgrp haclient /usr/sbin/drbdmeta    chmod o-x /usr/sbin/drbdmeta    chmod u+s /usr/sbin/drbdmeta    md_offset 1072689152  al_offset 1072656384  bm_offset 1072623616    Found xfs filesystem       1047552 kB data area apparently used       1047484 kB left usable by current configuration    Device size would be truncated, which  would corrupt data and result in  'access beyond end of device' errors.  You need to either     * use external meta data (recommended)     * shrink that filesystem first     * zero out the device (destroy the filesystem)  Operation refused.    Command 'drbdmeta 0 v08 /dev/sdb1 internal create-md' terminated with exit code 40

應(yīng)該是該分區(qū)有殘留的文件

  • 解決
[root@dbmaster ~]# dd if=/dev/zero of=/dev/sdb1 bs=1M count=1  記錄了1+0 的讀入  記錄了1+0 的寫出  1048576字節(jié)(1.0 MB)已復(fù)制,0.00339429 秒,309 MB/秒  [root@dbmaster ~]# drbdadm create-md r0    --==  Thank you for participating in the global usage survey  ==--  The server's response is:    you are the 14097th user to install this version  WARN:    You are using the 'drbd-peer-outdater' as fence-peer program.    If you use that mechanism the dopd heartbeat plugin program needs    to be able to call drbdsetup and drbdmeta with root privileges.      You need to fix this with these commands:    chgrp haclient /lib/drbd/drbdsetup-84    chmod o-x /lib/drbd/drbdsetup-84    chmod u+s /lib/drbd/drbdsetup-84      chgrp haclient /usr/sbin/drbdmeta    chmod o-x /usr/sbin/drbdmeta    chmod u+s /usr/sbin/drbdmeta    initializing activity log  initializing bitmap (32 KB) to all zero  Writing meta data...  New drbd meta data block successfully created.  success  #使用dd命令清空,然后再執(zhí)行
  • 進(jìn)一步配置
[root@dbmaster ~]# systemctl start drbd.service  [root@dbbackup ~]# systemctl enable drbd.service   #啟動服務(wù)    #如報錯,試試如下,不報錯跳過這步  [root@dbmaster ~]# groupadd haclient  [root@dbmaster ~]# chgrp haclient /lib/drbd/drbdsetup-84  [root@dbmaster ~]# chmod o-x /lib/drbd/drbdsetup-84  [root@dbmaster ~]# chmod u+s /lib/drbd/drbdsetup-84  [root@dbmaster ~]# chgrp haclient /usr/sbin/drbdmeta  [root@dbmaster ~]# chmod o-x /usr/sbin/drbdmeta  [root@dbmaster ~]# chmod u+s /usr/sbin/drbdmeta  #以上這幾個操作,找了很多資料都沒有提到要做,還特意提醒不用做,可能環(huán)境不同吧,不做一直報錯    [root@dbmaster ~]# drbdadm primary --force r0  #主上操作  [root@dbmaster ~]# drbdadm role r0  Primary/Secondary  #查看狀態(tài)    [root@dbbackup ~]# drbdadm role r0  Secondary/Primary  #backup機(jī)器查看狀態(tài)    [root@dbbackup ~]# drbdadm dstate r0  UpToDate/UpToDate  #查看數(shù)據(jù)同步狀態(tài),如上為一致,還有Inconsistent狀態(tài)為數(shù)據(jù)不一致正在同步
  • 掛載DRBD磁盤
現(xiàn)在dbmaster上操作  [root@dbmaster ~]# mkfs.ext4 /dev/drbd0   mke2fs 1.42.9 (28-Dec-2013)  文件系統(tǒng)標(biāo)簽=  OS type: Linux  塊大小=4096 (log=2)  分塊大小=4096 (log=2)  Stride=0 blocks, Stripe width=0 blocks  65536 inodes, 261871 blocks  13093 blocks (5.00%) reserved for the super user  第一個數(shù)據(jù)塊=0  Maximum filesystem blocks=268435456  8 block groups  32768 blocks per group, 32768 fragments per group  8192 inodes per group  Superblock backups stored on blocks:       32768, 98304, 163840, 229376    Allocating group tables: 完成                              正在寫入inode表: 完成                              Creating journal (4096 blocks): 完成  Writing superblocks and filesystem accounting information: 完成      [root@dbmaster ~]# mkdir /nfs  [root@dbmaster ~]# mount /dev/drbd0 /nfs          現(xiàn)在是dbbackup上操作,主要是檢測備端是否能夠正常掛載和使用:    [root@dbmaster ~]# umount /nfs  #主上將設(shè)備卸載  [root@dbmaster ~]# drbdadm secondary all  #切換為被狀態(tài)    [root@dbbackup ~]# drbdadm primary r0  #被設(shè)為主狀態(tài)  [root@dbbackup ~]# mkdir /nfs  [root@dbbackup ~]# mount /dev/drbd0 /nfs    [root@dbbackup ~]# df -Th  文件系統(tǒng)                類型      容量  已用  可用 已用% 掛載點(diǎn)  /dev/mapper/centos-root xfs        17G  4.5G   13G   27% /  devtmpfs                devtmpfs  470M     0  470M    0% /dev  tmpfs                   tmpfs     487M     0  487M    0% /dev/shm  tmpfs                   tmpfs     487M   14M  473M    3% /run  tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup  /dev/sr0                iso9660   4.2G  4.2G     0  100% /media/cdrom  /dev/sda1               xfs      1014M  251M  764M   25% /boot  tmpfs                   tmpfs      98M     0   98M    0% /run/user/0  /dev/drbd0              ext4      991M  2.6M  922M    1% /database    再按相同的方法將狀態(tài)切換回來

好的,這下簡單測試了下,先告一段落

部署heartbeat

  • 安裝cluster-glue
  [root@dbmaster ~]# ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa  [root@dbmaster ~]# ssh-copy-id root@dbbackup  #ssh免密認(rèn)證    [root@dbbackup ~]# yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc -y  #兩機(jī)同樣操作安裝依賴    [root@dbbackup ~]# useradd -g haclient hacluster    安裝包下載  下載軟件包:Reusable-Components-glue、resource-agents、heartbeat  免費(fèi)下載地址在 http://linux.linuxidc.com/  用戶名與密碼都是www.linuxidc.com  具體下載目錄在 /2019年資料/2月/26日/CentOS 7下安裝配置Heartbeat高可用集群/  下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm    [root@dbmaster ~]# tar -jxvf glue.tar.bz2   #我這是改名之后的,原來的是一串?dāng)?shù)字  [root@dbmaster ~]# cd Reusable-Cluster-Components-glue--0a7add1d9996/  [root@dbmaster Reusable-Cluster-Components-glue--0a7add1d9996]# ./autogen.sh  ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'  make && make install  echo $?  cd ..
  • 安裝resource-agents
  [root@dbbackup ~]# tar zxf resource-agents-3.9.6.tar.gz   [root@dbbackup ~]# cd resource-agents-3.9.6/  ./autogen.sh   ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'  make && make install  echo $?  cd ..
  • 安裝heartbeat
  [root@dbmaster ~]# tar jxf heartbeat.bz2   #該名稱是我后來改過的  [root@dbmaster ~]# cd Heartbeat-3-0-958e11be8686/    ./bootstrap  export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"  ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'  make && make install  echo $?    [root@dbbackup ~]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/  [root@dbbackup ~]# cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/    [root@dbmaster ~]# cp Heartbeat-3-0-958e11be8686/doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/  #拷貝配置文件    [root@dbmaster Heartbeat-3-0-958e11be8686]# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys   #該權(quán)限必須為600  #以上安裝兩臺機(jī)器一樣
  • 配置文件
[root@dbmaster ~]# vim /usr/local/heartbeat/etc/ha.d/haresources  #末尾添加如下  dbmaster IPaddr::192.168.111.100/24/ens32 drbddisk::r0 Filesystem::/dev/drbd0::/nfs::ext4 killnfsd  #dbmaster IPaddr::192.168.111.10/24/ens32主機(jī)名 后跟虛擬IP地址、接口  #drbddisk::r0管理drbd資源的名稱  #Filesystem::/dev/drbd0::/nfs::ext4 renfsd文件系統(tǒng)::掛載的目錄及格式::后跟renfsd資源腳本    [root@dbmaster ~]# cp /etc/ha.d/resource.d/drbddisk /usr/local/heartbeat/etc/ha.d/resource.d/  #兩臺一樣    [root@dbmaster ~]# echo "pkill -9 nfs; systemctl restart nfs; exit 0" > /usr/local/heartbeat/etc/ha.d/resource.d/killnfsd  #編輯nfs腳本文件killnfsd ,killnfsd 腳本文件的作用,  #drbd主備切換時,若nfs沒有啟動,則此腳本會把nfs啟動  #drbd主備切換時,若nfs已啟動,則此腳本會重啟nfs服務(wù),因為NFS服務(wù)切換后,必須重新mount一下nfs共享出來的目錄,否則會出現(xiàn)stale NFS file handle的錯誤    [root@dbmaster ~]# chmod +x /usr/local/heartbeat/etc/ha.d/resource.d/drbddisk  [root@dbmaster ~]# chmod +x /usr/local/heartbeat/etc/ha.d/resource.d/killnfsd         [root@dbmaster resource.d]# pwd  /usr/local/heartbeat/etc/ha.d/resource.d  [root@dbmaster resource.d]#  ll drbddisk Filesystem killnfsd IPaddr   -rwxr-xr-x 1 root root 3162 5月  14 15:43 drbddisk  -rwxr-xr-x 1 root root 1923 5月  14 10:15 Filesystem  -rwxr-xr-x 1 root root 2297 5月  14 10:15 IPaddr  -rwxr-xr-x 1 root root   57 5月  14 15:41 killnfsd  #必須要有這四個腳本,有的是自帶,有的是復(fù)制,有的自己寫,上面已經(jīng)說明而且必須要有執(zhí)行權(quán)限。
  [root@dbmaster ~]# vim  /usr/local/heartbeat/etc/ha.d/ha.cf  #修改主配置文件(去掉注釋或修改值)  logfile /var/log/ha-log  #指定heartbeat日志文件的位置  logfacility     local0  #利用系統(tǒng)日志打印日志  keepalive 1  # 心跳發(fā)送時間間隔  deadtime 5   # 備用節(jié)點(diǎn)5s內(nèi)沒有檢測到master機(jī)的心跳,確認(rèn)對方故障  warntime 2  # 警告2次  initdead 10  # 守護(hù)進(jìn)程啟動30s后,啟動服務(wù)資源。  udpport 694  #設(shè)定集群節(jié)點(diǎn)間的通信協(xié)議及端口為udp694監(jiān)聽端口(該端口可以修改)  ucast ens32 192.168.111.4  # 另一臺主機(jī)節(jié)點(diǎn)eth0的地址,注意是另一臺。  auto_failback off  #當(dāng)primary節(jié)點(diǎn)切換到secondary節(jié)點(diǎn)之后,primary節(jié)點(diǎn)恢復(fù)正常,不進(jìn)行切回操作,因為切換一次mysql master成本很高。  node    dbmaster  node    dbbackup  # 定義兩個節(jié)點(diǎn)的主機(jī)名,一行寫一個。  ping 192.168.111.2  #兩個IP的網(wǎng)關(guān)  respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail   #使用這個腳本去偵聽對方是否還活著(使用的是ICMP報文檢測)        [root@dbmaster ~]# vim /usr/local/heartbeat/etc/ha.d/authkeys  #認(rèn)證文件      auth 1      #表示使用id為2的驗證 下邊需要定義一個2的驗證算法      1 sha1 HA_DB      #口令(HISHA1)隨便給 主從配置相同即可

dbdackup也是同樣的安裝方法,配置文件直接scp過去就可以了,然后修改

[root@dbmaster ~]# scp -r /usr/local/heartbeat/etc/ha.d/{authkeys,haresources,ha.cf} root@dbbackup:/usr/local/heartbeat/etc/ha.d/
[root@dbbackup ha.d]# vim /usr/local/heartbeat/etc/ha.d/ha.cf   ucast ens32 192.168.111.3  #把backup節(jié)點(diǎn)上ha.cf配置文件中ucast中IP改為對方    [root@dbmaster ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/    [root@dbmaster ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/  #2機(jī)器將這些庫文件鏈接過去,要不啟動報錯  May 13 13:09:27 dbmaster heartbeat: [86183]: ERROR: Illegal directive [ucast] in /usr/local/heartbeat/etc/ha.d/ha.cf

部署NFS及配合heartbeat

[root@dbbackup ~]# yum -y install  nfs-utils nfs-utils-lib nfs4-acl-tools  #dbmaster和dbbackup安裝  [root@dbmaster ~]# vim /etc/exports      /nfs    192.168.111.0/255.255.255.0(rw,sync,no_root_squash)  #設(shè)置nfs共享目錄,權(quán)限,網(wǎng)段  [root@dbmaster ~]# systemctl restart rpcbind    #啟動順序一定是rpcbind->nfs,否則有可能出現(xiàn)錯誤  #在這里nfs不需要啟動,它由heartbeat控制    [root@dbmaster ~]# systemctl start heartbeat  [root@dbmaster ~]# systemctl enable heartbeat  #最多等一兩分鐘VIP肯定出來,否則查看日志  [root@dbmaster ~]# ip a | grep inet  #主上查看      inet 127.0.0.1/8 scope host lo      inet6 ::1/128 scope host       inet 192.168.111.3/24 brd 192.168.111.255 scope global noprefixroute ens32      inet 192.168.111.100/24 brd 192.168.111.255 scope global secondary ens32:0  #到了這,VIP肯定要出來,可以稍等會,觀察下日志。如果出錯,上面可能哪一步?jīng)]有到位  [root@dbmaster ~]# mount | grep drbd  /dev/drbd0 on /nfs type ext4 (rw,relatime,data=ordered)  #這個也已經(jīng)根據(jù)配置自動掛載    [root@dbbackup ~]# showmount -e 192.168.111.100  Export list for 192.168.111.100:  /nfs 192.168.111.0/255.255.255.0  #查看VIP共享的目錄
  • 配置nfs自動掛載
[root@localhost ~]# mkdir /nfs  [root@localhost ~]# mount 192.168.111.100:/nfs/ /nfs/  #客戶端測試  [root@localhost ~]# echo "192.168.111.100:/nfs /nfs nfs defaults,soft,intr 0 0" >> /etc/fstab   [root@localhost ~]# tail -1 /etc/fstab   192.168.111.100:/nfs /nfs nfs defaults,soft,intr 0 0  #Nfs是類型  #soft參數(shù)是為了向用戶輸出錯誤信息  #intr參數(shù)為了解決當(dāng)網(wǎng)絡(luò)出現(xiàn)故障時,我們可以通過按下ctrl+c組合鍵來終止操作  
  • 驗證:接下來我們在主上把nfs服務(wù)關(guān)掉,模擬故障,看VIP是否切換主機(jī)
[root@dbmaster ~]# systemctl stop nfs  [root@dbmaster ~]# systemctl status nfs  ● nfs-server.service - NFS server and services     Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)    Drop-In: /run/systemd/generator/nfs-server.service.d             └─order-with-mounts.conf     Active: inactive (dead) since 二 2019-05-14 18:21:09 CST; 6s ago    Process: 61802 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)    Process: 61799 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)    Process: 61797 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)   Main PID: 60625 (code=exited, status=0/SUCCESS)    5月 14 16:35:58 dbmaster systemd[1]: Starting NFS server and services...  5月 14 16:35:58 dbmaster systemd[1]: Started NFS server and services.  5月 14 18:21:09 dbmaster systemd[1]: Stopping NFS server and services...  5月 14 18:21:09 dbmaster systemd[1]: Stopped NFS server and services.

我在主被兩臺機(jī)器上查看debug日志,沒有任何變動

[root@dbbackup ~]# cd /nfs    #我在掛載了VIP的機(jī)器上查看共享目錄能否使用,卡死終端

總結(jié)下原因:heartbeat沒有監(jiān)控到nfs的服務(wù)狀態(tài),它自身想當(dāng)然的認(rèn)為,只有heartbeat服務(wù)出故障,才切VIP。

解決:我們將nfs,和heartbeat服務(wù)做一個捆綁,類似于事物性質(zhì)。即nfs出問題,heartbeat也要宕掉。這里通過腳本實(shí)現(xiàn)。

[root@dbmaster ~]# vim /opt/monitornfs.sh    while true  do      drbdstatus=`cat /proc/drbd 2> /dev/null  | grep ro | tail -n1 | awk -F':' '{print $4}' | awk -F'/' '{print $1}'`      nfsstatus=`systemctl status nfs&>/dev/null ; echo $?`        if [ -z  $drbdstatus ];then          sleep 10          continue      elif [ $drbdstatus == 'Primary' ];then          if [ $nfsstatus -ne 0 ];then              systemctl start nfs &> /dev/null              newnfsstatus=`systemctl status nfs&>/dev/null ; echo $?`              if [ $newnfsstatus -ne 0 ];then              systemctl stop heartbeat              #嘗試開啟之后若還是不行,則關(guān)掉heartbeat              fi          fi      fi      sleep 5  done    [root@dbmaster ~]# chmod +x /opt/monitornfs.sh   [root@dbmaster ~]# nohup /opt/monitornfs.sh &  #以上關(guān)于腳本操作,在dbbackup上重復(fù)
  • 測試
[root@dbmaster ~]# systemctl stop nfs  #主節(jié)點(diǎn)關(guān)掉nfs服務(wù)    #但是后臺的腳本又給他開啟了  [root@dbmaster ~]# systemctl stop heartbeat  #VIP切換到備機(jī)了  

但是nfs客戶端的使用并不影響,切換的時候會有輕微的延遲。

nfs切記要掛載到別的機(jī)器上不要為了省事,省機(jī)器

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
国产精品美女久久久| 国产乱人伦偷精品视频下| 国产Chinese男男GayGay网站| 国产精品对白刺激久久久| 国产特级毛片AAAAAA毛片| 精品国产亚洲AV麻豆| 老师的兔子好多软水好多动漫 | 亚洲综合无码AV一区二区| 岳又紧又嫩又多水好爽| WYC忘忧草在线看WWW| 国产成人精品高清在线观看99 | 久久亚洲国产成人精品无码区| 内射后入在线观看一区| 日日摸日日碰人妻无码老牲| 无人区一码一码二码三码区别 | 8Ⅹ8X擦拨擦拨成人免费视频| 99久久国产综合精品女同图片| 丁香花视频资源在线观看| 国产日韩AV免费无码一区二区三 | 野花日本韩国视频免费高清观看 | 欲しがる人妻 波多野结衣| Xx性欧美肥妇精品久久久久久久久| 国产成人8X视频网站| 久久AⅤ无码AV高潮AV喷吹| 欧美成人精品一区二区| 玩稚嫩的小屁股眼AV| 蜜桃av噜噜噜一区二区三区| 妺妺窝人体色WWW聚色窝仙踪 | 肉感饱满中年熟妇日本| 国产精品美女久久久网站动漫| 精品国产亚洲AV麻豆尤物| 蜜桃国产精品乱码一区二区三区| 日产精品一卡2卡三卡4乱码| 亚洲AV无码国产精品夜色午夜 | 午夜福利1000集合集92| 一区二区三区欧美| 绯色AV一区二区三区3∪8| 狠狠躁夜夜人人爽天96| 欧美丰满大乳高跟鞋| 无码人妻一区二区三区一| 影音先锋亚洲亚洲色图| 丰满岳乱妇在线观看中字| 久久精品国产色蜜蜜麻豆| 日本人妻丰满熟妇久久久久久| 亚洲AV午夜国产精品无码中文字| A4YY午夜福利视频无码| 国产日产欧产精品| 年轻老师的滋味5| 香港三日本三级少妇三级2021 | 免费播放片高清在线视频| 色综合视频一区二区三区44| 一本大道东京热无码视频| 国产23在线 | 传媒麻豆| 狼人视频国产在线视频WWW色| 深入浅出TXL金银花讲的什么| 一本大道在线无码一区| 国产成人高清精品免费软件| 老头猛挺进小雯的体内视频 | 欧美一区二区放荡人妇| 亚洲成人av无码| 苍井空张开腿实干12次| 久久九九精品国产综合喷水| 黑人巨大高潮喷水AV| 欧美性猛交XXXX黑人猛交| 亚洲国产成AV人天堂无码| 成人无码精品无码社区| 久久久婷婷五月亚洲97号色| 无码免费无线观看在线视| CHINESE交换俱乐部4P| 精品综合久久久久久888| 少妇午夜福利水多多| 18禁止看的免费污网站| 黄网站色视频免费观看| 少妇极品丰满人妻无码视频| 51国偷自产一区二区三区| 极品少妇被猛的白浆直喷白浆| 色婷婷五月综合亚洲小说| 18禁又污又黄又爽的网站不卡| 黑人粗大猛烈进出高潮视频| 十八款夜间禁用APP| AAA欧美色吧激情视频| 九月九电影免费观看| 午夜影视免费观看2023| Y1111111少妇影院| 迷迷糊糊挺进岳身体| 亚洲精品成人片在线观看精品字幕 | 欧美成人A天堂片在线观看| 亚洲日韩AV一区二区三区四区 | 久久久免费无码成人影片| 性妇VODAFONEWIFI精| 纯爱无遮挡H肉动漫| 女儿的朋友7中汉字晋通话| 亚洲熟妇无码乱子AⅤ电影| 国产日韩综合一区二区性色AV| 入禽太深免费视频| JAPAN丰满人妻VIDEOS| 麻豆国产尤物AV尤物在线观看| 亚洲娇小与黑人巨大交| 国产欧美成AⅤ人高清| 熟女少妇内射日韩亚洲| 波多野结衣AV在线| 欧美日韩国产精品| 1000部拍拍拍18勿入免费视| 久久久亚洲熟妇熟| 亚洲精品无码一区二区AⅤ污美国| 国产精选午睡沙发系列999| 熟妇人妻中文字幕无码老熟妇| 被男狂揉吃奶胸60分钟视频| 欧美成人家庭影院| 18禁裸乳无遮挡啪啪无码免费| 久久无码高潮喷水免费看| 亚洲一区二区三区成人网站| 国语偷拍人妻露脸| 小雪的L3又嫩又紧又多水图| 国产成人无码精品久久二区三区| 色婷婷亚洲一区二区三区| 成人无码精品无码社区| 人妻少妇无码精品视频区| JAVAPARSERHD高潮| 欧洲美熟女乱又伦免费视频| 99久久99精品久久久久久| 男女性高爱潮免费网站| 中文字幕一区二区三区日韩精品| 久久久亚洲一区少妇无码| 一本加勒比HEZYO无码人妻| 久久久久精品电影一区二区三区| 亚洲熟妇色av一区二区浪潮| 久久99精品久久久久久齐齐 | 天码AV高清毛片在线看_| 国产成人AV片无码免费| 婷婷综合久久中文字幕蜜桃三电影| 国产AV鲁丝一区二区二区| 天天摸夜夜摸夜夜狠狠摸| 国产精品久久久久无码AV| 午夜免费福利小电影| 国模GOGO大尺度尿喷人体| 亚洲国产欧美在线成人| 精品无码国模私拍视频| 野花高清在线观看免费官网中文版 | 老头巨大挺进莹莹的体内免费视频| 在线人成视频播放午夜福利| 男人的天堂AV网站| YIN荡护士揉捏乱P办公室视频| 日韩精品无码人成视频手机| 国产超碰人人做人人爽AV大片| 午夜精品一区二区三区免费视频| 果冻传媒免费观看4399| 亚洲熟妇AV一区二区三区宅男| 久久影院午夜伦手机不四虎卡| 717影院理论午夜伦八戒| 秋霞免费理论片在线观看| 动漫精品视频一区二区三区| 无码熟妇人妻AⅤ在线影片| 激情五月丁香六月综合AVXXXX | 久久亚洲精品成人AV无码网站| 50岁老熟人乱一区二区三区| 人妻无码不卡中文字幕在线视频| 粗大猛烈进出高潮视频| 午夜A级理论片在线播放不卡| 精品久久免费一区二区三区四区 | 无码性午夜视频在线观看| 教官在我腿中疯狂律动H| 在线精品亚洲一区二区| 人妻无码精品久久亚瑟影视| 国产激情久久久久久熟女老人| 亚洲国产精品久久久天堂不卡海量 | 亚洲女毛多水多21P| 男人J桶进女人P无遮挡| 丁香花在线观看免费高清版| 亚洲AⅤ天堂无码专区| 久久婷婷日日澡天天添| 按摩师的巨大滑进我的身体| 无码熟妇人妻AV在线电影| 久久AV高清无码| FREE紧VIDEOXX粗又长| 偷拍精品视频一区二区三区| 精品久久综合1区2区3区激情| 18禁亲胸揉胸膜下刺激免费网站| 色婷婷AV一区二区三区| 国内精品视频在线观看九九| 在小巷里被强高HNP| 色偷偷亚洲第一成人综合网址| 黑人巨大精品欧美黑寡妇| 88久久精品无码一区二区毛片| 特级小箩利无码毛片| 精品亚洲自慰AV无码喷奶水| YSL千人千色T9T9T9| 亚洲AV成人综合网| 男人猛躁进女人免费播放| 国产成人亚洲精品无码H在线| 野花AⅤ亚洲高清完整版在线观看| 人妻人人做人做人人爱| 国产在线清纯极品美女援交| 1000部夫妻午夜免费| 无线乱码一二三区免费看| 蜜桃AV噜噜一区二区三区| 国产粉嫩馒头无套内在线观看免费 | 少妇兽交PWWW综合网| 久久久久久久精品无码Av少妇| 抖音无限次短视频老司机|