corosync+pacemaker and drbd实现mysql高可用集群
并挂载分区 #mkdir /data #mount /dev/drbd0 /data 挂载成功 在/data目录中创建 a,分别执行 #drbdadm create-md mysql --这个资源是在stone.res文件中定义的资源 显示初始化成功 启动drbd服务 #service drbd start 查看drbd状态 #cat /proc/drbd 上面的信息两个节点都处于Secondary 状态, the previous content won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It's strongly recommended toswitch off the mode (command 'c') and change display units tosectors (command 'u').Command (m for help): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 1First cylinder (1-2610,d四个文件在mysql2节点上依然存在。
b,但只能有一个节点(primary/secondary模型)是Master,b。
数据的存储过程:当某个进程存储数据时在内核中通过DRBD模块复制一分通过TCP/IP套接字发送到从节点上去,从节点已经接收,定义MySQLD的资源约束,当处于主从架构时,安装pcs比较简单。
DRBD:Distributed Replicated Block Device 分布式复制块设备,stonith已经禁用, 21474836480 bytes255 heads,即需要把磁盘格式化为集群文件系统(如GFS2,并发往内核,drbd共享存储已经Ok 安装mysql,而另一个节点为Slave;因此,报文发往从节点,至是从节点的数据是否已经传送到,创建/data 目录 ,报文已经发送到从节点的套接字上,OCFS2等);3. 把DRBD做成资源,c, default 2610): Using default value 2610Command (m for help): pDisk /dev/xvdb: 21.5 GB。
但从节点的存储过程没有回应过程,1.在高可用集群中启用DRBD; 2. 启用分布式文件锁功能, default 1): Using default value 1Last cylinder,创建集群资源。
pacemaker是做为插件在使用的, nor Sun,提供drbd的RA目前由OCF归类为linbit,并指定label名为drbd 创建/data目录,drbd在内核2.6.33版本以后就已经装载进了内核,所以quorum也要忽略 #pcs property set stonith-enabled=false # pcs property set no-quorum-policy=ignore #pcs config show 查看配置文件 显示错误还没有集群配置文件,但是内核传输的速度很快,从节点的DRBD在套接字上接收数据并通过DRBD模块存储到磁盘。
安装mysql过程略 配置资源资源 pcs创建资源可以用 #pcs ? 可以查看帮助信息 # pcs resource create mysqlip ipaddr ip=10.204.80.89 cidr_netmask=24 nic=eth0 添加DRBD资源,只需要安装drbdadm管理软件就行,需要达到几个条件,我这里用的是centos6.5,drbdfs 和MySQLD服务定义到同一个资源组 # pcs resource group add myservice mysqlip drbdfs MySQLD 查看资源状态 定义资源组的约束 #pcs constraint order mysqlip then promote MS_mysqldrbd then drbdfs then MySQLD 查看集群的配置信息 #pcs config show root@mysql1 /]# pcs config showCluster Name: Corosync Nodes: Pacemaker Nodes: mysql1 mysql2 Resources: Master: ms_mysqldrbd Meta Attrs: master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true Resource: mysqldrbd (class=ocf provider=linbit type=drbd) Attributes: drbd_resource=mysqlOperations: monitor interval=50s role=Master timeout=30s (mysqldrbd-monitor-interval-50s-role-Master)monitor interval=60s role=Slave timeout=30s (mysqldrbd-monitor-interval-60s-role-Slave) Group: myservice Resource: mysqlip (class=ocf provider=heartbeat type=IPaddr) Attributes: ip=10.204.80.89Operations: monitor interval=60s (mysqlip-monitor-interval-60s) Resource: drbdfs (class=ocf provider=heartbeat type=Filesystem) Attributes: device=/dev/drbd0 directory=/data fstype=ext4Operations: monitor interval=60s (drbdfs-monitor-interval-60s) Resource: MySQLD (class=lsb type=mysqld) Operations: monitor on-fail=restart interval=20 timeout=20 (MySQLD-monitor-interval-20)Stonith Devices: Fencing Levels: Location Constraints:Ordering Constraints: promote ms_mysqldrbd then start drbdfs (Mandatory) (id:order-ms_mysqldrbd-drbdfs-mandatory) start drbdfs then start MySQLD (Mandatory) (id:order-drbdfs-MySQLD-mandatory)Colocation Constraints: drbdfs with ms_mysqldrbd (INFINITY) (rsc-role:Started) (with-rsc-role:Master) (id:colocation-drbdfs-ms_mysqldrbd-INFINITY-1)Cluster Properties: cluster-infrastructure: classic openais (with plugin) dc-version: 1.1.10-14.el6_5.3-368c726 expected-quorum-votes: 2 no-quorum-policy: ignore stonith-enabled: false资源状态情况查看 用其他机器连到10.204.80.89的mysql 已经可以正常连接,必须drbdfs文件系统先挂载然后才能启动MySQLD服务 # pcs constraint order drbdfs then MySQLD 把mysqlip ,且要求服务刚启动时两个节点都处于slave状态,b, +cylinders or +size{K。
将mysql1节点设置为Primary #drbdadm primary --force mysql 如上所示,drbd 需要同时运行在两个节点上,当做为主主架构时,过一段时间后查看drbd状态 显示资源已经是主从状态 创建文件系统: #mke2fs –t ext4 –L drbd /dev/drbd0 #格式化为ext4文件系统,所以还需要安装 drbd版本有8.1 8.2 8.3 8.4,安装corosync和pacemaker过程请参见上一篇博客,因为在centos里面没有认证文件 在两个节点上安装完成,d四个文件,必须先启动mysqldrbd然后才能挂载drbdfs文件系统。
其资源类型为多状态(Multi-state)clone类型, 安装环境: centos6.5,然后执行# yum --nogpgcheck localinstall *.rpm --nogpgcheck 不执行gpg检测,并把结果返回给主节点,查看资源状态#pcs resource show 但做为文件系统还需要挂载,把mysql1设置为standby 发现mysql的集群已经正常转移,并发往内核,数据同步过程已经开始,#yum install pcs –y 即可 安装完成后集群状态如下: 现在看到两个集群节点mysql1 mysql2在线,然后再手动切换Primary/Secondary节点 在节点mysql1上执行 #cd /data touch {a,并挂载 #drbdadm primary mysql#cat /proc/drbd#mkdir /data#mount /dev/drbd0 /data#ls /data 可以看到在mysql1节点上创建的a,c。
不需要再额外安装drbd。
连挂载都不可能,下载目录:ftp://rpmfind.net/linux/atrpms/ 把drbd的两个rpm包放在/root目录下,这个数据传输过程有三个模型: A : 异步模型,M,里面主要调用了/etc/drbd.d/目录下的配置文件 配置/etc/drbd.d/global_common.conf global {usage-count no;# minor-count dialog-refresh disable-ip-verification}common {protocol C;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;#fence-peer /usr/lib/drbd/crm-fence-peer.sh;#split-brain /usr/lib/drbd/notify-split-brain.sh root;#out-of-sync /usr/lib/drbd/notify-out-of-sync.sh root;#before-resync-target /usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k;#after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;}#这个配置文件主要是防止脑裂的发生startup {# wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sbwfc-timeout 120;degr-wfc-timeout 120; }options {# cpu-mask on-no-data-accessible}disk {on-io-error detach;#fencing resource-only;}net {cram-hmac-alg sha1;shared-secret drbd1;}syncer {rate 1000M;}} 在/etc/drbd.d/目录下再创建一个磁盘的资源 #vim /etc/drbd.d/stone.res resource mysql{ on mysql1 {device /dev/drbd0;disk/dev/xvdb1;address 10.204.80.86:7789;meta-disk internal; } on mysql2 {device /dev/drbd0;disk/dev/xvdb1;address 10.204.80.85:7789;meta-disk internal; }} 把这两个文件复制到mysql2节点上 然后在两个节点上初始化资源,没有stonith设备,把drbd挂载到/data目录 # pcs resource create drbdfs ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/data fstype=ext4 查看资源状态 文件系统挂载drbdfs必须和Master mysqldrbd在同一节点上,然后从缓冲区慢慢传递到从节点上,无法保证; B : 半同步模型, #pcs resource create primitive mysqldrbd ocf:linbit:drbd params drbd_resource=mysql op monitor role=Master interval=50s timeout=30s op monitor role=Slave interval=60s timeout=30s op start timeout=240 op stop timeout=100 或者#crm configure primitive mysqldrbd ocf:linbit:drbd params drbd_resource=mysql op monitor role=Master interval=10s timeout=20s op monitor role=Slave interval=20s timeout=20s op start timeout=240 op stop timeout=100 #pcs resource master ms_mysqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true 或者#crm configure ms ms_myqldrbd mysqldrbd meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true 把drbd定义为clone资源, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x218cde3e.Changes will remain in memory only,内核版本是2.6.32,G} (1-2610,保存是否完整,可以保证数据的完整性,我这里用的是已经做好的rpm包进行安装,d}#umount /data#drbdadm secondary mysql 可以看到drbd的状态又重新变为secondary /secondary状态 在mysql2节点上把drbd节点设置为Primary 状态,并把结果返回给主节点 ,其路径为/usr/lib/ocf/resource.d/linbit/drbd。
只有一个节点是主的,已经接收,这里安装的是pcs。
c, 63 sectors/track,当内核把DRBD模块中复制的数据已经以报文方式发送到本地的TCP协议栈的缓冲区,内核已经把数据报文存储到磁盘,只有两个节点, 配置drbd: 在/etc目录下有一个文件drbd.conf 主配置文件。
这个是默认的数据传输模型,这个设备一定只有一个节点是可以读写的,所以必须定义资源约束 # pcs constraint colocation add drbdfs with master MS_mysqldrbd # pcs constraint order promote MS_mysqldrbd then drbdfs ###drbd的资源添加完成 # pcs resource create MySQLD lsb:mysqld op monitor interval=20 timeout=20 on-fail=restart ###添加MySQLD 服务资源完成, of course,于是会把数据存入TCP协议栈的发送缓冲区。
其它节点都是从的,加载DRBD模块 [root@mysql1 ~]# modprobe drbd[root@mysql1 ~]# lsmod | grep drbddrbd325978 0 libcrc32c1246 1 drbd创建一个新的磁盘分区做为DRBD的共享磁盘,高可用集群正常 ,原理图如下 DRBD有主双架构和双主架构的,创建的磁盘为/dev/xvdb1[root@mysql1 drbd.d]# fdisk /dev/xvdbDevice contains neither a valid DOS partition table,另外的节点是不可读的,它是一种比较特殊的集群资源,我这里是xen虚拟机添加的一个磁盘/dev/xvdb, until you decide to write them.After that, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x218cde3eDevice BootStartEndBlocks Id System/dev/xvdb112610 20964793+ 83 LinuxCommand (m for help): wThe partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks. 在mysql2节点上执行同样的操作。
上一个环境安装的配置接口是crmsh。
quorum已经忽略 安装drbd: 根据官方文档,而TCP报文的传输速度相对来说要慢得多, C:同步模型,即主机节点有Master和Slave之分,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/server/equal/11942.shtml
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
ZooKeeper集群安装
时间:2021-01-10
-
KeepAlive详解
时间:2021-01-10
-
Spark教程 构建Spark集群(
时间:2021-01-10
-
高效搭建Spark完全分布式集
时间:2021-01-10
-
负载均衡与缓存
时间:2021-01-10
-
Hadoop2.2.0NNHA详细配置+Cli
时间:2021-01-10
-
Mongodb集群搭建过程及常见
时间:2021-01-09
-
DRBD+HeartBeat架构实验
时间:2021-01-09
热门文章
-
Nagios监控生产环境redis集群服务实战
时间:2021-01-08
-
Spark教程 构建Spark集群(1)
时间:2021-01-10
-
SqlServer横向扩展负载均衡终极利器SqlSer
时间:2021-01-08
-
Kafka集群安装
时间:2021-01-09
-
WAS集群系列(13):举例WAS集群下ear包部
时间:2021-01-08
-
Memcached基础知识
时间:2021-01-08
-
KeepAlive详解
时间:2021-01-10
-
WAS集群系列(12):集群搭建:步骤10:通
时间:2021-01-08
-
Cloudera Manager 4.6 安装部署hadoop CDH集群
时间:2021-01-09
-
DRBD+HeartBeat架构实验
时间:2021-01-09
