• 一、LVS的NAT模式实战

1、环境说明:

HOST OS role remask
192.168.56.12 Centos 7.4 LVS调度器(1.2.7) VIP:192.168.0.104
192.168.56.11 Centos 7.4  RS1 LNMP
192.168.56.13 Centos 7.4 RS2 LNMP

2、LVS调度器环境配置

(1)增加一块外网网卡eth1

(2)拷贝eth0配置文件为eth1,并修改网卡配置

[root@lb01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
[root@lb01 ~]# vim !$
vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="eth1"
DEVICE="eth1"
ONBOOT="yes"
IPADDR=192.168.0.104
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=114.114.114.114
[root@lb01 ~]# systemctl restart network
[root@lb01 ~]# ifconfig eth1
eth1: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::20c:29ff:fe95: prefixlen scopeid 0x20<link>
ether :0c:::: txqueuelen (Ethernet)
RX packets bytes (265.1 KiB)
RX errors dropped overruns frame
TX packets bytes (5.4 KiB)
TX errors dropped overruns carrier collisions

(3)YUM安装ipvsadm,并对ipvsadm规则进行配置

1、开启调度器上的路由转发功能
[root@lb01 ~]# echo > /proc/sys/net/ipv4/ip_forward  2、关闭ICMP重定向 
[root@lb01 ~]# echo > /proc/sys/net/ipv4/conf/all/send_redirects   
[root@lb01 ~]# echo > /proc/sys/net/ipv4/conf/default/send_redirects
[root@lb01 ~]# echo > /proc/sys/net/ipv4/conf/eth0/send_redirects
[root@lb01 ~]# echo > /proc/sys/net/ipv4/conf/eth1/send_redirects 3、配置防火墙的NAT规则
[root@lb01 ~]# iptables -t nat -F  
[root@lb01 ~]# iptables -t nat -X
[root@lb01 ~]# iptables -t nat -A POSTROUTING -s 192.168.56.0/ -j MASQUERADE 4、配置ipvsadm并查看调度器状态信息
[root@lb01 ~]# ipvsadm -C
[root@lb01 ~]# ipvsadm -A -t 192.168.0.104: -s rr
[root@lb01 ~]# ipvsadm -a -t 192.168.0.104: -r 192.168.56.11: -m -w
[root@lb01 ~]# ipvsadm -a -t 192.168.0.104: -r 192.168.56.13: -m -w
[root@lb01 ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.104: rr
-> 192.168.56.11: Masq
-> 192.168.56.13: Masq

参数说明:

-A:表示增加一个虚拟服务

-a:表示增加一个real server

-t:表示TCP服务

-r:指定real server的ip地址

-s:指定调度算法

-m:选择NAT方式调度

-w:指定权重

(3)修改real server:RS1和RS2的网关

[root@rs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=192.168.56.12
[root@rs2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=192.168.56.12

(4)测试访问

[root@lb01 ~]# curl 192.168.0.104
<h1>welcome to RS1 192.168.56.11</h1>
[root@lb01 ~]# curl 192.168.0.104
<h1> welcome to use RS2 192.168.56.13</h1>
[root@lb01 ~]# watch -n ipvsadm -L -n  #动态查看访问记录
Every .0s: ipvsadm -L -n Tue Jul :: IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.104: rr
-> 192.168.56.11: Masq
-> 192.168.56.13: Masq

  • 二、LVS的DR模式实战

1、环境准备和说明

HOST OS ROLE REMASK
192.168.56.12 Centos 7.4 LVS调度器 VIP:192.168.56.200
192.168.56.11 Centos 7.4 RS1 LNMP
192.168.56.13 Centos 7.4 RS2 LNMP
[root@lb01 ~]# ipvsadm -ln  #查看NAT模式下的ipvsadm规则
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.104: rr
-> 192.168.56.11: Masq
-> 192.168.56.13: Masq
[root@lb01 ~]# ipvsadm -C  #清空NAT模式下的规则
[root@lb01 ~]# ipvsadm -ln  #确认规则是否清空
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@lb01 ~]# iptables -t nat -F  #情况防火墙的nat表规则
[root@rs1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0   #修改rs1网卡网关
GATEWAY=192.168.56.2
[root@rs2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0   #修改rs2网卡网关
GATEWAY=192.168.56.2
[root@rs1 ~]# systemctl restart network  #重启网络服务
[root@rs2 ~]# systemctl restart network

 [root@lb01 ~]# ifdown eth1  #DR模式调度器用不到eth1网卡,down掉
  Device 'eth1' successfully disconnected.

2、在LVS调度节点上配置vip

[root@lb01 ~]# ifconfig eth0: 192.168.56.200/ up
[root@lb01 ~]# ifconfig eth0:
eth0:: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.56.200 netmask 255.255.255.0 broadcast 192.168.56.255
ether :0c:::: txqueuelen (Ethernet)

3、在lvs调度节点上配置LVS服务并增加2台节点服务器

[root@lb01 ~]# ipvsadm -C  #清空LVS配置
[root@lb01 ~]# ipvsadm --set 60  #设置连接超时时间
[root@lb01 ~]# ipvsadm -A -t 192.168.56.200: -s rr -p 20  #新增lvs服务
[root@lb01 ~]# ipvsadm -a -t 192.168.56.200: -r 192.168.56.11 -g -w
[root@lb01 ~]# ipvsadm -a -t 192.168.56.200: -r 192.168.56.13 -g -w
[root@lb01 ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.200: rr persistent
-> 192.168.56.11: Route
-> 192.168.56.13: Route

4、在RS节点上的lo(网卡的回环接口)接口上配置vip(192.168.56.200)

[root@rs1 ~]# ifconfig lo: 192.168.56.200/ up
[root@localhost ~]# ifconfig lo:
lo:: flags=<UP,LOOPBACK,RUNNING> mtu
inet 192.168.56.200 netmask 0.0.0.0
loop txqueuelen (Local Loopback)
[root@rs2 ~]# ifconfig lo: 192.168.56.200/ up
[root@localhost ~]# ifconfig lo:
lo:: flags=<UP,LOOPBACK,RUNNING> mtu
inet 192.168.56.200 netmask 0.0.0.0
loop txqueuelen (Local Loopback)

5、在RS节点上抑制ARP响应 (RS1和RS2上分别执行)

[root@rs1 ~]# echo  > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs1 ~]# echo > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs1 ~]# echo > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs1 ~]# echo > /proc/sys/net/ipv4/conf/all/arp_announce [root@rs2 ~]# echo > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@rs2 ~]# echo > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@rs2 ~]# echo > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@rs2 ~]# echo > /proc/sys/net/ipv4/conf/all/arp_announce

6、测试LVS调度

访问:http://192.168.56.200 ,如图:

[root@lb01 ~]# watch -n  ipvsadm -L -n   #查看访问状态
Every .0s: ipvsadm -L -n Tue Jul :: IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.200: rr persistent
-> 192.168.56.11: Route
-> 192.168.56.13: Route

7、删除节点和服务

[root@lb01 ~]# ipvsadm -d -t 192.168.56.200: -r 192.168.56.13   #删除RS2节点
[root@lb01 ~]# ipvsadm -Ln  #查看是否已删除RS2
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.200: rr persistent
-> 192.168.56.11: Route
[root@lb01 ~]# ipvsadm -D -t 192.168.56.200:   #直接删除LVS服务

 8、LVS脚本配置(设置为开机启动,确保长期生效)

(1)Server端脚本

[root@lb01 ~]# vim /scripts/ipvs_server.sh
#!/bin/sh
. /etc/init.d/functions
VIP=192.168.56.200
PORT=
RIP=(
192.168.56.11
192.168.56.13
)
start(){
ifconfig eth0: $VIP/ up
route add -host $VIP dev eth0
ipvsadm -C
ipvsadm --set
ipvsadm -A -t $VIP:$PORT -s rr -p
for ((i=;i<${#RIP[*]};i++))
do
ipvsadm -a -t $VIP:$PORT -r ${RIP[$i]} -g -w
done
echo "ipvs is started"
}
stop(){
ipvsadm -C
ifconfig eth0: down
route del -host $VIP dev eth0
echo "ipvs is stopped"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "UASGE: $0 {start|stop|restart}"
esac
[root@lb01 ~]# cp /scripts/ipvs_server.sh /usr/local/sbin/ipvs
[root@lb01 ~]# cd /usr/local/sbin/
[root@lb01 ~]# chmod +x ipvs

(2)Client端脚本

[root@rs1 ~]# vi /scripts/ipvs_client.sh
#!/bin/sh
. /etc/init.d/functions
VIP=(
192.168.56.200
) case "$1" in
start)
echo "start LVS of RealServer IP"
for ((i=;i<`echo ${#VIP[*]}`;i++))
do
interface="lo:`echo ${VIP[$i]}|awk -F . '{print $4}'`"
/sbin/ifconfig $interface ${VIP[$i]} broadcast ${VIP[$i]} netmask 255.255.255.255 up
route add -host ${VIP[$i]} dev $interface
done
echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
for ((i=;i<`echo ${#VIP[*]}`;i++))
do
interface="lo:`echo ${VIP[$i]}|awk -F . '{print $4}'`"
/sbin/ifconfig $interface ${VIP[$i]} broadcast ${VIP[$i]} netmask 255.255.255.255 down
route del -host ${VIP[$i]} dev $interface
done
echo "stOP LVS of RealServer IP"
echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start | stop}"
exit
esac

LVS入门篇(四)之LVS实战的更多相关文章

  1. 【SSRS】入门篇(四) -- 向报表添加数据

    原文:[SSRS]入门篇(四) -- 向报表添加数据 定义好数据集后 [SSRS]入门篇(三) -- 为报表定义数据集 ,就可以开始设计报表了,将要显示在报表的字段.文本框.图像和其他项从工具箱拖放到 ...

  2. FPGA基础入门篇(四) 边沿检测电路

    FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电 ...

  3. LVS入门篇(五)之LVS+Keepalived实战

    一.实验架构和环境说明 (1)本次基于VMware Workstation搭建一个四台Linux(CentOS 7.4)系统所构成的一个服务器集群,其中两台负载均衡服务器(一台为主机,另一台为备机), ...

  4. LVS入门篇(三)之LVS的工作模式和调度算法

    1.NAT模型 (1)原理图: ①.客户端(200.10.10.1)将请求发往前端的负载均衡器(114.100.80.10),请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP ...

  5. LVS入门篇(二)之LVS基础

    1. LVS介绍 LVS是Linux虚拟服务器(LinuxVirtualServers),使用负载均衡技术将多台服务器组成一个虚拟服务器.它为适应快速增长的网络访问需求提供了一个负载能力易于扩展,而价 ...

  6. LVS入门篇(一)之ARP协议

    1.概念 地址解析协议,即ARP(AddressResolutionProtocol),是根据IP地址获取物理MAC地址的一个TCP/IP协议.主机发送信息时将包含目标IP地址的ARP请求广播到网络上 ...

  7. C++入门篇四

    常量引用:形参不能修改,节省开辟内存空间的开销 用一级指针代替二级指针常量引用,使用场景,修饰形参为只读const int a=10会分配内存如果使用引用,在前面加了一个const的话,那么就不可以修 ...

  8. 【SSRS】入门篇(五) -- 设置报表格式

    原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...

  9. Sping Boot入门到实战之入门篇(四):Spring Boot自动化配置

    该篇为Sping Boot入门到实战系列入门篇的第四篇.介绍Spring Boot自动化配置的基本原理与实现.   Spring Boot之所以受开发者欢迎, 其中最重要的一个因素就是其自动化配置特性 ...

随机推荐

  1. 【[AHOI2009]同类分布】

    这是一篇有些赖皮的题解 (如果不赖皮的话,bzoj上也是能卡过去的) 首先由于我这个非常\(sb\)的方法复杂度高达\(O(171^4)\),所以面对极限的\(1e18\)的数据实在是卡死了 但是这个 ...

  2. Linux学习总结(十五)文件查找 which whereis locate find

    which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录.which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令,就 ...

  3. python3之安装mysql问题

    python3是不能通过pip install mysql或pipinstall mysqldb这样的形式来安装mysql. 只能 pip install PyMySQL 至于如何在文件中引用? 答曰 ...

  4. spring框架中beans.xml文件报错XmlBeanDefinitionStoreException

    第一次构建spring,实现简单的注入方式,就发生了beans.xml文件报错,报错信息如下图 org.springframework.beans.factory.xml.XmlBeanDefinit ...

  5. PAT——1061. 判断题

    判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过100的正整数N和M,分别是学生人数和判断题数量.第二行给出M个不超过5的正 ...

  6. PAT——1054. 求平均值

    本题的基本要求非常简单:给定N个实数,计算它们的平均值.但复杂的是有些输入数据可能是非法的.一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位.当你计算平均值的时候, ...

  7. iOS 关闭图片渲染

    在为Button 设置背景图片的时候, 会发现显示的效果和UI给的图片不一样, 往往是把图片显示成为蓝色, 这是因为在新版的iOS中, 会自动对图片渲染. 我们只要把图片渲染关掉就OK了 - (UII ...

  8. linux 中安装mysql8.0

    转载自:http://www.linuxidc.com/Linux/2016-11/137608.htm 可能有人会惊奇MySQL为何从5.x一下跳跃到了8.0.事实上,MySQL 5.x系列已经延续 ...

  9. C# WebClient Get获取网页内容

    //不知道怎么删除,只好留着 1. Get方式: WebClient web = new WebClient(); var html = web.DownloadString(url); 2. Pos ...

  10. Read a large file with python

    python读取大文件 较pythonic的方法,使用with结构 文件可以自动关闭 异常可以在with块内处理 with open(filename, 'rb') as f: for line in ...