一、实验环境

 系统:CentOS7.6

 主机:5台 (虚拟机)

  客户端1台:172.16.236.134/24 (NAT网卡),网关指向 172.16.236.185/24(路由服务器)

  路由服务器1台:172.16.236.185/24 (NAT),192.168.214.17/16 (仅主机),附加绑定IP (10.0.0.200/8)

  LVS服务器1台:VIP (10.0.0.100/32,绑定在lo网卡上),DIP (192.168.214.27/16,仅主机),网关指向 192.168.214.17/16(路由服务器)

  RS1服务器1台:VIP (10.0.0.100/32,绑定在lo网卡上),RIP (192.168.214.37/16,仅主机),网关指向 192.168.214.17/16(路由服务器)

  RS2服务器1台:VIP (10.0.0.100/32,绑定在lo网卡上),RIP (192.168.214.47/16,仅主机),网关指向 192.168.214.17/16(路由服务器)

 软件包:ipvsadm,httpd,mod_ssl(光盘yum源)

二、相关实验

1、实现LVS跨网段DR模型

(1) 按网络规划,配置好各主机的IP

 客户端服务器:eth0:172.16.236.134/24,网关 172.16.236.185

 路由器服务器:eth0:172.16.236.185/24,eth1:192.168.214.17/16,网关不需配

 LVS服务器:eth0:192.168.214.27/16,网关 192.168.214.17

 RS1服务器:eth0:192.168.214.37/16,网关 192.168.214.17

 RS2服务器:eth0:192.168.214.47/16,网关 192.168.214.17

(2) 在路由服务器上开启网络转发功能

[root@centos7-17 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=
[root@centos7-17 ~]# sysctl -p
net.ipv4.ip_forward =

(3) 在LVS服务器上安装ipvsadm包

[root@centos7- ~]# yum install -y ipvsadm

(4) 在LVS服务器上配置LVS,此处用脚本实现,脚本如下

[root@centos7- ~]# vim lvs_dr_vs.sh
#!/bin/bash vip='10.0.0.100' #VIP
iface='lo:1' #VIP绑定接口
mask='255.255.255.255' #VIP子网掩码
port='' #端口
rs1='192.168.214.37' #RS1服务器IP
rs2='192.168.214.47' #RS2服务器IP
scheduler='wrr' #调度算法
type='-g' #LVS类型,-m为nat模式,-g为dr模式,-i为tun模式 case $ 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
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo "Usage $(basename $0) start|stop"
exit
;;
esac
#!/bin/bash

vip='10.0.0.100'
iface='lo:1'
mask='255.255.255.255'
port=''
rs1='192.168.214.37'
rs2='192.168.214.47'
scheduler='wrr'
type='-g' case $ 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
ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w
;;
stop)
ipvsadm -C
ifconfig $iface down
;;
*)
echo "Usage $(basename $0) start|stop"
exit
;;
esac

lvs_dr_vs.sh

(5) 在R1服务器配置httpd服务,并配置VIP绑定与相关内核参数,配置RIP(192.168.214.37)时,记得网关指向 192.168.214.27

[root@centos7- ~]# yum install -y httpd
[root@centos7- ~]# echo 192.168.214.37 RS1 > /var/www/html/index.html
[root@centos7- ~]# systemctl start httpd
#配置VIP绑定与相关内核参数,配置脚本如下
[root@centos7- ~]# vim lvs_dr_rs.sh
#!/bin/bash vip='10.0.0.100'
mask='255.255.255.255'
dev='lo:1' case $ in
start)
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
;;
stop)
ifconfig $dev down
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage:$(basename $0) start|stop"
exit
;;
esac [root@centos7- ~]# bash lvs_dr_rs.sh start

(6) 在R2服务器配置httpd服务,并配置VIP绑定与相关内核参数,配置RIP(192.168.214.37)时,记得网关指向 192.168.214.27

[root@centos7- ~]# yum install -y httpd
[root@centos7- ~]# systemctl start httpd
[root@centos7- ~]# echo 192.168.214.47 RS2 > /var/www/html/index.html
#配置VIP绑定相关内核参数,脚本与R1上一样
[root@centos7- ~]# bash lvs_dr_rs.sh start
#!/bin/bash

vip='10.0.0.100'
mask='255.255.255.255'
dev='lo:1' case $ in
start)
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $dev $vip netmask $mask #broadcast $vip up
#route add -host $vip dev $dev
;;
stop)
ifconfig $dev down
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
echo > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "Usage:$(basename $0) start|stop"
exit
;;
esac

lvs_dr_rs.sh

(7) 在LVS服务器上启动配置脚本

[root@centos7- ~]# bash lvs_dr_vs.sh start
[root@centos7- ~]# ipvsadm -Ln
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.0.0.100: wrr
-> 192.168.214.37: Route
-> 192.168.214.47: Route  

(8) 在客户端上进行测试

[root@centos7 ~]# while true;do curl 10.0.0.100 ;sleep ;done
#可以看到成功了
192.168.214.37 RS1
192.168.214.47 RS2
192.168.214.37 RS1
192.168.214.47 RS2
192.168.214.37 RS1
192.168.214.47 RS2
...

2、实现LVS的FWM多服务绑定

 当http服务同时用到80与443端口时,用DR模式会有点繁琐,此时用FWM (FireWall Mark)是一种不错的选择。

(1) 只需要LVS服务器稍稍修改即可,其它服务器还是按以上配置

 在LVS主机上打标记

  iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,... -j MARK --set-mark NUMBER

 在LVS主机基于标记定义集群服务

  ipvsadm -A -f NUMBER [options]

[root@centos7- ~]# bash lvs_dr_vs.sh stop
[root@centos7- ~]# ipvsadm
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@centos7- ~]# ifconfig lo: 10.0.0.100 netmask 255.255.255.255 #绑定VIP
#打标记
[root@centos7- ~]# iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports , -j MARK --set-mark
#配置集群
[root@centos7- ~]# ipvsadm -A -f -s rr
[root@centos7- ~]# ipvsadm -a -f -r 192.168.214.37 -g
[root@centos7- ~]# ipvsadm -a -f -r 192.168.214.47 -g
[root@centos7- ~]# ipvsadm -Ln
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM rr
-> 192.168.214.37: Route
-> 192.168.214.47: Route

(2) 在两台RS服务器上安装mod_ssl模块,实现https的访问

[root@centos7- ~]# yum install -y mod_ssl
[root@centos7- ~]# systemctl restart httpd [root@centos7- ~]# yum install -y mod_ssl
[root@centos7- ~]# systemctl restart httpd

(3) 在客户端上测试80与443端口的调度情况

[root@centos7 ~]# while true;do curl 10.0.0.100 ;curl -k https://10.0.0.100;sleep 1;done
#可以看到成功了,且不分端口进行了统一调度
192.168.214.47 RS2
192.168.214.37 RS1
192.168.214.47 RS2
192.168.214.37 RS1
192.168.214.47 RS2
192.168.214.37 RS1
192.168.214.47 RS2
192.168.214.37 RS1
192.168.214.47 RS2
192.168.214.37 RS1

Linux学习-LVS跨网段DR模型和FWM多服务绑定的更多相关文章

  1. LVS跨网段DR模型

    客户端IP地址:172.16.8.147 路由器服务器IP地址:172.16.8.167内网IP地址:192.168.1.3 一.将客户端的网关修改为路由服务器IP地址 vim ifcfg-ens33 ...

  2. LVS跨网段DR模式并使用ldirectord实现RS高可用性

    DR模型的工作过程: Client向VIP发起请求,请求被路由器接收到,转发给不同网段的Director的VIP,Director再通过私有网络转给RS服务器,RS服务器处理请求并通过自身配置的VIP ...

  3. C++学习(10)—— 对象模型和this指针

    1. 成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空对象占用内存空间为1 C++编译器会给每个空对象也分配一个字节空间,是为了区分空对 ...

  4. Linux学习笔记(二):实战-根据微服务端口号关闭进程

    前言 现在项目组基本都用Springboot,每个服务占用一个端口号,有时需要选择性的关闭,但在任务管理器上他们的名称都是java.exe,无法区分,这才学以致用. killPort.sh 作用:根据 ...

  5. Linux学习笔记二:Ubuntu安装SSH(Secure Shell)服务

    Ubuntu默认是没有安装SSH(Secure Shell)服务,如果想要通过ssh链接到Ubuntu,我们需要手动安装ssh-server. SSH分客户端ssh-client,服务端ssh-ser ...

  6. LVS之DR跨网段实战及高可用性

    author:JevonWei 版权声明:原创作品 LVS-DR实现跨网段 网络拓扑 网络环境 RS1 RIP 192.168.198.138/24 VIP 192.168.80.100/32 GW ...

  7. lvs+keepalive实现双主模式(采用DR),同时实现TCP和UDP检测实现非web端的负载均衡,同时实现跨网段的通讯

    因为公司领导需要,需要把lvs备机也使用上,故! 使用双主,相互是主的同时也相互是备机.本人用nat测试发现RS无法实现负载均衡,故采用DR模式来实现非web端的负载均衡 lvs1: DIP 10.6 ...

  8. 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)

    以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型    下四层是为数据传输服务的,物理层是真正的传输数 ...

  9. Linux学习系列之lvs+keepalived

    LVS简介 LVS介绍 LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,属于4层负载均衡 ipvs和ipvsadm的关系 我们使用配置LV ...

随机推荐

  1. Unity Mathf And Transform Compent(一)

    Mathf类部分变量 辐射到度的转化函数,能够将弧度转化成度. Abs 能够求出绝对值 Atan 求出正切值x/y的弧度 Transform 组件中带有local 以父物体为坐标原点 global以世 ...

  2. cannot assign to struct field xxx in map

    golang 中对 map 类型中的 struct 赋值报错 type s struct{ name string age int}func main(){ a := map[string]s{ &q ...

  3. 禁止SYS和SYSTEM用户远程登录Oracle oracle的sys和system默认密码

    alter system set remote_login_passwordfile=none scope=spfile; system默认:manager sys默认:change_on_insta ...

  4. mysql先分组,然后取每个分组中的第2大的记录

    文章参考http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ 首先建表: ...

  5. 使用eclipse创建mavenWeb项目,中途遇到的问题及解决方案!

    创建MavenWeb项目的步骤,如下: 1).new--->Maven --->maven project,如图: 之后, next,最后finish,项目创建完成,项目的目录如下: 将w ...

  6. JavaWeb返回Json格式数据JQuery Ajax无法解析的问题

    今天在写实验室的傻逼Java Web小项目的时候,有一个需要发布内容的地方,因为想做的让用户感觉优雅一点 所以就是用了Ajax来做,本来很简单的一个小玩意,竟然花了半个多小时的时间,主要是将时间花在了 ...

  7. oracle 实现mysql find_set_in函数

    create or replace FUNCTION F_FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',' ...

  8. C++ 中的new、malloc、namespace

    1,这些新引入的成员想要解决 C 语言中存在的一些问题, 2,动态内存分配: 1,C++ 中的动态内存分配: 1,C++ 中通过 new 关键字进行基于类型的动态内存申请: 1,C 语言中自身不包含动 ...

  9. 「POI2010」反对称 Antisymmetry (manacher算法)

    # 2452. 「POI2010」反对称 Antisymmetry [题目描述] 对于一个 $0/1$ 字符串,如果将这个字符串 $0$ 和 $1$ 取反后,再将整个串反过来和原串一样,就称作「反对称 ...

  10. webshell查杀

    大部分Webshell查杀工具都是基于关键字特征的,通常他们会维护一个关键字列表,以此遍历指定扩展名的文件来进行扫描,所以可能最先想到的是各种字符串变形,下面总结了一些小的方法,各种不足之前还请看官拍 ...