一,搭建實驗環境
Vmware8.0.11
node1.liuwei.com: eth0:192.168.101.100 host-only
添加 sdb1 1G 心跳線: eth1:192.168.2.1 VMnet2
node2.liuwei.com: eth0: 192.168.101.200 host-only
添加 sdb1 1G 心跳線:eth1:192.168.2.2 VMnet2
Corosync 虛擬IP: 192.168.101.254
yum 倉庫
在 /root/drbd 有 drbd83-8.3.8-1.el5.centos.i386.rpm
kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
在 /root/corosync 有
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 corosync的主配置文件
corosynclib-1.2.7-1.1.el5.i386.rpm corosync的庫文件
heartbeat-3.0.3-2.3.el5.i386.rpm 我們的heartbeat在這裏是做四層的資源代理用的
heartbeat-libs-3.0.3-2.3.el5.i386.rpm heartbeat的庫文件
ldirectord-1.0.1-1.el5.i386.rpm 在高可用性羣集中實驗對後面realserver的探測
libesmtp-1.0.4-5.el5.i386.rpm
openais-1.1.3-1.6.el5.i386.rpm做豐富pacemake的內容使用
openaislib-1.1.3-1.6.el5.i386.rpm openais 的庫文件
pacemaker-1.1.5-1.1.el5.i386.rpm pacemake的主配置文檔
pacemaker-libs-1.1.5-1.1.el5.i386.rpm pacemaker的庫文件
pacemaker-cts-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 開啓資源代理用的
在 /root/mysql 有
mysql-5.5.15-linux2.6-i686.tar.gz mysql的綠色軟件
二, 設置兩臺服務器的網卡信息、hosts、主機名,時鐘同步及sdb硬盤初始化並使相互ping通
注.1-7node1與node2同
1.setup 設置 ip 地址 並添加sdb 硬盤
2.vim /etc/hosts
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=node1.liuwei.com (node2爲node2.liuwei.com)
4.service network restart
5. hwclock -s
6.fdisk /dev/sdb
n p 1 +1000M w
7. partprobe /dev/sdb
三.配置DRBD
1.cd /root/drbd
rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
global {
usage-count yes;
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C;
startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
fencing resource-only; }
net {
cram-hmac-alg "sha1";
shared-secret "liuwei";
}
syncer {
rate 100M;
}
}
4. vim mysql.res
resource mysql {
on node1.liuwei.com {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.101.100:7789;
meta-disk internal;
}
on node2.liuwei.com {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.101.200:7789;
meta-disk internal; }
}
5. vim /etc/drbd.conf
include "drbd.d/global_common.conf";
include "drbd.d/*.res";
6. drbdadm create-md mysql
7. service drbd start
[root@node1 drbd.d]# mkfs -t ext3 /dev/drbd0 格式化
[root@node1 drbd.d]# mkdir /mysql 創建掛載點
[root@node1 drbd.d]# mount /dev/drbd0 /mysql/ 進行掛載
[root@node1 drbd.d]#cd /mysql
[root@node1 mysqldata]#touch f1 f2 創建2個文件
[root@node1 ~]#umount /mysql 卸載drbd設備
[root@node1 ~]# drbdadm secondary mysql 將node1設置爲secondary節點
[root@node1 ~]# drbd-overview
0:mysql Connected Secondary/Secondary UpToDate/UpToDate C r----
11:將node2設置爲primary節點
[root@node2 ~]# drbdadm primary mysql
[root@node2 ~]# drbd-overview
0:mysql Connected Primary/Secondary UpToDate/UpToDate C r----
[root@node2 ~]#mkdir /mysql
[root@node2 ~]#mount /dev/drbd0 /mysql
[root@node2 ~]# umount /mysql/ 卸載設備
至此我們的drbd已經正常安裝完成!!!
四.mysql的安裝和配置
1:node1上的配置
添加用戶和組:
# groupadd -r mysql
# useradd -g mysql -r mysql
由於主設備才能讀寫,掛載,故我們還要設置node1爲主設備,node2爲從設備:
node2上操作:
# drbdadm secondary mysql
node1上操作:
# drbdadm primary mysql
[root@node1 ~]# drbd-overview
0:mysql Connected Primary/Secondary UpToDate/UpToDate C r----
掛載drbd設備:
# mount /dev/drbd0 /mysql
# mkdir /mysql/data
data目錄要用存放mysql的數據,故改變其屬主屬組:
# chown -R mysql.mysql /mysql/data/
查看:
# ls /mysql/
data
mysql的安裝;
# tar zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.5.15-linux2.6-i686 mysql
# cd mysql
# chown -R mysql:mysql .
初始化mysql數據庫:
# scripts/mysql_install_db --user=mysql --datadir=/mysql/data
# chown -R root .
爲mysql提供主配置文件:
# cp support-files/my-large.cnf /etc/my.cnf
並修改此文件中thread_concurrency的值爲你的CPU個數乘以2,比如這裏使用如下行:
# vim /etc/my.cnf
thread_concurrency = 2
另外還需要添加如下行指定mysql數據文件的存放位置:
datadir = /mysql/data
爲mysql提供sysv服務腳本,使其能使用service命令:
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
node2上的配置文件,sysv服務腳本和此相同,故直接複製過去:
# scp /etc/my.cnf node2:/etc/
# scp /etc/rc.d/init.d/mysqld node2:/etc/rc.d/init.d
添加至服務列表:
# chkconfig --add mysqld
確保開機不能自動啓動,我們要用CRM控制:
# chkconfig mysqld off
而後就可以啓動服務測試使用了:
# service mysqld start
測試之後關閉服務:
# ls /mysql/data 查看其中是否有文件
[root@node1 mysql]# ls /mysql/data/
# service mysqld stop
爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行如下步驟:
輸出mysql的man手冊至man命令的查找路徑:
# vim /etc/man.config
添加如下行即可:
MANPATH /usr/local/mysql/man
輸出mysql的頭文件至系統頭文件路徑/usr/include,這可以通過簡單的創建鏈接實現:
# ln -sv /usr/local/mysql/include /usr/include/mysql
輸出mysql的庫文件給系統庫查找路徑:(文件只要是在/etc/ld.so.conf.d/下並且後綴是.conf就可以)
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而後讓系統重新載入系統庫:
# ldconfig
修改PATH環境變量,讓系統所有用戶可以直接使用mysql的相關命令:
#vim /etc/profile
PATH=$PATH:/usr/local/mysql/bin
. /etc/profile 重新讀取環境變量
[root@node1 mysql]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
卸載drbd設備:
# umount /mysql
2,node2上的配置:
添加用戶和組:
# groupadd -r mysql
# useradd -g mysql -r mysql
由於主設備才能讀寫,掛載,故我們還要設置node2爲主設備,node1爲從設備:
node1上操作:
# drbdadm secondary mysql
node2上操作:
# drbdadm primary mysql
掛載drbd設備:
# mount /dev/drbd0 /mysql
查看:
# ls /mysql/
data lost+found
mysql的安裝;
# tar zxfv mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.5.15-linux2.6-i686 mysql
# cd mysql
一定不能對數據庫進行初始化,因爲我們在node1上已經初始化了:
# chown -R root:mysql .
mysql主配置文件和sysc服務腳本已經從node1複製過來了,不用在添加。
添加至服務列表:
# chkconfig --add mysqld
確保開機不能自動啓動,我們要用CRM控制:
# chkconfig mysqld off
而後就可以啓動服務測試使用了:(確保node1的mysql服務停止)
# service mysqld start
測試之後關閉服務:
# ls /mysql/data 查看其中是否有文件
[root@node2 mysql]# ls /mysql/data/
# service mysqld stop
爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還需要進行一些類似node1上的操作,由於方法完全相同,不再闡述!
卸載設備:
# umount /dev/drbd0
至此我們的mysql已經正常安裝完成!!!
五.corosync的安裝和配置
1.hwclock -s
2.ssh-keygen -t rsa
3.ssh-copy-id -i .ssh/id_rsa.pub root@node2
4.cd /root/corosyns/
yum localinstall *.rpm --nogpgcheck
5.cd /etc/corosync/
11.驗證corosync引擎是否正常啓動了
[root@node1 corosync]# grep -i -e "corosync cluster engine" -e "configuration file" /var/log/messages
12.查看初始化成員節點通知是否發出
[root@node1 corosync]# grep -i totem /var/log/messages
13.檢查過程中是否有錯誤產生
grep -i error: /var/log/messages |grep -v unpack_resources (便面stonith的錯誤)
14.檢查pacemaker時候已經啓動了
15 .前集羣的節點上啓動另外一個節點
[root@node1 corosync]# ssh node2 '/etc/init.d/corosync start'
Starting Corosync Cluster Engine (corosync): [ OK ]
16.將前面的驗證步驟在另外一個節點上再次驗證一次
17.在任何一個節點上 查看集羣的成員狀態
[root@node2 corosync]# crm status
18.如何驗證該文件的語法錯誤
[root@node1 corosync]# crm_verify -L
可以看到有stonith錯誤,在高可用的環境裏面,會禁止實用任何支援
可以禁用stonith
[root@node1 corosync]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false
crm(live)configure# commit
crm(live)configure# show
19再次進行檢查
[root@node1 corosync]# crm_verify -L
沒有錯誤了
系統上有專門的stonith命令
20.
現在用的資源
ip地址 http服務 共享存儲
用資源代理進行配置
ocf lsb的
使用list可以查看
crm(live)ra# classes
heartbeat
lsb
ocf / heartbeat pacemaker
stonith
21,配置一個資源,可以在configuration 下面進行配置
crm(live)configure# primitive mysqlIP ocf:heartbeat:IPaddr params ip=192.168.101.254
crm(live)configure# show
crm(live)configure# commit
crm(live)configure#end
crm(live)# status
22.
定義mysql的資源
crm(live)configure# primitive mysqlserver lsb:mysqld
crm(live)configure# show
crm(live)configure# commit
crm(live)configure#end
crm(live)# status
23定義組
crm(live)configure# group mysql mysqlIP mysqlserver
crm(live)configure# show
crm(live)configure# commit
crm(live)configure#end
crm(live)# status
三、
1.將節點1 的corosync 服務停止
[root@node1 corosync]# service corosync stop
2. 在節點2上進行觀察
[root@node2 corosync]# crm status
可以看到沒有票數
25.改變quorum
crm(live)configure# property no-quorum-policy=ignore
crm(live)configure# show
crm(live)configure# commit
crm(live)configure#end
crm(live)# status
26.在節點2 上停止 corosync 服務 [root@node2 corosync]# service corosync stop
在節點1上查看 [root@node1 corosync]# crm status