共计 8787 个字符,预计需要花费 22 分钟才能阅读完成。
主机规划
172.16.16.15 node1.linuxidc.com
172.16.16.16 node2.linuxidc.com
一、准备工作
==============================
相关阅读 :
Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm
DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm
CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm
基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm
CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm
===============================
1. 为各主机设置主机名,IP 地址,并测试主机连通性
分别为各节点设置主机名
node1:
hostname node1.linuxidc.com
node2:
hostname node2.linuxidc.com
确保各主机在重启之后,主机名保持不变
node1:
sed -i ‘s/\(HOSTNAME=\).*/\1node1.linuxidc.com/p’ /etc/sysconfig/network
node2:
sed -i ‘s/\(HOSTNAME=\).*/\1node2.linuxidc.com/p’ /etc/sysconfig/network
注: 主机重启过程中,会从配置文件 /etc/sysconfig/network 中读取主机名,并将其设置为重启后主机名
2. 添加主机名解析: 确保每一个节点的名称都能互相解析
使用 hosts 文件做主机名解析, 在各节点执行如下操作:
cat >ed.txt<<EOF
\$a\172.16.16.15 node1.linuxidc.com
\$a\172.16.16.16 node2.linuxidc.com
EOF
sed -i -f ed.txt /etc/hosts
3. 确保 node1,node2 之间时间同步
在命令行同步时间 (立即生效,且临时生效)
ntpdate 172.16.0.1
设置定时任务 (永久生效)
echo “*/5 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null;/sbin/hwclock -w” >/var/spool/cron/root
4. 配置各节点之间基于 ssh 免密码免密钥认证通信 (非必须)
生成密钥文件在各节点执行如下操作:
node1:
ssh-keygen -t rsa -P ”
ssh-copy-id .ssh/id_rsa.pub node2.linuxidc.com
node2:
ssh-keygen -t rsa -P ”
ssh-copy-id .ssh/id_rsa.pub node1.linuxidc.com
=======================================================================
二、安装配置 drdb
=======================================================================
node1 & node2:
rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm
在 node1 创建并修改 DRDB 配置文件
# cat /etc/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”;
# cd /etc/drbd.d/
# ls
global_common.conf
编辑配置文件 global_common.conf,最终内容如下:
# egrep -v ‘^$|^[[:space:]]*#’ global_common.conf
global {
usage-count yes;
}
common {
handlers {
pri-on-incon-degr “/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f”;
pri-lost-after-sb “/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f”;
local-io-error “/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f”;
}
startup {
}
options {
}
disk {
on-io-error detach;
}
net {
protocol C;
cram-hmac-alg “sha1”;
}
syncer {
rate 1000M;
}
}
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-05/101305p2.htm
DRBD 的详细介绍 :请点这里
DRBD 的下载地址 :请点这里
为 DRDB 创建磁盘分区 (node1,node2 执行同样的操作), 操作如下:
查看当前的磁盘分区情况
# fdisk -l /dev/sda
Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00056921
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 7859 62914560 8e Linux LVM
/dev/sda3 7859 8512 5252256 83 Linux
创建扩展分区
# echo -e ‘n\ne\n\n\nw\n’|fdisk /dev/sda
在扩展分区上创建新的磁盘分区
# echo -e ‘n\n\n+5G\nw\n’|fdisk /dev/sda
查看 /dev/sda 硬盘上新增的磁盘分区
# fdisk -l /dev/sda|grep ‘/dev/sda[45]’
/dev/sda4 8513 10443 15510757+ 5 Extended
/dev/sda5 8513 9166 5253223+ 83 Linux
下面的命令可以多执行几次,以确保新增的磁盘分区被内核识别
# partx -a /dev/sda
# kpartx -af /dev/sda
查看新增磁盘分区是否已被内核识别
# cat /proc/partitions |grep sda[45]
8 4 31 sda4
8 5 5253223 sda5
=======================================================================
两端提供等同大小的磁盘分区
drdb 默认监听在 7789 端口; 默认使用协议 C
2、定义一个资源 /etc/drbd.d/mystore1.res,内容如下:
# cat /etc/drbd.d/mystore1.res
resource mystore1 {
on node1.linuxidc.com {
device /dev/drbd1;
disk /dev/sda5;
address 172.16.16.15:7789;
meta-disk internal;
}
on node2.linuxidc.com {
device /dev/drbd1;
disk /dev/sda5;
address 172.16.16.16:7789;
meta-disk internal;
}
}
确保 node1,node2 的 drdb 配置文件保持一致
# scp -p global_common.conf mystore.res node2.linuxidc.com:/etc/drbd.d/
在两个节点上初始化已定义的资源并启动服务:
1)初始化资源,在 Node1 和 Node2 上分别执行:
# drbdadm create-md mystore1
Writing meta data…
initializing activity log
NOT initializing bitmap
New drbd meta data block successfully created.
2)启动服务,在 Node1 和 Node2 上分别执行:
# /etc/init.d/drbd start
Starting DRBD resources: [
create res: mystore1
prepare disk: mystore1
adjust disk: mystore1
adjust net: mystore1
]
.
3)查看启动状态:
# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-05-27 04:30:21
1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r—–
ns:5253020 nr:0 dw:0 dr:5253740 al:0 bm:321 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
也可以使用 drbd-overview 命令来查看:
# drbd-overview
0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r—-
从上面的信息中可以看出此时两个节点均处于 Secondary 状态。于是,我们接下来需要将其中一个节点设置为 Primary。在要设置为 Primary 的节点上执行如下命令:
drbd 8.4 中第一次设置某节点成为主节点的命令
# drbdadm primary –force resource
注:也可以在要设置为 Primary 的节点上使用如下命令来设置主节点:
# drbdadm — –overwrite-data-of-peer primary mystore1
而后再次查看状态,可以发现数据同步过程已经开始:
node1:
# drbd-overview
1:mystore1/0 SyncSource Primary/Secondary UpToDate/Inconsistent C r—n-
[>………………..] sync’ed: 0.1% (5128/5128)M
node2:
# drbd-overview
1:mystore1/0 SyncTarget Secondary/Primary Inconsistent/UpToDate C r—–
[>………………..] sync’ed: 2.7% (4996/5128)M
等数据同步完成以后再次查看状态,可以发现节点已经牌实时状态,且节点已经有了主次:
# drbd-overview
1:mystore1/0 Connected Primary/Secondary UpToDate/UpToDate C r—–
此时,若我们把 node1 降级为 Secondary,node2 提升为 primary,观察一下这两个节点角色的变化
node1:
# drbdadm secondary mystore1
# drbd-overview
1:mystore1/0 Connected Secondary/Primary UpToDate/UpToDate C r—–
node2:
# drbdadm primary mystore1
# drbd-overview
1:mystore1/0 Connected Primary/Secondary UpToDate/UpToDate C r—–
注意:只有角色是 primary 的节点才能挂载使用,提供读写操作;
secondary 既不能读,也不能写,仅能接收来自 primary 节点的数据
4、创建文件系统
文件系统的挂载只能在 Primary 节点进行,因此,也只有在设置了主节点后才能对 drbd 设备进行格式化:
node2:
# mke2fs -t ext4 /dev/drbd1
我在 secondary(node1 节点) 上执行格式化时的错误提示信息
# mke2fs -t ext4 /dev/drbd1
mke2fs 1.41.12 (17-May-2010)
mke2fs: Wrong medium type while trying to determine filesystem size
对主 Primary/Secondary 模型的 drbd 服务来讲,在某个时刻只能有一个节点为 Primary,因此,要切换两个节点的角色,只能在先将原有的 Primary 节点设置为 Secondary 后,才能原来的 Secondary 节点设置为 Primary:
node2(Primary 角色):
# mkdir /drbd
# mount /dev/drbd1 /drbd/
# cp /etc/issue /drbd/
# ls /drbd/
issue lost+found
# sed -i ‘$a\I am node2’ /drbd/issue
# sed -n ‘$p’ /drbd/issue
I am node2
模拟 node2(Primary 角色) 故障:先卸载,再降级
# umount /drbd/
# drbdadm secondary mystore1
将 node1 提升为主的,并挂载使用,查看是否能看到 node2 之前添加的数据
# mkdir /drbd
# drbdadm primary mystore1
# mount /dev/drbd1 /drbd/
# sed -n ‘$p’ /drbd/issue
I am node2
DRBD 主从角色手动切换已演示完毕,数据同步也已 ok
注:drbd 自身并不能完成角色的自动切换,需借助其他工具
主机规划
172.16.16.15 node1.linuxidc.com
172.16.16.16 node2.linuxidc.com
一、准备工作
==============================
相关阅读 :
Linux 高可用(HA)集群之 DRBD 详解 http://www.linuxidc.com/Linux/2013-08/89035.htm
DRBD 中文应用指南 PDF http://www.linuxidc.com/Linux/2013-08/89034.htm
CentOS 6.3 下 DRBD 安装配置笔记 http://www.linuxidc.com/Linux/2013-06/85600.htm
基于 DRBD+Corosync 实现高可用 MySQL http://www.linuxidc.com/Linux/2013-05/84471.htm
CentOS 6.4 下 DRBD 安装配置 http://www.linuxidc.com/Linux/2013-09/90536.htm
===============================
1. 为各主机设置主机名,IP 地址,并测试主机连通性
分别为各节点设置主机名
node1:
hostname node1.linuxidc.com
node2:
hostname node2.linuxidc.com
确保各主机在重启之后,主机名保持不变
node1:
sed -i ‘s/\(HOSTNAME=\).*/\1node1.linuxidc.com/p’ /etc/sysconfig/network
node2:
sed -i ‘s/\(HOSTNAME=\).*/\1node2.linuxidc.com/p’ /etc/sysconfig/network
注: 主机重启过程中,会从配置文件 /etc/sysconfig/network 中读取主机名,并将其设置为重启后主机名
2. 添加主机名解析: 确保每一个节点的名称都能互相解析
使用 hosts 文件做主机名解析, 在各节点执行如下操作:
cat >ed.txt<<EOF
\$a\172.16.16.15 node1.linuxidc.com
\$a\172.16.16.16 node2.linuxidc.com
EOF
sed -i -f ed.txt /etc/hosts
3. 确保 node1,node2 之间时间同步
在命令行同步时间 (立即生效,且临时生效)
ntpdate 172.16.0.1
设置定时任务 (永久生效)
echo “*/5 * * * * /usr/sbin/ntpdate 172.16.0.1 &>/dev/null;/sbin/hwclock -w” >/var/spool/cron/root
4. 配置各节点之间基于 ssh 免密码免密钥认证通信 (非必须)
生成密钥文件在各节点执行如下操作:
node1:
ssh-keygen -t rsa -P ”
ssh-copy-id .ssh/id_rsa.pub node2.linuxidc.com
node2:
ssh-keygen -t rsa -P ”
ssh-copy-id .ssh/id_rsa.pub node1.linuxidc.com
=======================================================================
二、安装配置 drdb
=======================================================================
node1 & node2:
rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm
在 node1 创建并修改 DRDB 配置文件
# cat /etc/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”;
# cd /etc/drbd.d/
# ls
global_common.conf
编辑配置文件 global_common.conf,最终内容如下:
# egrep -v ‘^$|^[[:space:]]*#’ global_common.conf
global {
usage-count yes;
}
common {
handlers {
pri-on-incon-degr “/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f”;
pri-lost-after-sb “/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f”;
local-io-error “/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f”;
}
startup {
}
options {
}
disk {
on-io-error detach;
}
net {
protocol C;
cram-hmac-alg “sha1”;
}
syncer {
rate 1000M;
}
}
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-05/101305p2.htm
DRBD 的详细介绍 :请点这里
DRBD 的下载地址 :请点这里