dbrd 8.4.6 源码编译安装

----------------------------
0.系统环境
----------------------------
db01   192.168.50.10  /dev/sdb1  主节点

db02   192.168.50.20  /dev/sdb1  备节点

# grep -v "#" /etc/hosts
192.168.50.10 db01 db01.mysql.com
192.168.50.20 db02 db02.mysql.com

#一块新硬盘
ll /dev/sd*
ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Jun 24 13:37 /dev/sdb
brw-rw---- 1 root disk 8, 17 Jun 24 13:37 /dev/sdb1

NOTE:sdb1分区未格式化.

----------------------------
1.准备安装环境
----------------------------

yum install -y make automak kernel kernel-devel kernel-headers gcc flex libxslt

----------------------------
2.编译安装drbd
----------------------------

wget http://oss.linbit.com/drbd/8.4/drbd-8.4.6.tar.gz

tar xzf drbd-8.4.6.tar.gz

cd drbd-8.4.6

------------------#开始编译安装drbd,和8.4.5之前版本有所不同,这里不用./configure,直接make就可以了

./configure --prefix=/usr/local/drbd --with-km --with-heartbeat --sysconfdir=/etc/

#with-km开启内核模块
#with-heartbeat 开启heart支持

#ls -ld /usr/src/kernels/$(uname -r)/

make KDIR=/usr/src/kernels/$(uname -r)/  #指定内核源路径开始编译

#make install

--直接结果:
make -C drbd install
make[1]: Entering directory `/soft/drbd-8.4.6/drbd'
install -d //lib/modules/2.6.32-431.el6.x86_64/updates
install -m 644 drbd.ko //lib/modules/2.6.32-431.el6.x86_64/updates
/sbin/depmod -a || /sbin/depmod -e drbd.ko 2>&1 >/dev/null || true
make[1]: Leaving directory `/soft/drbd-8.4.6/drbd'

编译成功模块安装位置
#modprobe -l | grep -i drbd
updates/drbd.ko

加载模块
# modprobe drbd

#lsmod | grep drbd

drbd                  376868  0
libcrc32c               1246  1 drbd

----------------------------
3.编译安装drbd-utils
----------------------------

#wget http://oss.linbit.com/drbd/drbd-utils-8.9.3.tar.gz-P /usr/local/src/

# tar -xf drbd-utils-8.9.3.tar.gz -C /usr/local/src

# cd /usr/local/src/drbd-utils-8.9.3

这里用了--without-83support,因为安装的是8.4以上版本

#./configure --prefix=/usr/local/drbd --sysconfdir=DIR --without-83support

/******************参数详解

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/drbd]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-spec           Rather than creating Makefiles, create an RPM spec
                          file only

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --without-83support     Do not include support for drbd driver/module <= 8.3
  --without-84support     Do not include support for drbd driver/module 8.4
  --with-udev             Enable udev integration
  --with-xen              Enable Xen integration
  --with-pacemaker        Enable Pacemaker integration
  --with-heartbeat        Enable Heartbeat v1 haresources integration scripts
  --with-rgmanager        Enable Red Hat Cluster Suite integration
  --with-bashcompletion   Enable programmable bash completion
  --with-distro           Configure for a specific distribution (supported
                          values: generic, redhat, suse, debian, gentoo,
                          slackware; default is to autodetect)
  --with-initdir          Override directory for init scripts (default is
                          distribution-specific)
  --with-noarchsubpkg     Build subpackages that support it for the "noarch"
                          architecture (makes sense only with --enable-spec,
                          supported by RPM from 4.6.0 forward)
  --with-systemdunitdir=DIR
                          Directory for systemd service files [Auto]
  --with-tmpfilesdir=DIR  install configuration files for management of
                          volatile files and directories in DIR
                          [[PREFIX/lib/tmpfiles.d]]
  --with-initscripttype=INIT_SCRIPT_TYPE
                          Type of init script to install (sysv|systemd|both).
                          [auto]

********************************/

#make

#make install 

安装成功后drbd相关的工具(drbdadm,drbdsetup)被安装到/usr/local/drbd-utils-8.9.3/etc/sbin目录下

#cp /usr/local/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d/

#chkconfig --add drbd

#chkconfig  --level  2345  drbd  on

#链接drbd的命令到系统命令路径
ln -s   /usr/local/drbd/sbin/*  /usr/bin/

----------------------------
4.设置drbd.conf配置文件
----------------------------

本次编译安装配置文件位置:/usr/local/drbd/etc/

#vi /etc/drbd.conf

----------------------------
5.启动
----------------------------

----5.0 在两台机器上配置r0资源  

两台机器上分别初始化r0资源,创建DRBD分区
准备初始化之前,需要分别在2个主机上的 空白分区上创建相应的元数据保存的数据块:
常见之前现将两块空白分区彻底清除数据,分别在两个主机上执行

dd  if=/dev/zero  of=/dev/sdb1  bs=1M  count=128 

drbdadm -c /etc/drbd.conf create-md all
或
drbdadm -c /etc/drbd.conf create-md r0  

--5.1启动两个节点drbd

mkdir -p /usr/local/drbd/var/run/drbd

#/etc/init.d/drbd start  

Starting DRBD resources: no resources defined!
no resources defined!
no resources defined!
PS:提示没有定义“资源”,这是因为刚安装好的DRBD,默认没有*.res配置文件

#netstat |grep 7788

--5.2 查看状态:

#/etc/init.d/drbd status 

drbd driver loaded OK; device status:
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by [email protected], 2015-06-24 13:47:15
m:res  cs         ro                   ds                         p  mounted  fstype
0:r0   Connected  Secondary/Secondary  Inconsistent/Inconsistent  C

cs:表示连接状态
ro: 表示主从关系 上面的表示都为从
ds:硬盘状态信息 上面表示已经实时同步中,Inconsistent:不一致

# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by [email protected], 2015-06-24 13:47:15
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:40088 nr:0 dw:0 dr:40248 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

# drbd-overview
0:r0/0  Connected Secondary/Secondary Inconsistent/Inconsistent

--5.3 查看版本
#cat /proc/drbd 

--5.4 查看位置
whereis drbd  

----------------------------
6.操作
----------------------------

----6.1 设置节点为主节点

#第1步:设置主从第一次执行
#drbdadm -- --overwrite-data-of-peer primary all

#第2步:第一次执行后平常执行下面两个其中一个命令
#drbdadm primary --force r0  

#drbdadm primary all

#第3步:设置当前节点为主节点

# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by [email protected], 2015-06-24 13:47:15
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:40088 nr:0 dw:0 dr:40248 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

#drbdadm primary --force r0 

# cat /proc/drbd
version: 8.4.6 (api:1/proto:86-101)
GIT-hash: 833d830e0152d1e457fa7856e71e11248ccf3f70 build by [email protected], 2015-06-24 13:47:15
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:40088 nr:0 dw:0 dr:40248 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

说明:ro状态变为ro:Primary/Secondary;ds状态为:UpToDate/UpToDate(inconsisten) 即"实时/实时(不一致)"

-----6.2 磁盘格式化(只对primary节点格式化)

#drbd-overview

 0:r0/0  Connected Primary/Secondary UpToDate/UpToDate 

同步完毕之后,就可以对空白磁盘格式化了.

#mkfs.ext4 /dev/drbd0  

mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
10040 inodes, 40088 blocks
2004 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=41156608
5 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
	8193, 24577

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

----6.3挂载DRBD分区到本地(只能在primary节点上挂载)

# mkdir /drbd_data

# mount /dev/drbd0 /drbd_data/

# cd /drbd_data/

#ls 

----6.4 常见命令

--6.4.1 查看资源角色(前面代表当前资源角色)

# drbdadm role r0
Primary/Secondary

---6.4.2 查看资源连接状态
#drbdadm cstate r0
Connected

---6.4.3 查看硬盘数据状态
# drbdadm dstate r0
UpToDate/UpToDate

----6.4.4 注意事项

1.主备服务器同步的两个分区大小最好相同(网上没有关于分区大小是否一定要相同的确切说法)
2.开始同步两个节点的磁盘,需要一定时间,在同步完成前,不要重启,否则会重新同步。
3.挂载之前一定要先切换当前节点为主节点
4.两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。
5.处于从节点(secondary)状态的服务器不能加载drbd块设备
6.将主节点切换为从节点之前要先卸载
7.一台主机切换为主节点之前,要确保另一台主机已切换为从节点。

----------------------------
7.测试DRBD数据镜像
----------------------------

----7.1格式化挂载磁盘

#mkfs.ext4 /dev/drbd0

# mkdir /drbd_data

# mount /dev/drbd0 /drbd_data/

# cd /drbd_data/

---7.2 生成测试数据

#touch /drbd_data/test.txt

#dd  if=/dev/zero  of=/drbd_data/test.tmp  bs=1M  count=20

# drbdadm dstate r0
UpToDate/UpToDate

---7.3 将主节点drbd的状态变为从

# drbdadm role r0
Primary/Secondary

#umount /drbd_data

#drbdadm secondary all

# drbdadm role r0  

Secondary/Secondary

---7.4 在从节点上进行挂载

#drbdadm role r0
Secondary/Secondary

#drbdadm primary all

#drbdadm role r0
Primary/Secondary

#mkdir /drbd_data

#mount /dev/drbd0 /drbd_data/

# ls -ls /drbd_data/
total 20493
   12 drwx------ 2 root root    12288 Jun 24 17:02 lost+found
20481 -rw-r--r-- 1 root root 20971520 Jun 24 17:20 test.tmp

测试成功.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-24 14:13:14

dbrd 8.4.6 源码编译安装的相关文章

马哥linux学习笔记:源码编译安装

由于rpm包在作者制作封装的时候已经把程序的一些特性固定了,如果我们根据自己的需求,需要运用程序的一些没有普适性相关特性,就需要下载程序的源码手动编译安装了,这里只是简单的介绍一下C代码的程序包编译安装方法. 为了能更直观的看到源码编译安装的过程,我演示一下在centos7.2环境中编译安装httpd2.2: 首先,编译的前提是得有称手的工具及环境了,编译c源代码就需要用到开发工具,make,gcc了,环境就需要开发库跟头文件了,如果系统中没有这些,就需要yum安装了. 这里我运行yum gro

烂泥:mysql5.0数据库源码编译安装

本文首发于烂泥行天下. 本次实验的mysql.OS相关信息如下: Mysql:5.0.96 OS:centos 32 bit 最近公司要上新的业务,指明数据库使用的是mysql5.0版本.如果是使用rpm包安装的话,那就很简单了.直接使用yum安装即可,命令如下: yum –y install mysql mysql-server Yum方式安装完毕后,直接启动mysql数据库服务即可.如下图: 这样基本上就可以了. 但是这样安装mysql数据库,没有进行定制.比如mysql数据库的数据文件存储

ubuntu 源码编译安装最新的vim 8.0

为什么要源码编译安装VIM? 因为我要安装ycm,ycm要求vim版本为8.0 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 1,核对系统版本 [email protected]:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: tr

详解LAMP源码编译安装

实战:LAMP源码编译安装 家住海边喜欢浪:zhang789.blog.51cto.com 目录 详解LAMP源码编译安装 LAMP简介 一.准备工作 二.编译安装 Apache 三.编译安装 MySQL 四.编译安装 PHP 测试LAMP搭建开源数据web管理程序phpMyadmin 详解LAMP源码编译安装 LAMP简介 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们自己定制安装AMP,编译安装L

centos 6.5源码编译安装subversion 1.8.10

一.简介 CentOS 6.5的yum源可以安装的SVN客户端版本太低了,1.6.11,所以需要升级到1.8.10,而官网有没有找到1.8.10的安装包,只能选择源码编译安装. 二.安装步骤 参考官网:http://svn.apache.org/repos/asf/subversion/trunk/INSTALL 源码下载:http://archive.apache.org/dist/subversion/ 源码编译subversion依赖许多别的工具,比如:apr.apr-util.libto

软件包管理之源码编译安装

编译步骤: 1.#cd SOURCE_CODE 2../configure 作用: 检测编译环境 提供给用户编译配置(通过脚本选项) --help 帮助信息 --prefix=/usr/local/name 安装路径 二进制 /usr/local/name/bin /usr/local/name/libexec不允许自动执行,只能被其他程序调用执行 配置文件 /usr/local/name/conf 库文件 /usr/local/name/lib 帮助文档 /usr/local/name/sha

LAMP纯源码编译安装日志

一.LAMP构架的安装与经验技巧(源码安装好处.是便于管理,可以选定参数,可以使用新版本) 相关软件列表: # ls /soft/ | grep -E "*.gz|*.zip|*.xz|*.bz2"    apr-1.4.5.tar.gz    apr-util-1.3.12.tar.gz    autoconf-2.61.tar.gz    freetype-2.3.12.tar.gz    httpd-2.4.18.tar.bz2    jpegsrc.v6b.tar.gz    

源码编译安装

除了用rpm.yum安装包外,还可以用源码编译安装 源码包:代码可见的,要想在系统里运行,要翻译成机器语言,编译就是翻译的过程. 源码包下载最好去官方网站 以httpd为例 下载地址 以后下载的源码包最好放在/usr/local/src下,目的是为了以后方便维护 有时候,需要去看一下它里面的文件,比如INSTALL  README 安装指引 源码包安装三个步骤: 第一步:   ./configure --help  查看有哪些选项 --prefix   指定安装路径 检查这步操作是否有问题,没问

Atlas2.2源码编译安装

本文主要介绍中间件atlas源码编译安装,由于rpm安装的atlas程序调用时返回的mysql版本为5.0,相应使用低版本的驱动造成时间类型的字段无法支持毫秒级别. 由于需要glib版本要大于2.32以上,centos6系统自带的glib版本为2.28,因此需要重新编译安装2.32以上的glib,这里安装2.34版本的glib需要依赖pcre大于8.31. 一.编译安装pcre8.35 # tar xf pcre-8.35.tar.gz # cd pcre-8.35 # ./configure