|
|
1.环境说明9 Y& Q% d" p+ y; g: f$ C+ L
六台服务器,两台作为director,四台作为两组real server。3 p, _0 Y; q! T4 S
1 C: y' S; j7 Ddirector为
% [* C5 f! X! d! L 10.8.80.110(keepalived master)和10.8.80.111(keepalived backup),5 o/ p/ G: D2 X& i
( t1 i2 ^& c3 C' Z' d
vip:10.8.80.112。, ?& J4 z, S) o w
两组real server
& A! V# ^; O2 d, @* X 为10.8.80.101:80,10.8.80.102:80和10.8.80.105:8889,10.8.80.106:8889# W3 b% s8 g8 w) F7 R$ l4 |2 v% a
9 z( e6 ^. M$ \2 u# d
2.安装和配置LVS
* O: u; V5 R2 \2 ] S% f" A 两台director上安装ipvadm* r1 e8 M* E! R( Y0 E9 ]
) N' I$ n/ A$ }% `9 C6 N3 t& Xyum install -y ipvsadm0 y/ r, |& I. H- z
两台director上编写DR模式脚本
$ q$ c1 c4 Z9 R9 b& c' }' H2 z/ w" B( ^
vim /usr/local/sbin/lvs_dr.sh5 Y. n/ E# ?, G* _3 X" B
添加内容
8 f! o% Z- e2 G/ D# F* C7 G
8 M3 s( @: l! `8 x# D) A#! /bin/bash3 k& @5 L! J6 [. j. t4 c* V
echo 1 > /proc/sys/net/ipv4/ip_forward9 t) D* {/ b1 q* h' k
ipv=/sbin/ipvsadm
; _4 S; m; V/ c% ^. m5 u5 lvip=10.8.80.112
5 ?& V! C( |, A# F I+ xrs1=10.8.80.101: J" x% y3 L' l/ B9 N8 N& }: E
rs2=10.8.80.102
7 P# u4 L3 y5 s+ n5 x9 j3 ?: irs3=10.8.80.105
- T) G/ K% G: F1 C2 m3 ?4 h9 |9 Jrs4=10.8.80.106
1 S* q! t( i) ~# L) T( P, I$ipv -C9 b5 K$ o6 D! i" o6 }
$ipv -A -t $vip:80 -s rr
/ B& q. X) U( U2 `! x8 g$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
6 g0 N+ Z8 q+ h! R( A: K1 Z2 x$ipv -a -t $vip:80 -r $rs2:80 -g -w 1' }' h& l! [5 I* R' p9 x
$ipv -A -t $vip:8889 -s rr
! Y+ H6 [: @8 ]8 f9 e' l8 ^$ipv -a -t $vip:8889 -r $rs3:8889 -g -w 1# X F$ P/ `0 ^8 }
$ipv -a -t $vip:8889 -r $rs4:8889 -g -w 15 k& q% k; s, v
然后在四台real server上编写脚本
" c5 K+ }7 I x+ V3 z$ v8 q0 F6 o7 [% V6 m
vim /usr/local/sbin/lvs_dr_rs.sh! ]: w9 K! X, E) J- e
添加内容+ _5 _: r G7 n4 N2 u! n
7 M. q) ^# X& t0 B) S
#! /bin/bash
m) n+ d/ I% ^" p. jvip=10.8.80.112* ~: {) i% X7 s( G
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up 9 O- l/ ?# I; D \. P, t& M4 P
route add -host $vip lo:0
3 |. V% _, w3 [- _echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
) o( w" \0 k8 iecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
$ C; \) u, H( ~: a3 Yecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
3 ^ q5 ~9 l/ B0 Qecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce, [# _8 B7 J' K! d3 Q
3.安装Keepalived! ~) R! n" ~4 A9 G# o4 a
两台director上执行1 z. g7 ]- m. K
& P% Q' p" U5 t/ g/ [
yum install -y keepalived8 u( f- C& d( ~: W
两台director上编辑配置文件7 k. `, H+ R, U, m- {! P4 o
1 U4 a C* U" }& Y4 o$ U
vim /etc/keepalived/keepalived.conf. {! C0 c1 L, |1 {# g& `: W
加入配置
6 ]4 \9 `$ K! s. K; ~/ ]8 d( A' N& y E: L/ v
vrrp_instance VI_1 {
5 _; x3 G) a8 y% X5 Q- z state MASTER //备上为BACKUP$ @, F( J5 F3 [4 K
interface eno16777984 //备的网卡名9 M2 O' D( m( C1 g
#lvs_sync_daemon_inteface eno16777984
7 Z! x/ c# i8 T; I virtual_router_id 51
. ?9 b. L% S- P4 W, F" P# G priority 100 //备为90
/ w2 \) R) t ` Y2 B advert_int 1* p! V, f% x" _3 R
authentication {9 p# T, I; W n; A! y& B C
auth_type PASS
( F) N8 w. k9 S( J! V$ {5 K auth_pass 1111
* Q% w0 x- O f* h: {4 n6 ^ }- o: f6 X# y- ^% p0 }7 ?
virtual_ipaddress {# c, T5 H. n4 p# K0 U
10.8.80.1129 E# q4 e0 G1 q; G9 s
}, p I2 W0 T/ N
}
: O1 M& e' R3 f! n( @% g( [( Lvirtual_server 10.8.80.112 80 {. T3 N, w% m# m: S3 P
delay_loop 3
7 V' U& v0 [8 q6 d lb_algo wlc4 |, |6 v V: T/ [9 l! w2 }
lb_kind DR
: h& X( ?) ]. g+ ]/ U nat_mask 255.255.255.00 U8 H# D. h( ~7 H
persistence_timeout 60
* O9 H8 d4 [+ L7 ^0 k protocol TCP* F5 f. j! f% q+ U9 d7 P
real_server 10.8.80.101 80 {
. k9 D$ e2 S% o5 B- d' V weight 100
, B, D' t" t9 J2 N3 S5 g/ ]& ~ TCP_CHECK {
" d/ T+ W& k) c! t* P! B# q0 E connect_timeout 10- a3 D; a8 n# f5 u6 y
nb_get_retry 36 a( q' p2 I. W) J5 m m4 t
delay_before_retry 3
+ k8 T* p: {7 `' f connect_port 80! ?* l/ P' R q# D$ D9 w4 V8 f
}
' U! M# z+ K: J }+ T' ?) O$ A9 X& M" ^: q0 f3 I. n
real_server 10.8.80.102 80 {$ }7 y" \/ Q" D$ @
weight 100( y2 S. \! \8 Z5 t8 ^3 v
TCP_CHECK {5 U/ A- V2 d2 S( h1 }
connect_timeout 10" J: K7 u! L( W) c% \( g! ?
nb_get_retry 3: ?4 t- G5 a0 t, ?2 w' @% A
delay_before_retry 3
! P0 G5 Y; G7 J' ?+ z connect_port 80, P6 Q9 T7 u" c8 _0 f4 S- Y; ]
}" Y( D0 c% |. Y. Z1 s$ M
}
7 D& ~$ ?5 K7 }1 E$ K: D! b7 x}
" {/ b' ?3 x7 N% D. y1 ?virtual_server 10.8.80.112 8889 {9 p2 I# v3 f2 U( e* N8 p- S3 k$ y7 U
delay_loop 3
3 [/ Y1 a9 U( |, W- b# h lb_algo wlc
) O3 ?4 O$ B# P5 X: k2 } lb_kind DR! _7 W, i9 l' h, W9 k% X! ]
nat_mask 255.255.255.0' ~3 a4 }. p- b
persistence_timeout 60$ h5 Z# R, N! f% e% X
protocol TCP _3 D: r9 N# V
real_server 10.8.80.105 8889 {9 H/ z+ o" i8 U" h- Z
weight 100
- [8 J1 B5 H+ w. Y1 ?9 `: X, [ TCP_CHECK {
; k% g# q- r3 ?+ s# j+ ^ connect_timeout 10
* Q2 a8 j" \1 j" T) T nb_get_retry 3
% F$ \. n( Q3 e5 ^ delay_before_retry 3: \4 l: l, m' w) A4 u8 x
connect_port 8889% E; N9 l7 B! {) K4 }7 G+ v4 }& o
}( K9 J/ a& m1 i
}( ^! q! q+ G% m) U; l
real_server 10.8.80.106 8889 {
0 X8 l% R6 ~% U# ^, O weight 100
; c9 `' {9 f$ X4 c4 I TCP_CHECK {
o% i/ n8 X4 ^1 Z& C* A) t' Z connect_timeout 10
1 Z' ~& [# | M% @) h& S( f& ~2 A nb_get_retry 3
1 C8 F+ }( G' r. r# z; M; h) W- d delay_before_retry 3
! G2 X: ?( B4 j; L) O/ f connect_port 8889
; D( S- O- o4 D }- Z" R. X4 |/ b$ V% F
}- E. c2 x1 C3 E
}
8 k7 n$ C% ?4 S" Y3 }/ B4 H4.启动LVS+Keepalived" {9 L4 R: A6 r2 ?
两台director执行脚本
! n9 ~6 T8 s9 K$ _. k6 i1
4 E: B. G0 Q8 L t6 s+ Y, f: msh /usr/local/sbin/lvs_dr.sh5 N& u6 y8 q% U }" `; Z }0 h
两台director启动keepalived
# u! g* S' y: m9 k) o3 q1' p6 c+ M$ C' i; v
systemctl start keepalived( k! s0 ]% t2 C8 R6 S: w8 x- {' a
四台real server执行脚本
2 K8 b" E* J6 e2 Y16 s) }1 \4 ]# [# c# }* \
sh /usr/local/sbin/lvs_dr_rs.sh0 c& m( s8 o8 h) g2 j$ ?
LVS+Keepalived部署完成1 }9 S) }$ \4 _* h5 s j
|
|