LVS入门篇(四)之LVS实战

https://www.cnblogs.com/linuxk/p/9360922.html
  • 一、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=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.104 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::20c:29ff:fe95:2993 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:95:29:93 txqueuelen 1000 (Ethernet)
RX packets 2383 bytes 271561 (265.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43 bytes 5606 (5.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

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

1、开启调度器上的路由转发功能
[root@lb01 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 

2、关闭ICMP重定向 
[root@lb01 ~]# echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects   
[root@lb01 ~]# echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
[root@lb01 ~]# echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
[root@lb01 ~]# echo 0 > /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/24 -j MASQUERADE

4、配置ipvsadm并查看调度器状态信息
[root@lb01 ~]# ipvsadm -C
[root@lb01 ~]# ipvsadm -A -t 192.168.0.104:80 -s rr
[root@lb01 ~]# ipvsadm -a -t 192.168.0.104:80 -r 192.168.56.11:80 -m -w 1
[root@lb01 ~]# ipvsadm -a -t 192.168.0.104:80 -r 192.168.56.13:80 -m -w 1
[root@lb01 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.104:80 rr
-> 192.168.56.11:80 Masq 1 0 0
-> 192.168.56.13:80 Masq 1 0 0

参数说明:

-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 1 ipvsadm -L -n  #动态查看访问记录
Every 1.0s: ipvsadm -L -n Tue Jul 24 04:40:59 2018 IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.104:80 rr
-> 192.168.56.11:80 Masq 1 0 2
-> 192.168.56.13:80 Masq 1 0 3

  • 二、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.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.104:80 rr
-> 192.168.56.11:80 Masq 1 0 0
-> 192.168.56.13:80 Masq 1 0 0
[root@lb01 ~]# ipvsadm -C  #清空NAT模式下的规则
[root@lb01 ~]# ipvsadm -ln  #确认规则是否清空
IP Virtual Server version 1.2.1 (size=4096)
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:1 192.168.56.200/24 up
[root@lb01 ~]# ifconfig eth0:1
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.200 netmask 255.255.255.0 broadcast 192.168.56.255
ether 00:0c:29:95:29:89 txqueuelen 1000 (Ethernet)

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

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

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

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

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

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

6、测试LVS调度

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

[root@lb01 ~]# watch -n 1 ipvsadm -L -n   #查看访问状态
Every 1.0s: ipvsadm -L -n Tue Jul 24 05:11:25 2018 IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.56.200:80 rr persistent 20
-> 192.168.56.11:80 Route 1 0 0
-> 192.168.56.13:80 Route 1 3 1

7、删除节点和服务

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

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

(1)Server端脚本

[root@lb01 ~]# vim /scripts/ipvs_server.sh
#!/bin/sh
. /etc/init.d/functions
VIP=192.168.56.200
PORT=80
RIP=(
192.168.56.11
192.168.56.13
)
start(){
ifconfig eth0:1 $VIP/24 up
route add -host $VIP dev eth0
ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t $VIP:$PORT -s rr -p 20
for ((i=0;i<${#RIP[*]};i++))
do
ipvsadm -a -t $VIP:$PORT -r ${RIP[$i]} -g -w 1
done
echo "ipvs is started"
}
stop(){
ipvsadm -C
ifconfig eth0:1 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=0;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 "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "1" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
for ((i=0;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 "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start | stop}"
exit 1
esac

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

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

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

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

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

  3. LVS入门篇(四)之LVS实战

    一.LVS的NAT模式实战 1.环境说明: HOST OS role remask 192.168.56.12 Centos 7.4 LVS调度器(1.2.7) VIP:192.168.0.104 1 ...

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

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

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

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

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

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

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

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

  8. C++入门篇四

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

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

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

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

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

随机推荐

  1. 前世今生:Kubernete 是如何火起来的?

    本课时,我们就开始正式进入 Kubernetes 的学习,或许你已经听过或简单了解过 Kubernetes,它是一款由 Google 开源的容器编排管理工具,而我们想要深入地掌握 Kubernetes ...

  2. 微信小程序中业务域名的配置

    需要配置业务域名,需要先将域名http转https 1,首先在该微信小程序的公众号平台中下载 业务域名的证书 2,将下载的证书放进nginx的根目录 3,在nginx中 (root为.txt的地址)

  3. 抖音上超好听的神曲音乐,Python教你一次性下载

    不知道什么时候开始,中国出现了南抖音.北快手的互文格局(东市买骏马,西市买鞍鞯-).刚才提到了,之前比较喜欢刷抖音,对于我这种佛系程序猿,看网上这些整容妹子基本一个样.喜欢抖音主要是两个初衷,学做菜听 ...

  4. Serverless 架构就不要服务器了?

    摘要:Serverless 架构不是不要服务器了,而是依托第三方云服务平台,服务端逻辑运行在无状态的计算容器中,其业务层面的状态则被开发者使用的数据库和存储资源所记录. Serverless 是什么 ...

  5. 一文掌握GaussDB(DWS) SQL进阶技能:全文检索

    摘要:本文简要介绍了GaussDB(DWS)全文检索的原理和使用方法. 全文检索(Text search)顾名思义,就是在给定的文档中查找指定模式(pattern)的过程.GaussDB(DWS)支持 ...

  6. 实践丨手把手教你用STM32设计WiFi语音播报日程表

    摘要:随着电子产品的发展,数字日程表这项应用在人们工作和生活中起到越来越重要的作用.本文带领大家基于STM32自己动手制作一个WiFi语音播报日程表. 本文分享自华为云社区<基于STM32设计的 ...

  7. Karmada v1.2发布:开启全文本搜索新纪元

    摘要:Karmada v1.2 版本对调度器能力做了较大增强,初步提供了分布式搜索引擎支持,此外还借助聚合API提供了诸如 logs, watch等实用的命令行工具,资源解释器(Resource In ...

  8. Solon Web 开发,三、打包与运行

    Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...

  9. .Net Core NLog 配置

    using NLog; private static Logger logger = LogManager.GetCurrentClassLogger(); //初始化日志类 NLog.config ...

  10. 如何使用Java在Excel中添加动态数组公式?

    本文由葡萄城技术团队发布.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 动态数组公式是 Excel 引入的一项重要功能,它将 Excel 分为两种风 ...