1 环境
系统:Centos7.2 1151
软件:drbd84-utils-8.9.5-1.el7.elrepo.x86_64
主服务器:172.20.20.66
备服务器:172.20.20.35
虚拟IP(virtual_ip):172.20.20.237
修改主服务器名称:masterNode
修改备服务器名称: backupNode
主备服务器添加下方地址到/etc/hosts文件:
172.20.20.66 masterNode
172.20.20.35 backupNode
2 简单说明
主备服务器分别创建一个分区,挂载到新创建的目录drbd中,通过drbd目录完成数据同步。
只有主服务器挂载目录,备服务器不用挂载。
备服务器要挂载目录,需要先把主服务器设置成secondary(备机)
,备服务器设置成primary(主机)
,然后挂载到目录。
3 添加硬盘并挂载
3.1 查询硬盘信息
(如果使用的是新加硬盘,可以在最下方看到硬盘信息,例子使用本地空闲空间)
例如:
1 | [root@bogon /]# fdisk -l |
1 | [root@bogon /]# df –h |
3.2 Fdisk创建分区
1 | [root@bogon /]# fdisk /dev/sda |
注:下图设置分区格式可以省略,后面会进行格式化。
3.3 查看硬盘信息
1 | [root@bogon /]# fdisk –l |
3.4 Partprobe刷新分区表(注:最好每做一步遇到找不到问题都刷新一下)
1 | [root@bogon /]# partprobe |
4 安装配置drbd
4.1 YUM安装drbd
1 | [rootimport http://elrepo.org/RPM-GPG-KEY-elrepo.org mapper]# rpm -- |
4.1.1 问题1
二次安装存在YUM安装失败,需要源码安装,源码安装包在http://oss.linbit.com/drbd/ 下载。
Rpm包在https://pkgs.org/centos-7/elrepo-x86_64/kmod-drbd84-8.4.6-1.el7.elrepo.x86_64.rpm.html
https://pkgs.org/centos-7/elrepo-x86_64/drbd84-utils-8.9.5-1.el7.elrepo.x86_64.rpm/download/ 下载。
1 | [root@drbd2 home]# rpm -Uvh http://elrepo.org/linux/elrepo/el7/x86_64/RPMS/drbd84-utils-8.9.5-1.el7.elrepo.x86_64.rpm [root@htest2 home]# rpm -Uvh http://elrepo.org/linux/elrepo/el7/x86_64/RPMS/kmod-drbd84-8.4.6-1.el7.elrepo.x86_64.rpm |
4.2 配置global_common.conf
编辑全局配置:
1 | vi /etc/drbd.d/global_common.conf |
确保文件中包含有下内容:
1 | global { |
当然,还可以有其它配置,这是最基本的。
4.3 配置r0资源:
创建r0资源:
注:r0可以随便命名。
1 | vi /etc/drbd.d/r0.res |
写入文件内容:
1 | resource r0{ |
需要把上面用到的防火墙7788端口打开,这个端口是自定义的,如果嫌麻烦可以直接关掉防火墙。
注:
masterNode/ backupNode
是主机名字,根据实际情况书写。
说明:
device
是自定义的物理设备的逻辑路径
disk
是磁盘设备,或者是逻辑分区
address
是机器监听地址和端口
meta-disk
这个还没弄明白,看到的资料都是设为:internal(局域网)
4.4 建立resource
1 | modprobe drbd //载入 drbd 模块 |
1 | dd if=/dev/zero of=/dev/sda2 bs=1M count=100 //把一些资料塞到 sda3 內 (否则 create-md 时会报错) |
4.4.1 我遇到的问题1:
1 | [root@backupNode /]# drbdadm up r0 |
原因是我之前已经挂在了/dev/sda3,需要先卸载/dev/sda3设备,解决办法:
1 | umount /dev/sda2 |
问题解决.
4.4.2 我遇到的问题2:
1 | [root@backupNode /]# drbdadm create-md r0 |
原因是drbd.conf配置文件计算机名和本机的计算机名不一致。
修改配置文件计算机名。
问题解决。
4.4.3 我遇到的问题3:
1 | [root@htest2 drbd.d]# drbdadm create-md r0 |
r0.res
中drbd
资源必须含有数字,猜测与分区模块有重名。
问题解决。
4.4.4 我遇到的问题4
在centos 6.4上部署时,yum安装完成后加载模块报错。
1 | 正确安装drbd模块后,使用modprobe进行加载 |
原因:这是因为系统默认的内核并不支持此模块,所以需要更新内核
更新内核的方法:
可以用 yum install kernel* 方式来更新。
如果你要节约点时间的话可以只更新一下的几个包:
kernel-devel
kernel
kernel-headers
更新后,记得要重新启动操作系统!!!
> 注:以上每一步骤,都需要在主备服务器上进行配置设置。
4.5 设置Primary Node
将masterNode
设为主服务器(primary node
),在masterNode
上执行:
1 | [root@backupNode /]# drbdadm primary --force r0 |
查看drbd状态:
1 | [root@backupNode /]# cat /proc/drbd |
已经变成了主服务器。
4.6 创建DRBD文件系统
上面已经完成了/dev/drbd1的初始化,现在来把/dev/drbd1格式化成ext4格式的文件系统,在masterNode上执行:
1 | [root@masterNode /]# mkfs.ext3 /dev/drbd1 |
输出:
1 | mke2fs 1.41.12 (17-May-2010) |
然后,将/dev/drbd1
挂载到之前创建好的/drbd
目录:
1 | [root/]# mount /dev/drbd1 /drbd |
现在只要把数据写入/drbd
目录,drbd
即会立刻把数据同步到backupNode
的/dev/sda2
分区上了。
4.7 DRBD同步测试
1、首先,在主服务器上先将设备卸载,同时将主服务器降为备用服务器:
1 | [root@masterNode /]# umount /dev/drbd1 |
2、然后,登录备用服务器,将备用服务器升为主服务器,同时挂载drbd1设备到 /drbd目录:
1 | [root@masterNode /]# ssh backup |
3、最后,进入/drbd
目录,就可以看到之前在另外一台机器上放入的数据了,如果没有看到,说明同步失败!
4.8 设置开机启动
注:设置DRBD开机启动,需要手动设置主备级别,找到方法后补充。
1 | [root@drbd2 rc.d]# systemctl enable drbd |
5 安装配置keepalived
(使用Heartbeat代替,只做了解,功能和heartbeat一样,Heartbeat自带drbd检测脚本)
5.1 YUM安装keepalived
Centos 7 自带 keepalived,可以直接YUM安装。
1 | [root@drbd1 rc3.d]# yum install -y keepalived |
5.2 配置keepalived.conf
1 | [root/]# vi /etc/keepalived/keepalived.conf 1 |
5.2.1 主服务器配置
1 | ! Configuration File for keepalived |
5.2.2 备服务器配置
1 | ! Configuration File for keepalived |
5.3 启动服务
1 | [root@drbd1 /]# systemctl start keepalived |
5.4 查看网卡信息
当启动keepalived
后,查看网卡信息,主服务器会显示挂载虚拟IP172.20.20.237
成功,备服务器没有挂载虚拟IP,如果主备服务器同时显示挂载虚拟Ip,则属于脑裂故障,需要继续调试。如果主服务器keepalived
程序挂掉后,备用服务器会自动升级为主服务器,并挂载虚拟ip,主服务器恢复后恢复主从关系。
1 | [root@drbd1 /]# ip a |
5.5 验证测试
1、在主服务器上新建一个网页,内容为 172.20.20.66
2、在备用服务器上新建一个网页,内容为 172.20.20.35
3、启动主备服务器的http
服务和Keepalived
服务
4、通过浏览数,输入虚拟IP地址 172.20.20.237
页面显示为 `172.20.20.66`
5、关闭主服务器的Keepalived
服务,通过浏览器输入IP地址172.20.20.237
页面显示为 `172.20.20.35`
6、再次启动主服务器的Keepalived
服务,通过浏览器输入IP地址172.20.20.237
页面显示为 `172.20.20.66`
5.6 设置开机启动服务
1 | [root@drbd2 rc.d]# systemctl enable keepalived |
6 安装配置heartbeat
6.1 创建用户和组
先创建用户和组,否则glue安装报错。
1 | groupadd -g 200 haclient #创建GID为200的用户组 |
YUM安装所需组件
1 |
6.2 安装glue
源码安装heartbeat之前首先得源码安装glue。
下载glue:http://www.linux-ha.org/wiki/Download
进入源码目录安装:./autogen.sh
生成配置文件:./configure
编译安装:make && make install
./autogen.sh安装报错及解决办法
1 | 报错信息: |
解决办法:
1 | yum install libtool |
6.3 安装agents
不安装agents的话,在安装Heartbeat时会报错,具体什么错误忘记记录了。
下载http://www.linux-ha.org/wiki/Download
1 | ./autogen.sh |
6.4 安装heartbeat:
安装glue/agents/heartbeat,编译安装路径最好默认,自定义的话有报错。
下载heartbeat:http://www.linux-ha.org/wiki/Downloads
进入源码目录生成配置文件:`./ConfigureMe configure --disable-swig --disable-snmp-subagent`
编译安装:make && make install
没有按照上述操作可能遇到的错误:
1 | libtoolize: putting libltdl files in `libltdl'. |
解决办法:
1 | yum install libtool-ltdl-devel |
6.5 同步时间
同步两台节点的时间
1 | rm -rf /etc/localtime |
6.6 配置主节点heartbeat
总共有三个文件需要配置:ha.cf
监控配置文件haresources
资源管理文件authkeys
心跳线连接加密文件
配置文件位置 /usr/share/doc/heartbeat/
1 | # cp ha.cf haresources authkeys /etc/ha.d/ #拷贝配置文件到/etc/ha.d |
6.6.1 修改ha.cf
1 | debugfile /var/log/ha-debug #用于记录 heartbeat 的调试信息 |
6.6.2 修改haresources
1 | drbd1 IPaddr::192.168.84.132/24/eno16777736 drbddisk::r0 Filesystem::/dev/drbd1::/drbd |
注意主节点和备份节点中资源文件haresources要完全一样。
6.6.3 修改authkeys
此配置文件必须设置权限为600(固定的)
1 | Chmod 600 /etc/ha.d/authkeys |
1 | auth 1 |
6.6.4 对配置文件进行软链接
在/usr/etc/ha.d/
目录创建软链接,在部署中通过查看日志文件发现是通过此目录运行软件的,具体没搞明白,网上说拷贝的/etc/ha.d
目录就行了,不知道为什么,为了省事,干脆创建软链接,这样就没问题了。此功能好用。
1 | ln -sv /etc/ha.d/shellfuncs /usr/etc/ha.d/shellfuncs |
复制ocf文件,如果没有,启动的时候会报错
1 | cp /usr/lib/ocf/lib/heartbeat/ocf-binaries /usr/lib/ocf/resource.d/heartbeat/.ocf-binaries |
这一块没有用到,发现默认情况下目录里面就存在这些文件,此处作为参考。
备用节点配置文件和主节点配置文件基本一样,只有一个地方有区别。就是
ucast eth0 192.168.60.132
IP地址是对方的IP
7 启动程序顺序
第一步:启动主备节点drbd服务
1 | [root@drbd1 ha.d]# drbdadm up r0 |
第二步:设置升级主节点为primary,并挂载到目录
1 | [root@drbd1 ha.d]# drbdadm primary r0 |
第三步:启动主备节点Heartbeat服务
1 | [root@drbd1 ha.d]# service heartbeat start |
等待主备节点连接并配置完成,可以通过ip a
命令查看虚拟ip是否生效。以下环境部署完成。在进行主节点维护中,恢复的话必须手动操作,避免出错。
8 附件
链接: http://pan.baidu.com/s/1mibp7Uo 密码: y99z