|
|
1.环境说明
+ n* Q4 _( a2 t0 ?) O3 Y 六台服务器,两台作为director,四台作为两组real server。/ v: s- q& e5 ?& b2 G
. L* z9 B& d& H8 sdirector为
/ A: _, o3 U" r' t; m/ H 10.8.80.110(keepalived master)和10.8.80.111(keepalived backup),# ]* w* q8 d# L4 D
# `% `+ o" K9 j; E8 G/ z/ W. K! i, \
vip:10.8.80.112。
& M9 H8 ~3 K5 U) k两组real server
% \5 B2 O/ e f7 g9 f; t- ^" p 为10.8.80.101:80,10.8.80.102:80和10.8.80.105:8889,10.8.80.106:8889) _: `) Z4 }. Z F6 T9 {
% Z7 y% ^: q* {- Y- {7 F9 U& P# o
2.安装和配置LVS
* w+ `+ w2 I# J9 T/ ^ 两台director上安装ipvadm: D6 i f, t3 T; o6 y
7 E) `- s5 K9 r Gyum install -y ipvsadm
9 ?- k3 E7 [2 A7 N* [% T 两台director上编写DR模式脚本
u% g; ]# b C- V4 G
! [ N: ^9 X5 w2 [9 ?, G9 yvim /usr/local/sbin/lvs_dr.sh
9 \ M2 w4 X9 V3 q8 D 添加内容
* k o8 n! \. i, f0 c& |0 v; c. Y3 I/ F" R
#! /bin/bash6 [: s+ ]- f8 Q" h* f8 E& T
echo 1 > /proc/sys/net/ipv4/ip_forward
" `7 z7 ~- D$ W7 u, yipv=/sbin/ipvsadm
+ f2 G; m% ~; T( s1 x% \8 E' P" Dvip=10.8.80.112# \. E5 {! |% N% O
rs1=10.8.80.1017 j& E, f8 f# ?) l" g- T
rs2=10.8.80.102
( E# t+ ?7 f- ?% c6 K y4 w: x/ Grs3=10.8.80.105; k! S6 g0 j- Q$ A# L' }3 Q
rs4=10.8.80.106
6 f$ Y0 X$ G. \3 x! ]) F# B$ipv -C6 {( m% A* @! J
$ipv -A -t $vip:80 -s rr 0 f0 ~( F& C) a0 r# V1 n
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1* e& L* i0 W- `! i; }9 P' u
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
6 A1 _ _/ b$ U$ipv -A -t $vip:8889 -s rr
/ e# } U7 C- p9 N4 H7 d' g$ipv -a -t $vip:8889 -r $rs3:8889 -g -w 1
( r8 X4 a5 y: K% l" ~$ipv -a -t $vip:8889 -r $rs4:8889 -g -w 1/ d- o0 I4 k* ]3 l
然后在四台real server上编写脚本# T/ V& A4 i# a( ^: G
+ m# h$ J8 `2 [9 x* f9 m
vim /usr/local/sbin/lvs_dr_rs.sh1 _5 y. P0 @, d. O6 k, A q& _- \
添加内容
% k: E0 K6 h7 w# O6 A; j5 s& L0 r( T5 Y* Y$ @8 s2 b$ h, k
#! /bin/bash
5 A9 r8 w" l; S- y' D& @$ Z ivip=10.8.80.112
. g, Z( T3 c; @ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
+ M7 t; U: }0 c5 x! b. c/ x4 |route add -host $vip lo:0
U' X' G* x3 Q" Mecho "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore3 q( C/ V8 k$ Z' a5 M7 R" {
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce$ D; u6 ]; Y! U: A
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
f# \1 p$ q7 w( q7 G7 vecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce
& M d1 z: s0 c% u, T3.安装Keepalived
" \! e- u$ ~0 P" V5 |7 j4 a3 f 两台director上执行$ ~- h+ X1 q; U1 S1 R
: {& S2 q( \ G! ^( ~+ h3 Z7 N* E/ T
yum install -y keepalived
0 a0 F8 C0 V2 R: l8 t& s( G 两台director上编辑配置文件
+ T: N6 w. }7 M3 a( G( U' m; U) |2 ~- w( W2 h' V
vim /etc/keepalived/keepalived.conf1 @0 N7 M7 O; |# k
加入配置
! P1 u J# V6 V( x7 Q$ p! g# a, l- J
vrrp_instance VI_1 {( y7 [" O' z% W3 A
state MASTER //备上为BACKUP
6 m" \2 D# I1 Q# ` @) G# t interface eno16777984 //备的网卡名! h) q$ P( B7 ^+ ^/ M4 a* p
#lvs_sync_daemon_inteface eno16777984$ K4 T: N: ]# v
virtual_router_id 51
* i# }' Q7 }! p' `7 ] priority 100 //备为90; r$ k1 ^6 x# G* U0 z; r
advert_int 1
4 A8 f7 B8 [- c1 L1 Z5 S7 X authentication {
7 v& _" S2 v3 X auth_type PASS
' v* r* O+ N+ `0 a: a auth_pass 1111/ Y; J( L7 o9 U9 d$ e( |! W
}
9 G; }- H+ B! ^ Y6 D virtual_ipaddress {9 @- p: F. y( N( M9 r
10.8.80.112) {7 D" L# Z" G/ P
}/ [4 ^/ Q& Z5 \7 U* M2 ?# J# F/ I
}
- c" A( f- Y4 z: I8 h, E* c lvirtual_server 10.8.80.112 80 {, o- [3 p" B% e$ o" ~1 y
delay_loop 30 ?" J9 m! }* s5 t
lb_algo wlc
- D7 ^/ f8 D9 T6 H% A' u lb_kind DR
7 C* ^6 v- U& Y7 z% U9 U; n. {! I, Q nat_mask 255.255.255.0* v1 D5 ?. P7 z! u5 s% H8 Q* ~: B
persistence_timeout 600 `$ P) \: h9 ]6 G
protocol TCP9 `% ?5 \! U5 J
real_server 10.8.80.101 80 {% V+ C) I$ m& O4 m8 T
weight 100$ F R7 {1 D9 Z. s9 U# ]
TCP_CHECK {- `. y! m2 P/ c( x5 a4 S0 h7 N
connect_timeout 10
3 a# V: }: P" O1 E! x nb_get_retry 3( U$ X; Y: k, z; q6 r' e. K7 ~" m
delay_before_retry 3- J# } a7 m" r4 P0 i
connect_port 80
* O* y! b. B' ]2 R) ]8 J& Y$ z }0 V8 X- a5 z. d
}: K, Z- \% i: @0 l# p
real_server 10.8.80.102 80 {
" p2 f$ L" o( R; j weight 100
% Z6 h; c N) z% L6 b1 n TCP_CHECK {! _* X; q& W2 {6 ^# ]& C) }
connect_timeout 10- N, [" e k& L3 v* n- n* z
nb_get_retry 3
. K- P* ~5 D+ [4 E delay_before_retry 3
?; l; d" y4 V, ?, b& m, `, R connect_port 80% w( H" K$ y9 Y7 z B0 L
}5 R k: _/ h5 R& b; Y8 t+ f M% E
}6 N" y8 o& @" p, _
}
3 _( _* b0 v b3 z! c( `3 hvirtual_server 10.8.80.112 8889 {4 B. T8 w8 Q1 {! c1 f. x# z" l" j+ O
delay_loop 38 q- l( }0 L/ C$ B
lb_algo wlc
- c/ s6 r4 b+ {" E- i lb_kind DR
" ?- ], h" Q2 D: ]8 n0 k nat_mask 255.255.255.00 f5 [0 K' x8 D
persistence_timeout 60+ d2 L0 k) m- H5 N7 H [. L
protocol TCP
4 C* e, J/ t5 O9 k' d8 [ real_server 10.8.80.105 8889 {
$ O' `& a" N" e2 `2 K7 ^! M3 w weight 100
& Y3 y2 B( o" p+ j TCP_CHECK {" }3 _: n5 D! j! I% T0 E& O, t- g0 _
connect_timeout 10" ^2 S3 J' h- c: a H/ S
nb_get_retry 3( V& \# c3 a# `* f2 z
delay_before_retry 3% O; `7 u8 W9 m8 Q' F% _
connect_port 8889
2 v1 t3 ]' c8 J a2 F }
" \; g! I/ O4 Y# S. j }( {/ J& [% S2 q$ q$ | t0 a6 j3 ?2 Y
real_server 10.8.80.106 8889 {
' o5 l- C, K% G8 ?9 J5 P2 z- { weight 100
$ L$ F4 Z) K* i0 X, p" L" ~6 p TCP_CHECK {: ^/ f2 H8 t8 T$ R$ {* @
connect_timeout 10' h Q2 q* o {$ E1 m0 X4 v( m4 p
nb_get_retry 3
# g1 P" X/ [: k7 f* o" ? delay_before_retry 3
1 N+ w4 ~) f" {4 @; O; \ connect_port 88892 B! ^3 j" p0 l4 N: g
}
; c, v/ E* A: r- L. A }' V& Y, Z( t* N' r1 r* f
}
% F& z' ?" w+ A, D* n- g4.启动LVS+Keepalived3 F; w4 P7 d! o Y* v* P% V; {
两台director执行脚本
" [, |. ?) F: l0 v' Z; i* n1' ], c- K8 o, R
sh /usr/local/sbin/lvs_dr.sh
% d' w# F4 c6 b5 O( Q6 ? 两台director启动keepalived
3 u* O! t$ C2 u: |3 N1
6 W: q, s* k! v) V9 lsystemctl start keepalived1 n6 Q0 R. b( A0 l
四台real server执行脚本
9 O2 C* B3 J, j6 m% O12 t( p- L Q: K T
sh /usr/local/sbin/lvs_dr_rs.sh0 @ y" c% l; u" w5 Y6 s) I- G
LVS+Keepalived部署完成
$ |" m G* J% M. g4 |# k% | |
|