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

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