ha+drbd+mysql
====================================================
先建立drbd
drbd分布式复制
rhel 5.8
两个节点
- # Do not remove the following line, or various programs
- # that require network functionality will fail.
- 127.0.0.1 localhost.localdomain localhost
- ::1 localhost6.localdomain6 localhost6
- 192.168.1.111 k1.kaka.cn k1
- 192.168.1.222 k2.kaka.cn k2
软件包两个节点都要安装
drbd83-8.3.13-2.el5.centos.i386.rpm
kmod-drbd83-8.3.13-1.el5.centos.i686.rpm
安装之后将拷贝模板到配置文件
cp /usr/share/doc/drbd83-8.3.13/drbd.conf /etc/drbd.conf
进行修改
首先查看一下全局配置文件
[root@k2 ~]# cd /etc/drbd.d/
[root@k2 drbd.d]# vim global_common.conf
usage-count no; 原来yes改成no 意思是不向官方发送邮件通
- startup {
- #wfc-timeout 120;
- #degr-wfc-timeout 120;
- }
- disk {
- on-io-error detach; io发现错误责拆掉此设备
- #fencing resource-only;
- }
- net {
- cram-hmac-alg "sha1"; 使用sha1加密算法加密
- shared-secret "mydrbdlab"; 谁定随机串
- }
- syncer {
- rate 200M; 传输速率
- }
全局文件设定好后配置资源
定义一个资源/etc/drbd.d/web.res 内容如下:
- resource web {
- on node1.magedu.com {
- device /dev/drbd0; 设备文件 用于挂载同步文件的目录
- disk /dev/sda5; 节点同步的磁盘设备
- address 172.16.100.11:7789; 监听地址及端口
- meta-disk internal; 元数据存放的机制 存放本地内部
- }
- on node2.magedu.com {
- device /dev/drbd0;
- disk /dev/sda5;
- address 172.16.100.12:7789;
- meta-disk internal;
- }
- }
将配置文件复制到令一个节点
将同步分区磁盘创建出来
两个节点创建的磁盘大小一定要一致
scp -r /etc/drbd.* k1:/etc/ 将文件拷贝到另一个节点上
先初始化资源 在两个节点上
drbdadm create-md web web是设置资源的文件名称
然后启动服务 service drbd start
cat /proc/drbd 查看启动状态
drbd-overview 此命令也可查看
设置一个节点为主节点
下面两条命令都可以
drbdsetup /dev/drbd0 primary –o
drbdadm -- --overwrite-data-of-peer primary web
命令执行完数据开始同步 同步完成之后 主节点就生成了
之后就是格式化 挂载目录
节点切换命令
drbdadm primary web 将节点设置为主节点
drbdadm secondary web 将节点设置为备节点
注意 切换节点是 一定要卸载目录 在主节点上将primary 设置成secondary
然后再另一节点设置primary 就可以了
===================================================================
mysql安装
版本是mysql-5.5.28-linux2.6-i686.tar.gz
现在192.168.1.222 上是主节点 drbd磁盘挂载到 /data目录下
拷贝mysql服务包到两台节点上
进行初始化设置
因为这里使用的是压缩包的mysql 所以只需解压安装即可
步骤:
建立 mysql组 和 mysql用户 为系统用户和组
因为drbd的挂载目录是/data 所以mysql安装位置设置为此目录
解压之后 将解压目录建立软连接目录mysql 方便使用
修改mysql目录中的 用户权限 chown -R root:mysql .
[root@k2 scripts]# ./mysql_install_db --user=mysql --datadir=/data/ --basedir=/usr/local/mysql 安装mysql
[root@k2 mysql]# cp support-files/my-large.cnf /etc/my.cnf 复制配置文件到/etc/my.cnf
[root@k2 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld 复制启动文件到/etc/rc.d/init.d/mysqld
拷贝配置文件和启动文件到备节点
scp /etc/rc.d/init.d/mysqld k1:/etc/rc.d/init.d/
scp /etc/my.cnf k1:/etc/
以上是主节点上的操作
备节点:
创建mysql组合用户
不需要安装mysql
只要将压缩包解压 建立软连接到mysql 并修改用户权限即可
配置文件和启动文件都是节点一上复制过来的
结合drbd 查看一下mysql的启动状况
首先查看主节点
备用节点
没有问题 都正常启动
=========================================================================
将两台节点上的drbd服务和mysql服务都关闭 并且去掉自动启动
chkconfig drbd off
chkconfig mysqld off
下面安装高可用集群
- 软件包安装
- cluster-glue-1.0.6-1.6.el5.i386.rpm
- heartbeat-libs-3.0.3-2.3.el5.i386.rpm
- pacemaker-libs-1.1.5-1.1.el5.i386.rpm
- cluster-glue-libs-1.0.6-1.6.el5.i386.rpm
- perl-TimeDate-1.16-5.el5.noarch.rpm
- corosync-1.2.7-1.1.el5.i386.rpm
- resource-agents-1.0.4-1.1.el5.i386.rpm
- corosynclib-1.2.7-1.1.el5.i386.rpm
- libesmtp-1.0.4-5.el5.i386.rpm
- pacemaker-1.1.5-1.1.el5.i386.rpm
- heartbeat-3.0.3-2.3.el5.i386.rpm
- pacemaker-cts-1.1.5-1.1.el5.i386.rpm
- 安装软件包命令 yum -y --nogpgcheck localinstall *.rpm
- 这些包中需要依赖其他包 所以指向本地的yum源 用此命令localinstall 就好了
高可用集群的配置文件/etc/corosync/ 目录下
此目录下只有配置模板文件
cp corosync.conf.example corosync.conf
拷贝成 配置文件 corosync.conf
修改
- totem {
- version: 2
- secauth: on 加密传输开启
- threads: 0
- interface {
- ringnumber: 0
- bindnetaddr: 192.168.1.0 绑定ip地址端
- mcastaddr: 226.94.3.7 监听组播地址
- mcastport: 5405
- }
- logging {
- fileline: off
- to_stderr: no
- to_logfile: yes
- to_syslog: no 不将日志信息写入标准日志文件中
- logfile: /var/log/cluster/corosync.log 将日志文件写入此路径下 所以需要建立cluster目录
- debug: off
- timestamp: on
- logger_subsys {
- subsys: AMF
- debug: off
- }
- service {
- ver: 0
- name: pacemaker 启动pacemaker服务
- }
- aisexec {
- name: root 执行用户
- group: root
- }
生成密钥命令 corosync-keygen
会生成一个authkey密钥文件 将authkey和corosync.conf文件考配到另一节点上
就可以启动服务了
- [root@k2 corosync]# service corosync start
- Starting Corosync Cluster Engine (corosync): [ OK ]
- [root@k2 corosync]# crm status
- ============
- Last updated: Wed Nov 28 07:10:06 2012
- Stack: openais
- Current DC: k2.kaka.cn - partition with quorum
- Version: 1.1.5-1.1.el5-01e86afaaa6d4a8c4836f68df80ababd6ca3902f
- 2 Nodes configured, 2 expected votes
- 0 Resources configured.
- ============
- Online: [ k2.kaka.cn k1.kaka.cn ]
crm 进出命令模式
配置两个全局属性
crm(live)configure# property stonith-enabled=false 禁用隔离设备
crm(live)configure# property no-quorum-policy=ignore 不考虑票数规则 否则当一个集群节点故障令一个也不会启动
commit 提交规则
定义drbd 主资源
crm(live)configure# primitive kakadrbd ocf:linbit:drbd params drbd_resource="web" op start timeout=240 op stop timeout=100
创建资源名为 kakadrbd
创建drbd的资源 上面的实验我们创建了drbd 的资源为 "web"
创建默认启动时间和停止时间 start timeout=240 op stop timeout=100
定义这个资源为 主从类资源
master ms_system kakadrbd meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
这条命令意思为:
为kakadrbd这个资源建立主从类资源 名字为 ms_system
master-max="1" 最多几个主的
master-node-max="1" 每个节点最多运行几个主的
clone-max="2" 最对几个从的
clone-node-max="1" 每个节点最多运行几个从的
资源提交查看一下
crm(live)configure# verify 检查语法
crm(live)configure# commit 提交
现在主节点是 k1.kaka.cn
切换节点看看
现在主节点是 k2.kaka.cn
再定义一个资源 将drbd上的磁盘挂载到 /data目录上 并且一定要和主节点在一起
primitive myfs ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/data" fstype="ext3" op start timeout=60 op stop timeout=60
定义一个文件系统资源为myfs 将drbd磁盘设备/dev/drbd0 挂载到/data 目录下 指定启动,停止超时时间
colocation myfs_on_ms_system inf: myfs ms_system:Master
定义位置约束 绑定myfs 一定要和主节点 在一起
order myfs_after_ms_system mandatory inf: ms_system:promote myfs:start
定义顺序约束 主节点完成角色切换之后 文件系统在启动
===============================================================
定义mysql资源
crm(live)configure# primitive mysql lsb:mysqld
创建mysql资源
crm(live)configure# colocation mysql_on_myfs inf: mysql myfs
建立位置约束 文件挂载目录一定要和mysql在同一节点上
crm(live)configure# order mysql_after_myfs mandatory: myfs mysql
建立顺序约束 文件系统挂载后启动 mysql服务
crm(live)configure# verify
语法检查
crm(live)configure# commit
提交
节点在 k2.kaka.cn 上
进入mysql 创建drbd数据库 然后切换节点
在节点一 上可以看到创建的数据库 OK
再配置一个VIP地址资源
crm(live)configure# primitive myip ocf:heartbeat:IPaddr2 params ip="192.168.1.254"
crm(live)configure# colocation myip_with_ms_system inf: myip ms_system:Master
crm(live)configure# verify
crm(live)configure# commit
最后在看下信息
主节点在k1主机上