易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4038|回复: 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实现高可用了?
  K) p: y& E8 y% s! p) T0 w" {对度娘的搜索算法,以及竞价排名,我只想说我去年买了个表。
3 ?. v$ v# c9 `" {2 _6 O& q: I6 _+ j一,mysql replication主从配置8 e# C2 f. |4 u. n8 C# w2 F
请参考:mysql replication 主从(master-slave)同步
+ ?9 W' _, {1 \4 o# G' c二,corosync pacemaker安装配置7 \, J% s/ P* c
请参考:corosync pacemaker nginx 高可用 安装配置) }6 N. T1 [4 J4 E; d) e
上面二篇博客的/etc/hosts是定义的不一样的,以mysql replication为准,也就是masters,slave2。% Y$ o4 M, e6 P
在这里要注意,改过hosts的名称后,masters节点,要重新生成auth文件的。/ u3 X9 k* t0 p; E( p2 u2 J

1 ~& x- t! B. S& T, X9 J8 \[root@masters corosync]# corosync-keygen  & [$ W0 g, F! j& G8 _' p
[root@masters corosync]# scp /etc/corosync/authkey root@slave2:/etc/corosync/ //如果有很多节点都要copy  
) g/ d2 U# J, z( ~- {
9 }8 f) D8 ^; P各节点重启corosync。
8 }/ c3 k7 v  I* ]4 Y9 R. F三,masters节点,配置mysql crmsh
0 C1 H2 S( y# \1,配置mysql crmsh$ D6 C4 _9 t% N( a% Z) M$ ]
[root@masters tank]# crm  ! J8 F4 m; q2 M5 r
crm(live)# configure  
/ ~8 C* S4 J7 d: V# ^crm(live)configure#  - p5 ?. _$ n) l1 k
crm(live)configure# property stonith-enabled=false  
4 v: {* K$ B( _, z9 y5 ?$ L; M4 D: Vcrm(live)configure# property no-quorum-policy=ignore  
! l5 O! h* u. f1 C0 U$ N% \+ @4 Gcrm(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' J& a* O2 ^  K8 ]: D
crm(live)configure# colocation mysql_col inf: mysqlserver mysqlip  # z# T% O8 ^# u4 r/ [! f
crm(live)configure# order mysql_after_ip mandatory: mysqlip mysqlserver  
2 N- E3 c9 z7 S2 e! e; I' R6 Ecrm(live)configure# verify  
+ t  E; p8 Y( P) B; {% {6 Y! ^4 icrm(live)configure# commit  + n2 ?6 I2 a" I4 i  C6 o4 s% A
crm(live)configure# show  
. A6 s2 W1 t: ]. a9 M9 e5 [9 X8 t1 r0 O/ J) E% |

6 K3 u$ g6 n, m9 K在这里发现一个问题,在网上看了一些资料,关于monitor后时间配置,有几种版本
; b; ?) ?0 I5 @& zmonitor interval=30 timeout=203 i+ c% }; ^9 K$ g) `/ W
monitor interval="30" timeout="20"" t  G% k/ {& S: W( B6 ~
monitor interval="30s" timeout="20s"" A( i% f! u9 t4 Z- z
我没有验证这些写法的正确性,但是monitor interval=30s timeout=20s,这种写法肯定是正确的,我用的系统是centos 6.5 64位,并且在帮助文档中也是这种写法。
: w: z2 B* d$ P, ]# f; o5 y, q
2 y% o" {. v4 y- R
  x3 l: w+ L" s$ ]% F* X  f这是配置完成后的,通过show查看
6 A' i0 T2 ?& o) E
" M6 V6 X# n% z1 j/ y; v9 l
$ v' y+ P+ P! U( }2,检测mysql各节点状态
% g4 ^6 M5 _) C: Z4 w6 L3 U* ~) {2 b7 a2 y: `& S

/ m8 I/ M# [- W. G/ l[root@masters tank]# crm status  2 e% O" k# V( p, I
Last updated: Thu Apr 23 02:36:54 2015  
+ J7 `$ }  H3 z9 w/ q/ O6 zLast change: Thu Apr 23 02:36:06 2015  2 x; z5 \* y- I0 C( M
Stack: classic openais (with plugin)  % o. C2 V4 m/ ], k7 C. `6 s+ I$ Y
Current DC: slave2 - partition with quorum  
- X5 V& `5 t3 o/ j+ F) OVersion: 1.1.11-97629de  % `& I$ M# r8 }
5 Nodes configured, 2 expected votes  $ |' k+ G9 q! D# ?
3 Resources configured  
, ~/ D7 i0 z& T) t1 j- |  + l4 Q) H4 x" S8 b) i7 u. L
Online: [ masters slave2 ]  //二节点都要在线  / ?- z! f- {6 w3 C8 Y* n
OFFLINE: [ localhost.localdomain node1 node2 ]  % P. r  |! J; o: o$ q2 {2 G
  
$ B1 p: O+ ?" U! F$ Z webip (ocf::heartbeat:IPaddr): Started masters  ! b# O3 N- z" T: |9 n! a( U8 |
nginx_res (lsb:nginx): Started masters  
4 e; p' g; ?8 ]/ r; g8 n mysqlip (ocf::heartbeat:IPaddr): Started slave2  4 y- T, _/ e2 }5 r" u" d/ C: [2 u: d' |
mysqlserver (lsb:mysqld): Started slave2  # O) U: y( f9 a+ P' s

$ @/ k/ W# z  _& \. X" ]2 F! B3 s6 J, U: o2 Q
1 M) v* c% j  o* [0 H
) Z) J! E- s$ m
  a) m0 O, a/ u/ I. O, K3 [
如果online,节点不全的话,offline的机器上面,执行$ F' V: m; H7 B
[root@slave2 ~]# crm node online  
5 a; i9 v. N4 \5 Q* O
6 h# O' c/ N7 n. g- j' c" r3 T+ X2 U1 O8 j3 F# S( t: b
+ f8 J' w- H) b2 h( `
: S! o* m2 @5 O
. L) y& \. P0 T% V
四,测试
: Q* e* b; A8 r9 A" R查看复制打印?
9 B5 N" H6 e+ B* t! L9 q5 D[tank@localhost ~]$ mysql -u test -p -h 192.168.10.231 //如果实际连接masters的话  8 w: S7 p, ^! x' L
[root@masters ~]# crm node standby //masters机器,将masters挂起  ' _4 C+ j, y9 K0 R0 j  a5 w, \' V' f
[tank@localhost ~]$ mysql -u test -p -h 192.168.10.231 //如果成功连接到slave2的话,说明测试成功  $ N. f; j9 k  p* r8 H
有三台mysql,一主二从,如果主服务器down机了,二台从服务器,能不能自动转成一主一从,并保持数据的完成性呢,MHA可以帮我们解决这问题。9 P$ N9 z7 X1 b0 E0 f. M, T9 x) m
. `: H8 w* w8 K. f, r6 H0 K2 W) G
; z0 [1 e& t& `1 ~
: U: o5 Q' D8 W) Z* ]  y; G

2 k) B6 o7 q, R3 F8 s. o6 P9 D5 K

" m4 x4 d, C, I1 G  r4 [/ }' s3 w
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:26 , Processed in 0.076915 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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