一,搭建实验环境
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
四.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
本文出自 “碧云天” 博客,转载请与作者联系!