實驗:LVS-DR模型實現

16

網絡拓撲

實驗lvs-dr模式

VS服務器,一個接口,兩個IP

DIP要求和RS在同一個網段中

VIP是公有地址

 

在生產中,VIP是公網地址

在網絡環境中,VIP的子網掩碼任意,只有一它臺主機在獨立的網段中,所以子網掩碼任意

 

路由器上有兩個接口,一個和VIP在一個網段,通過這個地址連接到VIP上,一個和私網的地址進行通訊的

 

RS的地址和DIP和是私網地址,不需要互聯網可以訪問

實現了在同一個物理絡但邏輯上是兩個不同的網段

只有路由器是兩塊網卡,其他都是一塊網卡

 

主機:5臺

??

路由器router

hostname router

exec bash

?

設置網絡

ens33

IPADDR=172.18.0.200

PREFIX=16

DNS1=223.5.5.5

DNS2=223.6.6.6

 

ens34

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

NAME=ens34

DEVICE=ens34

ONBOOT=yes

IPADDR=192.168.111.101

PREFIX=24

GATEWAY=192.168.111.1

 

 

ens34:1 定義網卡別名

[root@router /etc/sysconfig/network-scripts]# cp ifcfg-ens34 ./ifcfg-ens34:1

 

[root@router /etc/sysconfig/network-scripts]# vim ifcfg-ens34:1

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

DEVICE=ens34:1

ONBOOT=yes

IPADDR=10.0.0.200

PREFIX=8

 

[root@router ~]# systemctl restart network

 

CentOS6需要關閉NetworkManagre服務

 

 

客戶端

 

hostname client

[root@localhost ~]# exec bash

 

配置網絡

 

nmcli connection modify ens33 ipv4.addresses 172.18.0.123/16 ipv4.gateway 172.18.0.200 ipv4.method manual

 

nmcli connection up ens33

 

 

[root@client ~]# route -n

Kernel IP routing table

Destination ????Gateway ????????Genmask ????????Flags Metric Ref ???Use Iface

0.0.0.0 ????????172.18.0.200 ???0.0.0.0 ????????UG ???100 ???0 ???????0 ens33

172.18.0.0 ?????0.0.0.0 ????????255.255.0.0 ????U ????100 ???0 ???????0 ens33

 

 

測試網絡連通性

[root@client ~]# ping 10.0.0.200

PING 10.0.0.200 (10.0.0.200) 56(84) bytes of data.

64 bytes from 10.0.0.200: icmp_seq=1 ttl=64 time=1.08 ms

 

[root@client ~]# ping 192.168.111.101

PING 192.168.111.101 (192.168.111.101) 56(84) bytes of data.

64 bytes from 192.168.111.101: icmp_seq=1 ttl=64 time=0.609 ms

 

[root@client ~]# ping 172.18.0.200

PING 172.18.0.200 (172.18.0.200) 56(84) bytes of data.

64 bytes from 172.18.0.200: icmp_seq=1 ttl=64 time=0.356 ms

 

 

網絡配置完成!

 

 

RS1,RS2

 

RS1

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

NAME=ens34

DEVICE=ens34

ONBOOT=yes

IPADDR=192.168.111.102

PREFIX=24

GATEWAY=192.168.111.101

 

 

RS2

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

NAME=ens34

DEVICE=ens34

ONBOOT=yes

IPADDR=192.168.111.103

PREFIX=24

GATEWAY=192.168.111.101

 

 

ifconfig ens33 down

 

route -n

 

[root@RS1 ~]# route -n

Kernel IP routing table

Destination ????Gateway ????????Genmask ????????Flags Metric Ref ???Use Iface

0.0.0.0 ????????192.168.111.101 0.0.0.0 ????????UG ???100 ???0 ???????0 ens34

192.168.111.0 ??0.0.0.0 ????????255.255.255.0 ??U ????100 ???0 ???????0 ens34

 

[root@RS2 ~]# route -n

Kernel IP routing table

Destination ????Gateway ????????Genmask ????????Flags Metric Ref ???Use Iface

0.0.0.0 ????????192.168.111.101 0.0.0.0 ????????UG ???100 ???0 ???????0 ens34

192.168.111.0 ??0.0.0.0 ????????255.255.255.0 ??U ????100 ???0 ???????0 ens34

 

彼此可以ping通

 

[root@RS1 ~]# ping 172.18.0.123

PING 172.18.0.123 (172.18.0.123) 56(84) bytes of data.

64 bytes from 172.18.0.123: icmp_seq=1 ttl=63?time=2.25 ms

 

[root@RS2 ~]# ping 172.18.0.123

PING 172.18.0.123 (172.18.0.123) 56(84) bytes of data.

64 bytes from 172.18.0.123: icmp_seq=1 ttl=63?time=2.04 ms

 

 

 

注意:route機器需要啟用路由功能

[root@router ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward=1

 

生效

[root@router ~]# sysctl -p

 

 

配置VS

 

 

LVS機器

hostname LVS

exec bash

 

網絡配置

[root@LVS ~]# v34

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

NAME=ens34

DEVICE=ens34

ONBOOT=yes

IPADDR=192.168.111.100

PREFIX=24

GATEWAY=192.168.111.1(實驗時,網關指向路由器的網關),這里指向的是本機IP地址的網關,實驗過程中也是可以的,但還是建議把這個網關指向路由器的私有地址的接口上

 

66:00分鐘的時候提到網關的問題:網關先配上

 

VS服務器可以不配置網關,請求包到達VS后,不通過VS返回

注意:配上網關,先配上,配的網關是路由器的網關

 

 

LV

[root@LVS ~]# cat lvs_dr_vs.sh

#!/bin/bash

vip=’10.0.0.100′

iface=’ens34:1′

mask=’255.0.0.0’#子網掩碼是什么都可以

port=’80’

rs1=’192.168.111.102′

rs2=’192.168.111.103′

scheduler=’wrr’

type=’-g’

rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

 

case $1 in

start)

ifconfig $iface $vip netmask $mask #broadcast $vip up

iptables -F

 

ipvsadm -A -t ${vip}:${port} -s $scheduler

ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1

ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1

echo “The VS Server is Ready!”

;;

stop)

ipvsadm -C

ifconfig $iface down

echo “The VS Server is Canceled!”

;;

*)

echo “Usage: $(basename $0) start|stop”

exit 1

;;

esac

[root@LVS ~]#

 

 

[root@LVS ~]# bash lvs_dr_vs.sh start

?

[root@LVS ~]# ip a

3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:49:43:34 brd ff:ff:ff:ff:ff:ff

?inet 192.168.111.100/24?brd 192.168.111.255 scope global ens34

valid_lft forever preferred_lft forever

inet 10.0.0.100/8?brd 10.255.255.255 scope global ens34:1

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fe49:4334/64 scope link

valid_lft forever preferred_lft forever

?

?

[root@LVS ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port ??????????Forward Weight ActiveConn InActConn

TCP ?10.0.0.100:80 wrr

-> 192.168.111.102:80 ??????????Route ??1 ?????0 ?????????0

-> 192.168.111.103:80 ??????????Route ??1 ?????0 ?????????0

 

RS配置

[root@RS1 ~]# cat lvs_dr_rs.sh

#!/bin/bash

vip=10.0.0.100

mask=’255.0.0.0’#子網掩碼是什么都可以

dev=lo:1

rpm -q httpd &> /dev/null || yum -y install httpd &>/dev/null

service httpd start &> /dev/null && echo “The httpd Server is Ready!”

echo “`hostname`” > /var/www/html/index.html

 

case $1 in

start)

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig $dev $vip netmask $mask #broadcast $vip up廣播可以不寫

#route add -host $vip dev $dev 路由可以不寫

echo “The RS Server is Ready!”

;;

stop)

ifconfig $dev down

echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo “The RS Server is Canceled!”

;;

*)

echo “Usage: $(basename $0) start|stop”

exit 1

;;

esac

[root@RS1 ~]#

 

 

[root@RS1 ~]# bash lvs_dr_rs.sh start

[root@RS2 ~]# bash lvs_dr_rs.sh start

 

確定VIP被綁定到lo上

[root@RS1 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet 10.0.0.100/8?scope global lo:1

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

 

 

關閉防火墻、關閉selinux、關閉橋接網卡、開啟httpd服務

iptables -F && setenforce 0 && ifconfig ens33 down && systemctl start httpd

 

 

 

測試

[root@client ~]# for i in {1..100};do curl 10.0.0.100; sleep 0.1;done

RS1 Server

RS2 Server

RS1 Server

RS2 Server

?

?

腳本中的lo網卡的arp_announce和arp_ignore是不是可以不加?

修改腳本,注釋掉lo網卡所在的行,測試

?

????echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

# ???echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

?

也就是說,加了all是不是可以不加lo

?

?

RS1和RS2

修改對應的選項后重新執行

?

bash lvs_dr_rs.sh start

?

是可以的!

?

all就是代表所有,lo是單獨的針對lo網卡,加上all 和 lo 相對于是雙保險

?

?

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91936

(0)
無言勝千言無言勝千言
上一篇 2018-03-05
下一篇 2018-03-06

相關推薦

  • Linux ansible 服務

                      Linux ansible 服務 Ansible:    運維工具的分類: agent:基于專用的agent程序完成管理功能,puppet, func, zabbix, … agentless:基于ss…

    系統運維 2016-11-19
  • shell編程之循環及函數

    for 循環 for 變量名 in 列表;do    循環體 done   執行機制: 依次將列表中的元素賦值給“變量名”; 每次賦值后即執行一次循環體; 直到列表中 的元素耗盡,循環結束   列表生成方式: (1)直接給出列表 (2)整數列表: (a) {start..end} (b) $(seq [start [s…

    Linux干貨 2016-08-24
  • linux中數組的定義與使用

            我們常說,程序=指令+數據,往細一點的方向說,指令具體指的有哪些?數據又有哪些? 總結一下: 指令大概包括,編程語言中的語法關鍵字(如bash編程中的關鍵字有for,while,case,if,until,continue,break),還包括系統中的命令,和一些自己編寫的函數,這些…

    2017-05-23
  • MBR詳解

    前言:     話說,現在買電腦如果預裝win8以上的系統,基本上都是GPT。想當年博主買的電腦預裝的win8磁盤分區樣式就是GPT,而且貌似如果想把win8換win7就得把GPT改成MPR。雖然會在最后提到GPT,不過本文還是主要講解MBR,并通過實驗驗證。 機械硬盤: 主引導記錄(Master Boot Record,縮寫:MBR),…

    Linux干貨 2016-11-14
  • Linux文件權限之facl

    1、什么是facl         facl(file access control list)文件訪問控制列表,主要目的是在原有的u,g,o之外,另一層讓普通用戶能控制賦權給另外的用戶或組的機制;       &nbs…

    Linux干貨 2016-09-19
  • linux用戶管理(一)

    作為一個專業的服務器發行版,CentOS上存在著n多個用戶,作為一個專業的運維工程師,linux的用戶管理和用戶組的管理是做為一個SA必不可少的工作. 下面我們就先來談談linux中的用戶管理: useradd可以在系統中新建一個用戶 用法如下: useradd [選項] 用戶名 常用選項: -u 指定用戶的UID -g 指定用戶的初始組ID -G…

    Linux干貨 2017-04-03
欧美性久久久久