- 积分
- 16840
在线时间 小时
最后登录1970-1-1
|

楼主 |
发表于 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
|
|