易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4043|回复: 1
收起左侧

Linux集群之corosync+pacemaker实现MySQL高可用

[复制链接]
发表于 2017-9-23 11:01:23 | 显示全部楼层 |阅读模式
购买主题 本主题需向作者支付 2 金钱 才能浏览
 楼主| 发表于 2017-9-23 11:31:22 | 显示全部楼层
写这篇文章的时候,其实心里很不爽,国外VPN出了点问题,所以用度娘了,度娘搜出来的东西,80%是一样,有的名字不一样,但是内容还是一样的,corosync pacemaker mysql drbd 的高可用,我在想,如果不用drbd是不是就不能用corosync pacemaker实现高可用了?5 a  J. K. C7 C6 U7 J6 Q- @
对度娘的搜索算法,以及竞价排名,我只想说我去年买了个表。3 G) g% E2 x2 T& ~, q( e) |3 g
一,mysql replication主从配置
& @2 |/ M8 u5 H2 \( N, c7 ^请参考:mysql replication 主从(master-slave)同步
6 \/ T8 j2 A+ i7 e二,corosync pacemaker安装配置0 W% z# \2 f6 N8 F
请参考:corosync pacemaker nginx 高可用 安装配置8 [2 K  f4 D- s- m
上面二篇博客的/etc/hosts是定义的不一样的,以mysql replication为准,也就是masters,slave2。
" o6 w" w" H( n6 f/ F8 T: y9 C7 p在这里要注意,改过hosts的名称后,masters节点,要重新生成auth文件的。
3 E; O+ M" v6 k" ~& t

2 u: F! v1 E9 L& q* K[root@masters corosync]# corosync-keygen  & O: @2 L; q$ T# g/ ?: n" c
[root@masters corosync]# scp /etc/corosync/authkey root@slave2:/etc/corosync/ //如果有很多节点都要copy  
- ~) l4 }# \* Y8 J0 x6 g
# Z; F2 R# I1 Y) i2 X4 _各节点重启corosync。) j( q0 w' }( `" F- K$ u- p( d; s. f
三,masters节点,配置mysql crmsh
- F3 G8 K# b7 s2 M1,配置mysql crmsh
7 \! U8 V1 m" g" `' T[root@masters tank]# crm  ( E* ]( o0 M) \. k6 w; a& r
crm(live)# configure  0 O/ @. O5 D" r1 R* I1 D
crm(live)configure#  
; f' ~* T' U2 O1 ^: z9 E+ rcrm(live)configure# property stonith-enabled=false  + g& L; i, \' _- W4 I) h
crm(live)configure# property no-quorum-policy=ignore  
, S* b$ N4 }+ V) J  I1 Rcrm(live)configure# primitive mysqlip ocf:heartbeat:IPaddr params ip=192.168.10.231 op monitor interval=30s timeout=20s on-fail=restart crm(live)configure# primitive mysqlserver lsb:mysqld  
( y" K5 t& C6 _7 Y5 qcrm(live)configure# colocation mysql_col inf: mysqlserver mysqlip  
0 x- M+ L' T7 F6 \% ncrm(live)configure# order mysql_after_ip mandatory: mysqlip mysqlserver  6 c( }9 y( h/ |& e
crm(live)configure# verify  : q+ q* v7 O0 K* D" i, w- A* Z
crm(live)configure# commit  
3 \2 C) J7 U# P. L, P2 O8 k, l- kcrm(live)configure# show  6 E6 n# y- {) t7 S

1 r# O8 W( y" K2 A" c1 |5 w+ C

0 U/ G& ?: u% J* ?7 s$ {在这里发现一个问题,在网上看了一些资料,关于monitor后时间配置,有几种版本+ ]! k8 D6 Y$ Y( X) S9 R
monitor interval=30 timeout=20
* o( h* G1 P; V. Hmonitor interval="30" timeout="20"- w+ j+ }: W/ l) t3 @  u' F4 P; E: m
monitor interval="30s" timeout="20s"
3 @/ r5 E( k8 t, S我没有验证这些写法的正确性,但是monitor interval=30s timeout=20s,这种写法肯定是正确的,我用的系统是centos 6.5 64位,并且在帮助文档中也是这种写法。$ x: I  R+ Q+ h+ G- v9 i! H9 i

2 ~* N6 G2 W1 F: a
0 [* {1 b/ K+ i3 Z) R6 I% A4 v这是配置完成后的,通过show查看
1 Q, C6 H& X( O; R& ~! _( X8 z
- k" |( l: I/ H
: k' w  m; S. A3 b6 g, L3 V7 o# C! J2,检测mysql各节点状态
  r  l, l0 }0 \$ J7 `2 i7 H
2 |5 S$ k, m' d  h" F3 Q) B4 k  F8 r
[root@masters tank]# crm status  
" g) t% Z4 k% Y9 WLast updated: Thu Apr 23 02:36:54 2015  8 w4 H) s7 T3 j2 M. h) {5 i+ \
Last change: Thu Apr 23 02:36:06 2015  
, T$ e9 @% l) O  M+ }! hStack: classic openais (with plugin)  
/ B0 Q, k, j( |' nCurrent DC: slave2 - partition with quorum  
6 M# t; b1 b" n( E+ C0 FVersion: 1.1.11-97629de  
) o5 k2 l& B( s9 H5 Nodes configured, 2 expected votes  
: g, x# v0 \' p  C( x0 q3 Resources configured  3 T! f9 L6 h6 S$ @' Z/ F) K
  
2 Z% E, q$ J2 ZOnline: [ masters slave2 ]  //二节点都要在线  " l( R/ @! |$ J) m; e
OFFLINE: [ localhost.localdomain node1 node2 ]    K6 S- x/ k9 D$ {. m! E; ]
  
0 g# J. c; F3 M, J* L. X webip (ocf::heartbeat:IPaddr): Started masters  * i9 w/ N. a' V( G5 Y
nginx_res (lsb:nginx): Started masters  ! ]9 \* R% v+ y8 P
mysqlip (ocf::heartbeat:IPaddr): Started slave2  8 h' V: z% X, I% z: o0 M' Y$ R- n" ?
mysqlserver (lsb:mysqld): Started slave2  1 H4 s# D% _5 \3 k: H

5 S& J) p7 E2 U  U9 Q4 s
' ~  \* E9 s( \  D. m8 A! t: Y, ?4 {+ S+ a, t+ ~9 I

, J! R" K: P2 o+ G
2 f) S8 s6 w3 U5 \如果online,节点不全的话,offline的机器上面,执行
1 o* O; l6 ]& }[root@slave2 ~]# crm node online  ; o& ]- R7 y1 {1 V' w
9 A5 ?4 K3 |7 I- Z+ d' H4 `
& m7 O! D1 k& e" G, t6 T% _
, h0 P( A+ f. n* H) l# f

6 r, u4 h, z. D/ T* `4 J! |( t* W  o% c
四,测试
% c  ?# K! i# s) {8 N; s查看复制打印?& I7 u6 `: J1 k/ k5 g3 L+ S% x
[tank@localhost ~]$ mysql -u test -p -h 192.168.10.231 //如果实际连接masters的话    |( K9 O( L# A7 ]
[root@masters ~]# crm node standby //masters机器,将masters挂起  + Q% j$ w1 t4 h) X; v) q
[tank@localhost ~]$ mysql -u test -p -h 192.168.10.231 //如果成功连接到slave2的话,说明测试成功  
: D2 N) X5 `( F$ i" j* C# V" K有三台mysql,一主二从,如果主服务器down机了,二台从服务器,能不能自动转成一主一从,并保持数据的完成性呢,MHA可以帮我们解决这问题。
5 e  ?- s. f! ]2 t/ v8 `# Z* {# X- \5 W' U8 ^3 n. \* U
/ w% Q0 {9 }  @/ W+ n) c

; D3 h  U' P/ E/ @; i, w' K. M# A" S4 j4 z$ l: u
& y7 c: W; O- i" T/ w9 M
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:22 , Processed in 0.062211 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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