|
|
1.环境说明
6 p, W$ w5 X" I' P 六台服务器,两台作为director,四台作为两组real server。) _" p6 y: u) c7 y/ l3 z1 s! ~
0 ~6 M7 U, j% _4 o: E9 D$ [7 Kdirector为
9 l; q; a* z: ^5 h! Y! b+ t 10.8.80.110(keepalived master)和10.8.80.111(keepalived backup),
/ R" Y: W5 B1 u/ g1 @$ g0 e5 v' ~; Z$ S# t
vip:10.8.80.112。
8 L4 w! g% {. L4 }两组real server
" e3 g8 k0 r2 h: }9 n& I 为10.8.80.101:80,10.8.80.102:80和10.8.80.105:8889,10.8.80.106:8889
" g% {6 t5 a) I; `+ \+ d
8 n8 p/ W( K# V$ @2.安装和配置LVS; z+ q$ u, |7 V+ Z2 g
两台director上安装ipvadm
. C* y7 V$ j) ~
( A9 g! Q( T/ t- A8 Qyum install -y ipvsadm& s5 `' d. @: h5 m
两台director上编写DR模式脚本
2 E' z, C, f K. t7 q5 n
- U6 Q& v g" t( {3 o! O, G5 T; X4 Cvim /usr/local/sbin/lvs_dr.sh; v! [1 ]. R. ~
添加内容
; }% |7 d3 p- p( m. ~8 A3 R- ~8 z8 f% h; l4 @1 Q: q l! ?' M/ y8 p7 U
#! /bin/bash
1 V% S, D5 f" Pecho 1 > /proc/sys/net/ipv4/ip_forward
6 e4 |" N, l8 _ |ipv=/sbin/ipvsadm3 `( x, W8 @, S$ ^: \7 X
vip=10.8.80.112 V ]2 a8 ]7 w; U# r- r; y, F4 b
rs1=10.8.80.101
C: T1 ?* c! }; M% Frs2=10.8.80.102. L* U$ K9 |1 T, k& t; Q
rs3=10.8.80.105* f& a- F1 R% |/ D* o3 m
rs4=10.8.80.106% u: O8 x& z7 |" w S+ m) N8 `3 U0 ~
$ipv -C
9 H' X) k$ z' i/ E$ipv -A -t $vip:80 -s rr
" S$ P; R; E( B0 z- V3 I6 d7 H3 W$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
( P* \; ~4 E, a( R: _# ~$ipv -a -t $vip:80 -r $rs2:80 -g -w 10 l1 Z/ W! \$ H, M* v
$ipv -A -t $vip:8889 -s rr
p! i3 @! V" Y/ S5 q- _! [! G. h" A$ipv -a -t $vip:8889 -r $rs3:8889 -g -w 1& Y1 @) k; i) L% n
$ipv -a -t $vip:8889 -r $rs4:8889 -g -w 1
% \. `5 x. v, o6 A, q/ K$ C# r 然后在四台real server上编写脚本
/ b" @4 B# U& `! ], F' h5 \% {2 Y) w" n9 m4 @
vim /usr/local/sbin/lvs_dr_rs.sh4 S0 P r4 k- D5 w
添加内容1 L. ^- G- D( Q9 J9 t4 W7 x
; L8 Z0 M3 u: Q' R2 `9 J#! /bin/bash H+ D- d9 Y6 X1 ^$ U8 [0 P' X
vip=10.8.80.112
. V4 J9 O* U6 v3 Vifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up ) F: R& ?8 \0 F, V- _1 M
route add -host $vip lo:0# A8 f, f, R* ?) l' ` C
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore4 {. w& s" E0 {+ v% a
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce7 L" E' o, g9 [! w. J$ v
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
! Z7 a/ H5 K3 n8 [* h" I9 ~echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
( V; z9 T3 B6 I$ Z. K5 b! i6 y3.安装Keepalived* ~' G; q3 |, U s
两台director上执行
, z% p! y* D) O' P7 j2 ~
2 b. G! H; |4 h) ~9 Byum install -y keepalived
% j. Q0 P# U" d! k l 两台director上编辑配置文件
% S5 A! I. `& U# P) ^! M
# h; ?9 Q' ?9 v* k1 k% ^vim /etc/keepalived/keepalived.conf6 K* n( _9 M; V$ n9 x
加入配置
- R' h2 M- u0 r$ Z4 l* p6 N8 J. s# g) b* |5 x4 }' a+ S# U* p
vrrp_instance VI_1 {
$ D* o# h' ^: H5 | b: ~- U state MASTER //备上为BACKUP: c% f! g4 n- ^0 @
interface eno16777984 //备的网卡名
' O2 _+ O1 w7 `, Y4 O8 \ #lvs_sync_daemon_inteface eno16777984+ ]3 i% O: ]1 j: a" }" K
virtual_router_id 51- P7 g' \. }( F' i8 d; B
priority 100 //备为909 i! m, ~3 U' o0 B+ X) [/ H' @
advert_int 1! E5 e- ^1 F0 I& g) b
authentication {
/ R- Z, r2 j! z$ c3 f4 X. n auth_type PASS
: w$ H) ~6 g/ s/ I6 b8 y auth_pass 1111+ T( y+ E8 D( _' F3 k0 ^0 {
}
% U% A; X9 @6 j4 E5 j6 l virtual_ipaddress {; A9 Z! X# E7 M" Y. j
10.8.80.1120 o# K7 ~' m6 A7 E* I' A
}
6 b# m" G; D/ P}
1 n8 {2 v; s. n* u4 I" {virtual_server 10.8.80.112 80 {' o; h4 b' o2 y, ]5 g' x6 Q) s" w3 z
delay_loop 3/ F5 t" Z4 ?1 E+ S9 u; O
lb_algo wlc
; n0 p6 `8 v* x( @9 |$ i lb_kind DR; j- v {6 ^: t' I* o( g, w6 ?
nat_mask 255.255.255.0$ y' R( e5 Q9 i/ z, ?* k/ o
persistence_timeout 608 V' \' {2 v, d0 B) G
protocol TCP
; \/ w2 ^1 `' z& a real_server 10.8.80.101 80 {" y, O9 `" f J- f
weight 1000 \, t: y6 W8 @. u; \1 G" _
TCP_CHECK {( S9 j: u6 s' P6 x* r) `1 `% F( b
connect_timeout 10& z! ~) D1 w, ^/ O. M
nb_get_retry 36 s5 |4 y$ Q: N: @3 g
delay_before_retry 3
# l6 c. _! ~! {8 t% ?3 Q8 l/ a connect_port 80& g, ?2 c. O' y# U% X' f
}
5 T) X- C @( g4 u }* I4 r1 a, `5 I
real_server 10.8.80.102 80 {
! M+ U: F D0 B; N- {5 t weight 100
! H3 E7 k6 Q C6 _+ ~+ p TCP_CHECK {
7 g3 C4 K5 ^2 `3 e% a( J4 { connect_timeout 10
8 w# d# J3 q& ? |+ i nb_get_retry 3
* p' H6 \; u6 h8 m/ ? delay_before_retry 3
; j# l- }+ t5 B connect_port 802 x2 V" B) o$ ^' M' x2 n7 L o
}! M3 T6 n% w- t
}
& h8 E! m# W- c! T" m. v1 O}0 ?8 R" Q1 Z0 S n, h$ O+ y4 ], X) A
virtual_server 10.8.80.112 8889 {
7 m& x, ^, P4 N9 T delay_loop 35 M# G$ P8 W& P! A6 l
lb_algo wlc
( ?. q# C4 Y/ a: M* D5 m lb_kind DR9 e$ H- k3 O& l
nat_mask 255.255.255.0, d' E8 S$ O& x, A# t0 C
persistence_timeout 60) }4 a) M2 Z, w0 T0 w8 h( P
protocol TCP# u; L+ G- E1 O3 P7 o, b% @
real_server 10.8.80.105 8889 {- x: g/ R& P9 C, d' H$ }& `9 w
weight 1000 W u4 D$ q5 P
TCP_CHECK {9 i! u7 m3 h: j; w) J
connect_timeout 10$ I: ]+ E9 g0 h
nb_get_retry 3
) P# C1 X/ l/ w6 k7 [0 q delay_before_retry 3
% p4 _- Z/ M5 _6 G9 k; f connect_port 8889
; N3 r4 j+ O5 ]5 V" R }
5 d, u* { L3 Z4 w. A }0 @1 d0 \0 X% i
real_server 10.8.80.106 8889 {& P0 C5 \$ r' O( m
weight 100
( B; ?! f$ G( J TCP_CHECK {1 ^7 S S' r" U' o& F3 S* {
connect_timeout 10
- O6 v. J+ c& o: j2 M nb_get_retry 3
( {, n) @3 G+ i2 y delay_before_retry 3
/ `* {) x: I: r# J' S- U connect_port 8889
. X- y9 ]2 {0 ?+ n }
6 h" Y7 t3 i+ D }
2 Q* O( F: C$ I v5 }% e}
! L& O# H. C( @; V8 P8 R. J3 e4.启动LVS+Keepalived
8 c; f# v) \7 E0 k( \ 两台director执行脚本8 F" t2 n6 }9 l( f' }
1( Y! z; R; Y0 N2 j# i; C8 t: J; R
sh /usr/local/sbin/lvs_dr.sh
- }( H) p: `" I0 ] 两台director启动keepalived
0 Z+ |4 u: W* T# L1
2 U: W, L5 f# Csystemctl start keepalived
+ g0 C( l. I' K: E/ k$ Z 四台real server执行脚本& T, Y" N5 o. ?' @5 B9 |
1
# z' u! j. w# q7 Qsh /usr/local/sbin/lvs_dr_rs.sh
& w5 Z# V! J9 G0 L: L8 s3 t LVS+Keepalived部署完成
7 l5 W& O" z! A A4 r. k |
|