设为首页 收藏本站
查看: 2054|回复: 0

[经验分享] 高可用集群corosync+pacemaker+drbd+httpd----手动配置篇

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-14 13:11:08 | 显示全部楼层 |阅读模式
共享存储高可用方案 -----DRBD
Drbd  :Distributed Replicated Block Device
高可用集群中的文件共享方案之一
共享存储的常见实现方式
DAS:直接附加存储 Direct attached storage:通过专用线缆直接连接至主板存储控制器接口的设备成为直接附加存储.,如外置的raid阵列
并行口: IDE  SCSI
两种接口的区别:
ide接口的存取过程:
首先将从文件的读取说起;当用户空间进程要读写文件时首先向内核发起系统调用,然后进程有用户模式切换至内核模式,内核调用驱动程序使用特定的协议去驱动硬件并将数据按block块的方式读入内核空间的缓冲区,当数据准备完成再将数据复制到用户空间的内存中,然后通知内核空间进程数据准备完毕可以使用,此时有内核模式转换为用户模式,在这个过程中,需要cpu参与数据的寻址,控制信号传输,内存寻址等等会消耗cpu时间
而scsi本身就叫做小型计算机系统接口,本身就含有cpu等硬件设备,可以节省主机cpu时间,系统当读取文件时,系统直接将scsi协议的数据直接交由scsi卡去处理就行这样可以大大节省cpu时间占用,提高效率.这也是为甚么scsi接口的硬盘要比IDE接口硬盘贵的原因通常scsi接口的对cpu的占用率大约为IDE接口占用率的10%左右.在接口方面一块icsi可以接7(窄带)块或15(宽带)块硬盘..其中窄带总线接口有八个口其中一个接终结器.所谓“终结”就是在最后一个SCSI设备上设置一个跳线或安装一个终结器,通知SCSI控制器SCSI总线到此处就结束了
时至今日scsi一个接口以经可以接一块scsi卡而不仅仅是一块盘,这样就组成了scsi的存贮网络 总线上的每一个口称为一个target每个口上磁盘被记作一个lun (逻辑单元号)
串行口SATA    SAS    USB
NAS:network attached storage:
在一个网络内以服务的形式提供存储.例如NFS,Samba等此时提供的存储是文件系统级别的
SAN:Storage Area Network
由于SCSI协议的传输依赖于特定的传输线缆,为了实现更远距离的传输可以将ICSI协议封装的数据,再以网络传输协议进行第二次封装借助于网线进行数据传输,以提高传输距离另一端则有网络接口卡接受下来,并理解scsi协议存入存储设备,因此后端的存储设备可以是任何形式,不局限于scsi硬盘.这样所提供的为块级别的存储,因为前端并不需要理解整个存储的传送过程.在其开来自己所连接的就是一块scsi硬盘,可以对硬盘进行格式化等操作,所以此种方式提供的是块级别的存储
DRBD:原理图
wKiom1Q6gETiQZn0AAKfn4CCM7I569.jpg


当数据到达缓存或缓冲层时数据会分流一份写入本地磁盘,另一份将通过drbd设备发送至网络,传输到远端节点,远端节点的drbd设备接受到数据后将数据写入磁盘.在这个过程中
数据只发送至本地tcp/ip协议栈就认为数据写完成此时称作Protocol A
数据发送至远端的tcp/ip协议栈就认为数据写完成此时称作Protocol B
数据直到存储到远端磁盘才认为数据写完成此时称作Protocol C

工作模型为
1,master/secondary:此模式下只有主节点可读写 从节点不能读写也不能挂载
2,master/master:双主模型,此模式下要借助高可用集群文件系统实现读写

DRBD安装
注意安装包必须与系统的发行版本号(uname -r)一致
下载地址为ftp://rpmfind.net/linux/atrpms

drbd-8.4.3-33.el6.x86_64.rpm                    用户工具
drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm   内核模块

[iyunv@localhost~]#rpm  -ih  
drbd-8.4.3-33.el6.x86_64.rpm  drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm  
drbd-8.4.3-33.el6.x86_64.rpm
warning:: Header V4 DSA/SHA1 Signature, key ID 66534c2b: NOKEY
########################################### [100%]
########################################### [ 50%]
########################################### [100%]
wKiom1Q6gHHzs53uAAHCajMxDuI663.jpg
wKiom1Q6gHGSg1PcAAGjsREe4o4939.jpg
实验拓扑图:
wKiom1Q6gJCgTUddAAEL3inUIEY171.jpg

分别在Node1和node2 安装两个包,并且修改hosts文件够解析主机名,并且时间同步
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.101.200 node1.centod.com node1
172.16.34.1    node2.centod.com node2

在两台主机上创建两个大小相同的分区假设2G

echo -e "n  p  3   +2G  w " |fdisk /dev/sda

配置文件为分段式的
1,global   {  usage-count no;   }是否通知drbd已经安装用于官方计数    全局配置段
2,command {
           Protocol C;
           Handlers {   }
           Startup  {   }
           Disk    { on-io-error detach }  一旦本地drbd设备对应对应资源的磁盘发生错误时的处理动作 detach表示移除 同步过程也无法进行
           Net     { cram-hmac-alg “sha1”;   认证算法
                     Shared-secret “hzm132”;  密码
                    }
            Syncer  {  rate 1000M; } 传输速率 drbd刚启动时要逐位对齐 要进行全盘同步
  } 共享段


没列出的使用默认配置
3,定义资源格式如下
   Vim  /etc/drbd.d/web.res
Resource web {
  On node1.centod.com {
     Device   /dev/drbd0;
     Disk     /dev/sdb3;
     Address  172.16.101.200:7789;
     Meta-disk internal;
     }
On node2.centod.com {
     Device /dev/drbd0;
     Disk  /dev/sdb3;
     Address 172.16.34.1;
     Meta-disk internal;
     }
分别在两台主机执行初始化:
Drbdadm create-md web
[need to type 'yes' to confirm] yes

Writing meta data...
initializing activity log
NOT initializing bitmap
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory
New drbd meta data block successfully created.
lk_bdev_save(/var/lib/drbd/drbd-minor-0.lkbd) failed: No such file or directory

此时初始化成功
然后在两台主机启动drbd服务

[iyunv@localhost ~]# service drbd start
Starting DRBD resources: [
create res: web
prepare disk: web
adjust disk: web
adjust net: web
]
..........
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- In case this node was already a degraded cluster before the
reboot the timeout is 0 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot the timeout will
expire after 0 seconds. [wfc-timeout]
(These values are for resource 'web'; 0 sec -> wait forever)
To abort waiting enter 'yes' [  14]:
.查看状态
cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-11-29 12:28:00
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:2103412   
刚启动时默认为Secondary/Secondary模式
强制提升其中一个为主节点

[iyunv@localhost ~]# drbdadm primary --force web
[iyunv@localhost ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-11-29 12:28:00
0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---n-
ns:217216 nr:0 dw:0 dr:224928 al:0 bm:13 lo:2 pe:3 ua:8 ap:0 ep:1 wo:f oos:188837
[=>..................] sync'ed: 10.4% (1888372/2103412)K 开始同步
finish: 0:00:26 speed: 71,680 (71,680) K/sec

查看状态
[iyunv@localhost ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-11-29 12:28:00
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:2103412 nr:0 dw:0 dr:2104084 al:0 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
此时以为主从模式
格式化主节点
[iyunv@localhost ~]# mke2fs -t ext4 /dev/drbd0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131648 inodes, 525853 blocks
26292 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=541065216
17 block groups
32768 blocks per group, 32768 fragments per group
7744 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

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

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

挂载主节点并写入数据
[iyunv@localhost ~]# mount /dev/drbd0 /mnt
[iyunv@localhost ~]# cp /etc/issue /mnt
[iyunv@localhost ~]# ls /mnt
issue  lost+found

查看是否数据已经同步
卸载主节点设为从节点
[iyunv@localhost ~]# umount /dev/drbd0
[iyunv@localhost ~]# drbdadm secondary web
[iyunv@localhost ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-11-29 12:28:00
0: cs:Connected ro:Secondary/Secondary ds:UpToDate/UpToDate C r-----
ns:2202732 nr:0 dw:99320 dr:2104805 al:27 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

将node2提升为主节点上挂载设备查看是否有数据
[iyunv@node2 ~]# drbdadm primary web
[iyunv@node2 ~]# cat /proc/drbd
version: 8.4.3 (api:1/proto:86-101)
GIT-hash: 89a294209144b68adb3ee85a73221f964d3ee515 build by gardner@, 2013-11-29 12:28:00
0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:0 nr:2202732 dw:2202732 dr:672 al:0 bm:129 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
[iyunv@node2 ~]# mount /dev/drbd0 /mnt
[iyunv@node2 ~]# ls /mnt
issue  lost+found
至此实验成功

http+corosync+pacemaker+drbd实现基于drbd存储的高可用集群
实验环境为centos6.5 使用上面两台主机继续进行下面的配置
首先在两台主机安装高可用集群套件:
[iyunv@localhost ~]# yum install corosync pacemaker
安装高可用命令行配置工具crmsh 依赖于pssh  redhat-rpm-config
yum install crmsh-1.2.6-4.el6.x86_64.rpm
pssh-2.3.1-2.el6.x86_64.rpm
redhat-rpm-config-9.0.3-42.el6.centos.noarch.rpm

Corosync配置文件为:
compatibility: whitetank
totem {
        version: 2
        secauth: on
        threads: 0
        interface {
                ringnumber: 0
                bindnetaddr: 172.16.0.0
                mcastaddr: 226.194.231.1
                mcastport: 5405
                ttl: 1
        }
}

logging {
        fileline: off
        to_stderr: no
        to_logfile: yes
        to_syslog: no
        logfile: /var/log/cluster/corosync.log
        debug: off
        timestamp: on
        logger_subsys {
                subsys: AMF
                debug: off
        }
}
amf {
        mode: disabled
}
service {
        ver: 0
        name: pacemaker
        # user_mgmtd: yes
}
aisexec {
        user: root
        group: root
}
                 

生成秘钥
corosync-keygen
如果此时熵池中数据不够另起一终端敲键盘

配置高可用资源
[iyunv@node1 corosync]# crm
crm(live)# status
Last updated: Thu Sep 18 16:12:48 2014
Last change: Thu Sep 18 16:07:11 2014 via crmd on node2.centod.com
Stack: classic openais (with plugin)
Current DC: node2.centod.com - partition with quorum
Version: 1.1.10-14.el6-368c726
2 Nodes configured, 2 expected votes
0 Resources configured
Online: [ node1.centod.com node2.centod.com ]


Vip资源代理
crm(live)# configure
crm(live)configure# primitive vip ocf:heartbeat:IPaddr params ip=172.16.101.220
crm(live)configure# verify
Httpd资源代理
crm(live)configure# primitive httpd lsb:httpd op monitor interval=20s timeout=20s op start timeout=20s op stop timeout=20s
crm(live)configure# verify
定义drbd主资源
crm(live)configure# primitive drbd ocf:linbit:drbd params drbd_resource=web op monitor role=Master interval=20s timeout=20s op monitor role=Slave interval=20s timeout=20s op start timeout=240s op stop timeout=100s

crm(live)configure# verify

定义克隆资源同时会指定主从资源
crm(live)configure# master ms-webdrbd drbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=ture

crm(live)configure# verify

定义存储资源
crm(live)configure# primitive httpd-storage ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/var/www/html fstype=etx4 op monitor interval=20s timeout=40s op start timeout=60s op stop timeout=60s

crm(live)configure# verify
定义位置约束关系
crm(live)configure# colocation storage-nrbd-master-httpd-vip inf: httpd-storage ms-webdrbd:Master httpd vip
crm(live)configure# verify
定义顺序约束
crm(live)configure# order nrbd-storage-vip-httpd inf: ms-webdrbd:promote httpd-storage:start vip httpd
crm(live)configure# verify

无误提交
Commit
查看结果
Crm configure show
node node2.centod.com
node node3.centod.com
primitive drbd ocf:linbit:drbd
        params drbd_resource="web"
        op monitor role="Master" interval="20s" timeout="30s"
        op monitor role="Slave" interval="40s" timeout="30"
        op start timeout="240s" interval="0"
        op stop timeout="100s" interval="0"
primitive httpd lsb:httpd
        op monitor interval="20s" timeout="20s"
        op start timeout="20s" interval="0"
        op stop timeout="20s" interval="0"
        meta target-role="Started"
primitive httpd-storage ocf:heartbeat:Filesystem
        params device="/dev/drbd0" directory="/var/www/html" fstype="ext4"
        op monitor interval="20s" timeout="40s"
        op start timeout="60s" interval="0"
        op stop timeout="60s" interval="0"
        meta target-role="Started"
primitive vip ocf:heartbeat:IPaddr
        params ip="172.16.101.220"
        meta target-role="Started"
ms ms-webdrbd drbd
        meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" target-role="Started"
colocation storage-nrbd-master-httpd-vip inf: httpd-storage ms-webdrbd:Master httpd vip
order nrbd-storage-vip-httpd inf: ms-webdrbd:promote httpd-storage:start vip httpd
property $id="cib-bootstrap-options"
        dc-version="1.1.10-14.el6-368c726"
        cluster-infrastructure="classic openais (with plugin)"
        expected-quorum-votes="2"
        stonith-enabled="false"
        no-quorum-policy="ignore"
查看高可用集群状态信息
Online: [ node1.centod.com ]
OFFLINE: [ node2.centod.com ]

vip(ocf::heartbeat:IPaddr):Started node1.centod.com
httpd(lsb:httpd):Started  node1.centod.com
Master/Slave Set: ms-webdrbd [drbd]
     Masters: [ node1.centod.com ]
     Stopped: [ node2.centod.com  ]
httpd-storage(ocf::heartbeat:Filesystem):Started node1.centod.com





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25971-1-1.html 上篇帖子: 高可用集群corosync+pacemaker+drbd+httpd----自动配置篇 下篇帖子: activemq+zookeeper+leveldb 集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表