array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 DRBD+Heartbeat+MySQL高可用 - 爱码网

一、规划

系统              CentOS 64bit

DRBD版本          9.0.0

Heartbeat版本     3.0.6

MySQL版本         5.6.27

DRBD磁盘          /dev/sdb1 

主机名(IP)        node1(192.168.10.132)   

                  node2(192.168.10.133)                 

注:已关闭SeLinux和Firewalld。


二、安装

Heartbeat安装:http://wangzhijian.blog.51cto.com/6427016/1708694

DRBD安装:http://wangzhijian.blog.51cto.com/6427016/1710926

MySQL安装:

1
2
3
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm     ##安装MySQL源
# yum -y install mysql-server  mysql-devel       ##安装MySQL


三、配置互信

HA-01:

1
2
ssh-****** -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub [email protected]

HA-02:

1
2
ssh-****** -t rsa -f ~/.ssh/id_rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub [email protected]


四、配置


①配置DRBD


a.主配置文件drbd.conf

1
2
3
4
# 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";


b.配置global_common.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# cat /etc/drbd.d/global_common.conf|grep -v "#" 
global {
usage-count no;       ##是否参加drbd的使用者统计,默认此选项为YES
}
common {
handlers {
}
startup {
}
options {
}
disk {
}
net {
}
}


c.新建res资源配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# vi /etc/drbd.d/drbd.res                    ##新建一个名为drbd的res资源
resource r1 {                                ##定义资源组名称为r1
         net {
               cram-hmac-alg sha1;             ##使用sha1加密
               shared-secret "123456";            ##生成共享**
         }
         volume 1 {                          ##定义卷组
               device    /dev/drbd1;        ##逻辑设备路径(建立块设备)
               disk      /dev/sdb1;        ##物理设备路径(用于复制的分区)
               meta-disk internal;        ##meta data信息存放的方式,该处为内部存储,
                                            即和真实数据放在一起存储
         } 
         on node1 {                    ##on开头,后面是主机名称(需与uname -n相同)
               node-id    0;
               address    192.168.10.132:7000;      ##设置drbd监听地址和端口
          }
          on node2 {
               node-id    1;
               address    192.168.10.133:7000;
          }
          connection {
               host node1  port 7000;
               host node2  port 7000;
               net {
                       protocol C;##使用drbd的第三种同步协议,表示收到对方主机写入确认后,则认为写入完成
               }
          }
}


d.挂载新磁盘

# fdisk /dev/sdb 

-----> n

-----> 1

-----> 默认

-----> +300M -----> w



f.创建设备元数据并格式化磁盘

1
2
3
4
5
6
# dd if=/dev/zero of=/dev/sdb1 bs=1M count=10       ##用指定大小的块拷贝一个文件
# drbdadm -c /etc/drbd.conf create-md all           ##创建设备元数据
# mkfs.ext4 /dev/drbd1                              ##格式化虚拟磁盘
# mkdir -pv /data/mysql 
# chown -R mysql.mysql /data/mysql/
# ln -s /etc/ha.d/resource.d/drbddisk /usr/local/heartbeat/etc/ha.d/resource.d/    ##建立drbddisk脚本至heartbeat的/etc/ha.d/resource.d/的软链接


②Heartbeat配置

     Heartbeat的配置主要涉及到ha.cf、haresources、authkeys这三个文件。其中ha.cf是主配置文件,haresource用来配置要让Heartbeat托管的服务,authkey是用来指定Heartbeat的认证方式。


a.配置ha.cf

1
2
3
4
5
6
7
8
9
10
11
# cat /usr/local/heartbeat/etc/ha.d/ha.cf  |grep ^[^#]                
logfile  /var/log/ha-log                       ##日志文件记录
logfacility   local0
keepalive  2                         ##设定心跳(监测)时间时间为2秒
deadtime  30            ##指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源  warntime  10                   ##指定心跳延迟的时间
initdead  120          ##系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍      udpport  694                       ##广播/单播通讯使用的Udp端口
ucast  eno16777736  192.168.10.133 ##采用网卡eno16777736的udp单播来组织心跳,后面为对端IP
auto_failback  on                        ##定义当主节点恢复后,是否将服务自动切回
node    node1                             ##节点名称,与uname -n显示一致
node    node2
ping  192.168.10.1


b.配置haresources

1
2
3
# cp resource-agents-3.9.6/heartbeat/mysql /usr/local/heartbeat/etc/ha.d/resource.d/   ##复制MySQL脚本至heartbeat的/etc/ha.d/resource.d/下
# cat /usr/local/heartbeat/etc/ha.d/haresources |grep ^[^#]
node1  IPaddr::192.168.10.222/24/eno16777736 drbddisk::r1 Filesystem::/dev/drbd1::/data::ext4  mysql

node1是HA集群的主节点,IPaddr为heartbeat自带的执行脚本,heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.10.222/24 start的操作,即虚拟一个子网掩码为255.255.255.0,IP为192.168.10.222的地址,此IP为heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口,接着,指定使用的DRBD的资源,然后,Heartbeat将执行共享磁盘分区的挂载操 作,"Filesystem::/dev/sdb1::/data::ext4"相当于在命令行下执行mount操作,即"mount -t ext4 /dev/sdb1 /data",最后依次启动MySQL服务。


c.配置authkeys

1
2
3
# grep -v "#" /usr/local/heartbeat/etc/ha.d/authkeys 
auth 2
2 sha1 HI!

auth 后面填写序号,可任意填写,但第二行开头必须为序号名,然后为验证方式,支持三种( crc md5 sha1 )方式验证,最后面是自定义**


d.复制配置文件至node2

1
# scp /usr/local/heartbeat/etc/ha.d/* [email protected]:/usr/local/heartbeat/etc/ha.d/

注:需更改ha.cf的ucast中的IP为node1的IP(该处为192.168.10.132)。


③配置MySQL 

1
2
# vi /etc/my.cnf
datadir=/data/mysql                 ##修改MySQL的数据存储目录


五、测试

1
2
3
4
5
# drbdadm up r1                                    ##启用该资源
# drbd-overview 
 1:r1/1  Connected(2*) Secondary(2*) UpToDa/UpToDa 
# systemctl start mysql
# systemctl start heartbeat

DRBD+Heartbeat+MySQL高可用

已实现自动挂载


②故障切换测试

node1:

1
# systemctl stop heartbeat

node2:

DRBD+Heartbeat+MySQL高可用

DRBD+Heartbeat+MySQL高可用

已实现正常切换


本文出自 “记事本” 博客,请务必保留此出处http://wangzhijian.blog.51cto.com/6427016/1713052


转载于:https://blog.51cto.com/lucifer119/1732361

相关文章: