Heartbeat+DRBD+MySQL高可用方案
創(chuàng)新互聯(lián)建站專注于威寧網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供威寧營銷型網(wǎng)站建設(shè),威寧網(wǎng)站制作、威寧網(wǎng)頁設(shè)計(jì)、威寧網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造威寧網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供威寧網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。===============================================================================
概述:
===============================================================================
1.方案介紹及優(yōu)缺點(diǎn)
★方案介紹
本方案采用Heartbeat雙機(jī)熱備軟件來保證數(shù)據(jù)庫的高穩(wěn)定性和連續(xù)性,數(shù)據(jù)的一致性由DRBD這個(gè)工具來保證。默認(rèn)情況下只有一臺(tái)mysql在工作,當(dāng)主mysql服務(wù)器出現(xiàn)問題后,系統(tǒng)將自動(dòng)切換到備機(jī)上繼續(xù)提供服務(wù),當(dāng)主數(shù)據(jù)庫修復(fù)完畢,又將服務(wù)切回繼續(xù)由主mysql提供服務(wù)。
★方案優(yōu)缺點(diǎn)
◆優(yōu)點(diǎn):
安全性高、穩(wěn)定性高、可用性高,出現(xiàn)故障自動(dòng)切換。
◆缺點(diǎn):
只有一臺(tái)服務(wù)器提供服務(wù),成本相對(duì)較高,不方便擴(kuò)展,可能會(huì)發(fā)生腦裂。
2.軟件介紹
★Heartbeat介紹
官方站點(diǎn):http://linux-ha.org/wiki/Main_Page
heartbeat可以將資源(VIP地址及程序服務(wù))從一臺(tái)有故障的服務(wù)器快速的轉(zhuǎn)移到另一臺(tái)正常的服務(wù)器提供服務(wù),heartbeat和keepalived相似,heartbeat可以實(shí)現(xiàn)failover功能,但不能實(shí)現(xiàn)對(duì)后端的健康檢查;
★DRBD介紹
官方站點(diǎn):http://www.drbd.org/
DRBD(DistributedReplicatedBlockDevice)是一個(gè)基于塊設(shè)備級(jí)別在遠(yuǎn)程服務(wù)器之間同步和鏡像數(shù)據(jù)的軟件,用軟件實(shí)現(xiàn)的、無共享的、服務(wù)器之間鏡像塊設(shè)備內(nèi)容的存儲(chǔ)復(fù)制解決方案。它可以實(shí)現(xiàn)在網(wǎng)絡(luò)中兩臺(tái)服務(wù)器之間基于塊設(shè)備級(jí)別的實(shí)時(shí)鏡像或同步復(fù)制(兩臺(tái)服務(wù)器都寫入成功)/異步復(fù)制(本地服務(wù)器寫入成功),相當(dāng)于網(wǎng)絡(luò)的RAID1,由于是基于塊設(shè)備(磁盤,LVM邏輯卷),在文件系統(tǒng)的底層,所以數(shù)據(jù)復(fù)制要比cp命令更快。DRBD已經(jīng)被MySQL官方寫入文檔手冊作為推薦的高可用的方案之一;
適用場景:
適用于數(shù)據(jù)庫訪問量不太大,短期內(nèi)訪問量增長不會(huì)太快,對(duì)數(shù)據(jù)庫可用性要求非常高的場景。
1.測試環(huán)境介紹(均已關(guān)閉防火墻和selinux)
主機(jī)名 | IP地址 | 系統(tǒng) | DRBD磁盤 | heartbeat版本 |
per2 | 172.22.144.232 | CentOS 6.5 | /dev/sdb3 | 2.1.4-12 |
per3 | 172.22.144.233 | CentOS 6.5 | /dev/sdb3 | 2.1.4-12 |
2.測試環(huán)境準(zhǔn)備:
★本地yum源配置
將裝系統(tǒng)時(shí)使用的光盤上的所有文件拷貝到主機(jī) /cdrom下
★Ntpserver配置
集群服務(wù)各節(jié)點(diǎn)之間的時(shí)間必須是同步的,所以這里需要搭建一臺(tái)NTP server,這里選擇在一臺(tái)服務(wù)器(node1)上搭建,其他節(jié)點(diǎn)(配置crontab)用ntpdate serverip進(jìn)行同步,具體部署步驟如下:
★域名解析配置
將所有的IP和主機(jī)名寫入一臺(tái)服務(wù)器的/etc/hosts,然后scp到每一臺(tái)服務(wù)器。
★主被服務(wù)器件雙機(jī)互信通信
DRBD安裝配置及啟動(dòng)測試:
1.安裝依賴包(node1和node2都要做)
yum install -y gcc gcc-c++ make glibc flex kernel-devel kernel-headers PyXML net-snmp-libs tigervnc-server2.DRBD的安裝及配置(node1和node2都要做)
1)安裝包準(zhǔn)備如下:
[root@node1 heartbeat+drbd+mysql]# cd drbd/ [root@node1 drbd]# ll 總用量 45652 -rw-r--r-- 1 root root 224376 4月 26 17:15 drbd83-utils-8.3.16-1.el6.elrepo.x86_64.rpm -rw-r--r-- 1 root root 688328 4月 26 17:15 drbd-8.4.3.tar.gz -rw-r--r-- 1 root root 30514788 4月 26 17:16 kernel-2.6.32-504.12.2.el6.x86_64.rpm -rw-r--r-- 1 root root 15133064 4月 26 17:16 kernel-firmware-2.6.32-504.12.2.el6.noarch.rpm -rw-r--r-- 1 root root 177360 4月 26 17:16 kmod-drbd83-8.3.16-3.el6.elrepo.x86_64.rpm2)解壓 drbd-8.4.3.tar.gz的壓縮包,并進(jìn)入到解壓后的目錄中,執(zhí)行命令,如下:
# 解壓 [root@node1 drbd]# tar -zxvf drbd-8.4.3.tar.gz [root@node1 drbd]# cd drbd-8.4.3 [root@node1 drbd-8.4.3]# ls autogen.sh configure documentation drbd-kernel.spec.in filelist-redhat preamble preamble-sles11 scripts benchmark configure.ac drbd drbd-km.spec.in filelist-suse preamble-rhel5 README user ChangeLog COPYING drbd_config.h drbd.spec.in Makefile.in preamble-sles10 rpm-macro-fixes [root@node1 drbd-8.4.3]# ./configure --prefix=/usr/local/drbd --with-km --with-heartbeat [root@node1 drbd-8.4.3]# make KDIR=/usr/src/kernels/`uname -r` [root@node1 drbd-8.4.3]# make install # 編譯完成后的文件在 /usr/local/drbd 路徑下3)進(jìn)入 /usr/local/drbd 目錄,完成后續(xù)操作如下:
[root@node1 drbd]# mkdir -p /usr/local/drbd/var/run/drbd [root@node1 drbd]# cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d # 加入到服務(wù)中去 [root@node1 init.d]# chkconfig --add drbd [root@node1 init.d]# chkconfig drbd on4)加載drbd模塊
[root@node1 init.d]# modprobe drbd # 查看是否加載 drbd 模塊 [root@node1 init.d]# lsmod |grep drbd drbd 326138 0 libcrc32c 1246 1 drbd3.DRBD的配置啟動(dòng)
1)編輯drbd的配置文件如下(node1和node2相同):
[root@node1 etc]# pwd /usr/local/drbd/etc [root@node1 etc]# vim 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"; resource data{ #創(chuàng)建一個(gè)資源,名字叫"data" protocol C; #選擇的是drbd的C 協(xié)議(數(shù)據(jù)同步協(xié)議,C為收到數(shù)據(jù)并寫入后返回,確認(rèn)成功) startup { wfc-timeout 0; degr-wfc-timeout 120;} disk { on-io-error detach;} net{ timeout 60; connect-int 10; ping-int 10; max-buffers 2048; max-epoch-size 2048; } syncer { rate 100M;} on node1{ #設(shè)定一個(gè)節(jié)點(diǎn),分別以各自的主機(jī)名命名 device /dev/drbd0; #設(shè)定資源設(shè)備/dev/drbd0 指向?qū)嶋H的物理分區(qū) /dev/sda3 disk /dev/sdb3; address 172.21.1.112:7788; #設(shè)定監(jiān)聽地址以及端口 meta-disk internal; #internal表示是在同一個(gè)局域網(wǎng)內(nèi) } on node2{ device /dev/drbd0; disk /dev/sdb3; address 172.21.1.113:7788; meta-disk internal; } }2)初始化資源并啟動(dòng)服務(wù)(node1和node2操作相同)
# /dev/sdb3 是 DRBD分區(qū),在實(shí)驗(yàn)環(huán)境也可能是邏輯卷,依據(jù)情況修改。 # 不這樣做的話,在創(chuàng)建資源的時(shí)候報(bào)錯(cuò) [root@node1 ~]# dd if=/dev/zero of=/dev/sdb3 bs=1M count=100 記錄了100+0 的讀入 記錄了100+0 的寫出 104857600字節(jié)(105 MB)已復(fù)制,3.33403 秒,31.5 MB/秒 [root@node1 ~]# drbdadm create-md data you are the 57124th user to install this version Writing meta data... initializing activity log NOT initializing bitmap New drbd meta data block successfully created. success3)DRBD的啟動(dòng)與查看
[root@node1 init.d]# pwd /etc/init.d # 啟動(dòng)服務(wù) [root@node1 init.d]# ./drbd start Starting DRBD resources: [ create res: data prepare disk: data adjust disk: data adjust net: data ] outdated-wfc-timeout has to be shorter than degr-wfc-timeout outdated-wfc-timeout implicitly set to degr-wfc-timeout (120s) # 檢查端口7788是否監(jiān)聽 [root@node1 init.d]# netstat -tnp Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 248 172.21.1.112:22 172.21.1.58:52000 ESTABLISHED 3922/sshd tcp 0 0 172.21.1.112:7788 172.21.1.113:50683 ESTABLISHED - tcp 0 0 172.21.1.112:22 172.21.1.58:51494 ESTABLISHED 1893/sshd tcp 0 0 172.21.1.112:37965 172.21.1.113:7788 ESTABLISHED -4)查看DRBD的狀態(tài),可以看到這時(shí)還沒有主節(jié)點(diǎn),兩節(jié)點(diǎn)都為Secondary;
[root@node1 init.d]# ./drbd status drbd driver loaded OK; device status: version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@node1, 2017-04-28 10:22:42 m:res cs ro ds p mounted fstype 0:data Connected Secondary/Secondary Inconsistent/Inconsistent C [root@node1 sbin]# pwd /usr/local/drbd/sbin [root@node1 sbin]# ./drbd-overview 0:data/0 Connected Secondary/Secondary Inconsistent/Inconsistent C r-----4.設(shè)置node1節(jié)點(diǎn)為主節(jié)點(diǎn)
[root@node1 ~]# drbdsetup /dev/drbd0 primary --force # 再次查看可以發(fā)現(xiàn)數(shù)據(jù)同步過程已經(jīng)開始 [root@node1 sbin]# ./drbd-overview 0:data/0 SyncSource Primary/Secondary UpToDate/Inconsistent C r---n- [>....................] sync'ed: 0.2% (10236/10244)M [root@node1 sbin]# ./drbd-overview 0:data/0 SyncSource Primary/Secondary UpToDate/Inconsistent C r---n- [>...................] sync'ed: 7.7% (9464/10244)M [root@node1 init.d]# ./drbd status drbd driver loaded OK; device status: version: 8.4.3 (api:1/proto:86-101) GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by root@node1, 2017-04-28 10:22:42 m:res cs ro ds p mounted fstype ... sync'ed: 22.0% (8000/10244)M 0:data SyncSource Primary/Secondary UpToDate/Inconsistent C # 此時(shí),可以使用 watch -n 1 "./drbd-overview" 監(jiān)控同步進(jìn)度 # 等數(shù)據(jù)同步完成以后再次查看狀態(tài),可以發(fā)現(xiàn)節(jié)點(diǎn)已經(jīng)牌實(shí)時(shí)狀態(tài),且節(jié)點(diǎn)已經(jīng)有了主從 [root@node1 sbin]# ./drbd-overview 0:data/0 Connected Primary/Secondary UpToDate/UpToDate C r-----5.創(chuàng)建文件系統(tǒng),及查看大掛載限制并解除
文件系統(tǒng)的掛載只能在Primary節(jié)點(diǎn)進(jìn)行,因此,也只有在設(shè)置了主節(jié)點(diǎn)后才能對(duì)drbd設(shè)備進(jìn)行格式化:
[root@node1 ~]# mkfs.ext4 /dev/drbd0 mke2fs 1.41.12 (17-May-2010) 文件系統(tǒng)標(biāo)簽= 操作系統(tǒng):Linux 塊大小=4096 (log=2) 分塊大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 655776 inodes, 2622521 blocks 131126 blocks (5.00%) reserved for the super user 第一個(gè)數(shù)據(jù)塊=0 Maximum filesystem blocks=2688548864 81 block groups 32768 blocks per group, 32768 fragments per group 8096 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632 正在寫入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. ################################################################################ # 查看大掛載限制 [root@node1 ~]# tune2fs -l /dev/drbd0 | grep ^M Mount count: 0 Maximum mount count: 38 # 解除大掛載限制 [root@node1 ~]# tune2fs -i 0 -c 0 /dev/drbd0 tune2fs 1.41.12 (17-May-2010) Setting maximal mount count to -1 Setting interval between checks to 0 seconds [root@node1 ~]# tune2fs -l /dev/drbd0 | grep ^M Mount count: 0 Maximum mount count: -1注:
如果drbd是由heartbeat管理,則兩臺(tái)機(jī)器都要設(shè)置為secondary
從節(jié)點(diǎn)(備機(jī))不能mkfs和mount;Secondary節(jié)點(diǎn)上不允許對(duì)DRBD設(shè)備進(jìn)行任何操作,包括只讀,所有的讀寫操作只能在Primary節(jié)點(diǎn)上進(jìn)行,只有當(dāng)Primary節(jié)點(diǎn)掛掉時(shí),Secondary節(jié)點(diǎn)才能提升為Primary節(jié)點(diǎn),繼續(xù)工作;
6.DRBD主從切換,驗(yàn)證DRBD工作是否正確
1)主節(jié)點(diǎn)操作
[root@node1 ~]# mkdir /mydata [root@node1 ~]# mount /dev/drbd0 /mydata [root@node1 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 97G 9.0G 83G 10% / tmpfs 491M 72K 491M 1% /dev/shm /dev/sda1 194M 29M 155M 16% /boot /dev/drbd0 9.9G 151M 9.2G 2% /mydata [root@node1 ~]# ls /mydata lost+found # 創(chuàng)建樣例數(shù)據(jù) [root@node1 ~]# echo 123456 > /mydata/testfile [root@node1 ~]# ls /mydata lost+found testfile # 解除主節(jié)點(diǎn)的掛載 [root@node1 ~]# umount /mydata [root@node1 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 100944296 9406416 86410152 10% / tmpfs 502204 72 502132 1% /dev/shm /dev/sda1 198337 29472 158625 16% /boot # 主服務(wù)節(jié)點(diǎn)變成從節(jié)點(diǎn) [root@node1 ~]# drbdsetup /dev/drbd0 secondary2)從節(jié)點(diǎn)操作
# 從節(jié)點(diǎn)創(chuàng)建掛載目錄 [root@node2 ~]# mkdir /mydata # 升級(jí)從節(jié)點(diǎn)服務(wù)為主節(jié)點(diǎn) [root@node2 ~]# drbdsetup /dev/drbd0 primary # 掛載 drbd [root@node2 ~]# mount /dev/drbd0 /mydata [root@node2 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 100944296 5168556 90648012 6% / tmpfs 502204 72 502132 1% /dev/shm /dev/sda1 198337 29472 158625 16% /boot /dev/drbd0 10325420 154140 9646776 2% /mydata # 查看樣例數(shù)據(jù)為node1上創(chuàng)建的數(shù)據(jù) [root@node2 ~]# ls /mydata/ lost+found testfile [root@node2 ~]# cat /mydata/testfile 123456此時(shí)可以說明drbd 配置正確,且工作正常。
==============================================================================
MySQL安裝配置及啟動(dòng)(兩節(jié)點(diǎn)同時(shí)安裝)
1.mysql安裝,我這里為了簡單直接安裝編譯好的二進(jìn)制軟件包(兩臺(tái)服務(wù)器都需要安裝,操作一樣,只是第二臺(tái)mysql不需要初始化數(shù)據(jù))
[root@node1 mysql]# ls mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz [root@node1 mysql]# tar xvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz -C /usr/local/ [root@node1 local]# cd /usr/local/mysql [root@node1 local]# ln -s mysql-5.6.36-linux-glibc2.5-x86_64 mysql [root@node1 local]# ll 總用量 48 drwxr-xr-x. 2 root root 4096 4月 27 10:07 bin drwxr-xr-x 7 root root 4096 4月 28 10:23 drbd drwxr-xr-x. 2 root root 4096 9月 23 2011 etc drwxr-xr-x. 2 root root 4096 9月 23 2011 games drwxr-xr-x. 3 root root 4096 4月 27 10:07 include drwxr-xr-x. 4 root root 4096 4月 27 10:07 lib drwxr-xr-x. 2 root root 4096 9月 23 2011 lib64 drwxr-xr-x. 2 root root 4096 9月 23 2011 libexec lrwxrwxrwx 1 root root 34 4月 28 14:40 mysql -> mysql-5.6.36-linux-glibc2.5-x86_64 drwxr-xr-x 13 root root 4096 4月 28 14:37 mysql-5.6.36-linux-glibc2.5-x86_64 drwxr-xr-x. 2 root root 4096 9月 23 2011 sbin drwxr-xr-x. 5 root root 4096 4月 6 18:50 share drwxr-xr-x. 2 root root 4096 9月 23 2011 src # 創(chuàng)建 mysql 用戶和mysql 組,如果有的話就不需要?jiǎng)?chuàng)建 [root@192.168.0.10 local]# groupadd mysql [root@192.168.0.10 local]# useradd -r -g mysql mysql [root@node1 mysql]# pwd /usr/local/mysql [root@node1 mysql]# chown -R mysql.mysql *2.創(chuàng)建/mydata/data 目錄作為 mysql 數(shù)據(jù)庫的datadir,并修改其屬主和屬組為mysql
[root@node1 ~]# mkdir /mydata/data [root@node1 ~]# chown mysql.mysql /mydata/data/3.初始化mysql數(shù)據(jù)庫目錄(只在第一臺(tái)服務(wù)器上做)
注意:初始化數(shù)據(jù)庫之前要掛載鏡像分區(qū)/dev/drbd0到 /mydata,這里以 node1為例
1)首先提升node1為主節(jié)點(diǎn),并掛載 /dev/drbd0 到 /mydata
[root@node1 ~]# drbdsetup /dev/drbd0 primary [root@node1 ~]# mount /dev/drbd0 /mydata [root@node1 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 100944296 11479256 84337312 12% / tmpfs 502204 72 502132 1% /dev/shm /dev/sda1 198337 29472 158625 16% /boot /dev/drbd0 10325420 154140 9646776 2% /mydata [root@node1 sbin]# cd /usr/local/drbd/sbin [root@node1 sbin]# ./drbd-overview 0:data/0 Connected Primary/Secondary UpToDate/UpToDate C r----- /mydata ext4 9.9G 151M 9.2G 2%2)對(duì)node1主服務(wù)節(jié)點(diǎn)上的mysql數(shù)據(jù)庫做初始化,如下:
[root@node1 scripts]# /usr/local/mysql/scripts [root@node1 scripts]# ./mysql_install_db --user=mysql --datadir=/mydata/data/ --basedir=/usr/local/mysql [root@node1 scripts]# ls /mydata/ data lost+found testfile [root@node1 scripts]# ll /mydata/data/ 總用量 110604 -rw-rw---- 1 mysql mysql 12582912 4月 28 15:24 ibdata1 -rw-rw---- 1 mysql mysql 50331648 4月 28 15:24 ib_logfile0 -rw-rw---- 1 mysql mysql 50331648 4月 28 15:23 ib_logfile1 drwx------ 2 mysql mysql 4096 4月 28 15:23 mysql drwx------ 2 mysql mysql 4096 4月 28 15:23 performance_schema drwx------ 2 mysql mysql 4096 4月 28 15:23 test3)配置mysql啟動(dòng)(兩節(jié)點(diǎn)同時(shí)做)
[root@node1 mysql]# pwd /usr/local/mysql [root@node1 mysql]# ls bin COPYING data docs include lib man my.cnf mysql-test README scripts share sql-bench support-files [root@node1 mysql]# ll support-files/ 總用量 32 -rwxr-xr-x 1 mysql mysql 1153 3月 18 15:06 binary-configure -rw-r--r-- 1 mysql mysql 773 3月 18 14:43 magic -rw-r--r-- 1 mysql mysql 1126 3月 18 15:06 my-default.cnf # mysql的配置文件 -rwxr-xr-x 1 mysql mysql 1061 3月 18 15:06 mysqld_multi.server -rwxr-xr-x 1 mysql mysql 894 3月 18 15:06 mysql-log-rotate -rwxr-xr-x 1 mysql mysql 10565 3月 18 15:06 mysql.server # mysql的啟動(dòng)腳本 [root@node1 mysql]# cp support-files/my-default.cnf /etc/my.cnf [root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@node1 mysql]# chmod 755 /etc/init.d/mysqld4)修改mysql的啟動(dòng)配置文件 /etc/my.cnf(兩節(jié)點(diǎn)同時(shí)做),并啟動(dòng)mysql服務(wù);
[root@node1 init.d]# cat /etc/my.cnf [mysqld] datadir=/mydata/data socket=/mydata/data/mysql.sock user=mysql character_set_server = utf8 init_connect = 'SET NAMES utf8' sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 skip_name_resolve innodb_file_per_table=ON [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid # 啟動(dòng)服務(wù) [root@node1 init.d]# ./mysqld status MySQL is not running [失敗] [root@node1 init.d]# ./mysqld start Starting MySQL......................................... [確定] # 因?yàn)橄到y(tǒng)之前默認(rèn)安裝過mysql,所以客戶端查找的mysql.sock還在默認(rèn)的/var/lib/mysql/mysql.sock路徑下,而現(xiàn)在我們指定的mysql.sock在/mydata/data下,所以會(huì)出現(xiàn)如下報(bào)錯(cuò) [root@wztao data]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) # 解決此類問題,可以創(chuàng)建軟連接,或者mysql客戶端登陸時(shí)指定mysql.sock文件路徑(mysql -S /mydata/data/mysql.sock ),如下: [root@wztao data]# mkdir /var/lib/mysql [root@wztao data]# ln -s /mydata/data/mysql.sock /var/lib/mysql/mysql.sock [root@wztao data]# ll /var/lib/mysql/mysql.sock lrwxrwxrwx 1 root root 23 Feb 23 17:26 /var/lib/mysql/mysql.sock -> /mydata/data/mysql.sock # 設(shè)置mysql的登錄密碼,登錄數(shù)據(jù)庫,并創(chuàng)建表 [root@node1 init.d]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.36 MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> SET PASSWORD=PASSWORD('admin'); Query OK, 0 rows affected (0.05 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) mysql> create database db1; Query OK, 1 row affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db1 | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.01 sec) mysql> \q Bye # 查看數(shù)據(jù)庫目錄,db1已經(jīng)存在 [root@node1 init.d]# ls /mydata/data/ auto.cnf db1 ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock node1.pid performance_schema test5)執(zhí)行完以上操作后,在node1上執(zhí)行以下命令,為部署heartbeat做準(zhǔn)備:
# 停止mysql服務(wù); [root@node1 init.d]# ./mysqld stop Shutting down MySQL.. [確定] # 解除drbd分區(qū)掛載: [root@node1 ~]# umount /mydata/ # 把node1 降為從節(jié)點(diǎn): [root@node1 ~]# drbdsetup /dev/drbd0 secondary [root@node1 ~]# /usr/local/drbd/sbin/drbd-overview 0:data/0 Connected Secondary/Secondary UpToDate/UpToDate C r-----==============================================================================
Heartbeat安裝配置及啟動(dòng)(node1和node2都要安裝)
1.部署確認(rèn):
1)mysql 服務(wù)關(guān)閉,且關(guān)閉了開機(jī)自啟動(dòng)
[root@node1~] # /etc/init.d/mysqld stop [root@node1 init.d]# chkconfig mysqld off [root@node1 init.d]# chkconfig --list mysqld mysqld 0:關(guān)閉 1:關(guān)閉 2:關(guān)閉 3:關(guān)閉 4:關(guān)閉 5:關(guān)閉 6:關(guān)閉2)drbd 服務(wù)必須打開,且兩個(gè)節(jié)點(diǎn)都是Secondary狀態(tài)
[root@node1 ~]# /usr/local/drbd/sbin/drbd-overview 0:data/0 Connected Secondary/Secondary UpToDate/UpToDate C r-----3)主備機(jī)間的互信通信;
[root@node1 ~]# date;ssh node2 date 2017年 05月 02日 星期二 13:16:06 CST 2017年 05月 02日 星期二 13:16:06 CST2.安裝及配置Heartbeat
1)安裝heartbeat(注意,如果此前機(jī)器安裝過heartbeat其他的版本需要將其卸載之后方可安裝heartbeat-2.1.4,卸載時(shí)要將其依賴到的安裝包一并卸載,否則安裝會(huì)起沖突)
[root@node1 heartbeat]# ls heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm libnet-1.1.6-7.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm [root@node1 heartbeat]# rpm -ivh libnet-1.1.6-7.el6.x86_64.rpm [root@node1 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm Preparing... ########################################### [100%] 1:heartbeat-pils ########################################### [ 25%] 2:heartbeat-stonith ########################################### [ 50%] 3:heartbeat ########################################### [ 75%] 4:heartbeat-gui ########################################### [100%]2)配置heartbeat,默認(rèn)安裝好的heartbeat沒有配置文件,但是有樣例文件,這里只需要兩個(gè)配置文件ha.cf 和 authkeys
[root@node1 ~]# cp /usr/share/doc/heartbeat-2.1.4/{authkeys,ha.cf} /etc/ha.d/ [root@node1 ~]# cd /etc/ha.d/ [root@node1 ha.d]# ll 總用量 40 -rw-r--r-- 1 root root 645 5月 2 13:33 authkeys -rw-r--r-- 1 root root 10539 5月 2 13:33 ha.cf -rwxr-xr-x 1 root root 745 9月 10 2013 harc drwxr-xr-x 2 root root 4096 5月 2 13:05 rc.d -rw-r--r-- 1 root root 692 9月 10 2013 README.config drwxr-xr-x 2 root root 4096 5月 2 13:05 resource.d -rw-r--r-- 1 root root 7864 9月 10 2013 shellfuncs # 修改其權(quán)限為600 [root@node1 ha.d]# chmod 600 authkeys [root@node1 ha.d]# ll 總用量 40 -rw------- 1 root root 645 5月 2 13:33 authkeys -rw-r--r-- 1 root root 10539 5月 2 13:33 ha.cf -rwxr-xr-x 1 root root 745 9月 10 2013 harc drwxr-xr-x 2 root root 4096 5月 2 13:05 rc.d -rw-r--r-- 1 root root 692 9月 10 2013 README.config drwxr-xr-x 2 root root 4096 5月 2 13:05 resource.d -rw-r--r-- 1 root root 7864 9月 10 2013 shellfuncs3)配置文件修改如下:
[root@node2 ha.d]# vim authkeys auth 1 1 md5 91961e19f5730f736d27c07ffbc093d1 [root@node1 ha.d]# vim ha.cf logfacility local0 keepalive 2 #>>> 發(fā)送心跳的間隔時(shí)間 udpport 694 #>>> 通信端口 ucast eth0 172.22.1.113 #>>>心跳線網(wǎng)口,對(duì)方心跳口ip;在psae2配置時(shí)寫172.21.1.112 auto_failback on node psae1 #>>> 設(shè)置集群中的節(jié)點(diǎn),節(jié)點(diǎn)名必須與uname -n 一樣 node psae2 crm on #>>>啟用crm復(fù)制文件到psea2
復(fù)制以上2個(gè)配置文件到psae2上,并修改/etc/ha.d/ha.cf中的ucastip為psae1的ip
[root@node1 ha.d]# scp -p authkeys ha.cf node2:/etc/ha.d/ [root@node2 ~]# vim /etc/ha.d/ha.cf ucast eth0 172.21.1.1123.檢查配置文件沒有錯(cuò)誤后就可以啟動(dòng)heartbeat
[root@node1 ha.d]# service heartbeat start Starting High-Availability services: Done. [root@node2 ha.d]# service heartbeat start Starting High-Availability services: Done. [root@node1 ha.d]# netstat -unlp | grep 694 udp 0 0 0.0.0.0:694 0.0.0.0:* 4035/heartbeat: wri [root@node2 ha.d]# ss -tunlp |grep 694 udp UNCONN 0 0 *:694 *:* users:(("heartbeat",11523,9),("heartbeat",11524,9))3.配置Heartbeat集群資源(只在一臺(tái)完成即可)需要配置的集群資源:vip、drbd、mysql
1)為客戶端連入服務(wù)端進(jìn)行配置的用戶設(shè)置密碼 建議設(shè)置成pachira,主備服務(wù)器都要操作
[root@node1 ha.d]# passwd hacluster 更改用戶 hacluster 的密碼 。 新的 密碼: 無效的密碼: 它基于字典單詞 無效的密碼: 過于簡單 重新輸入新的 密碼: passwd: 所有的身份驗(yàn)證令牌已經(jīng)成功更新。2)執(zhí)行 # hb_gui & 命令啟動(dòng)heartbeat圖形化的客戶端程序,用VNC連接linux桌面
資源添加順序 組 --> vip --> drbd--> mysqld --> p_monitor
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。