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. curl使用小记(一)

    目录 1. 概述 2. 实例 2.1. 访问网页 2.2. 显示头信息 2.3. 保存网页 2.4. 下载图片 2.5. 用户代理设置 2.6. 代理设置 3. 参考 1. 概述 curl也就是com ...

  2. PB从入坑到放弃(七)PBer们的福音来了

    写在前面 也许现在的你需要用PB完成毕业设计.需要维护远古时代的代码,又或者是你呆的公司就是要求要用PB开发项目. 不管你是出于什么原因还在使用PB,不可否认PB在数据窗口非常优秀,熟练使用之后开发数 ...

  3. OBS鉴权实现的宝典秘籍,速拿!

    摘要:OBS提供了REST(Representational State Transfer)风格API,支持您通过HTTP/HTTPS请求调用.本文将带你了解OBS API鉴权实现的宝典秘籍. OBS ...

  4. 还在头疼你的API,送你一个保姆级的API设计管理平台

    摘要:API设计不一致?API没地方归档?云服务开发项目合作低效?...... ? 本文分享自华为云社区<API Arts 全探秘 | 华为云新一代设计管理平台,功能强大!>,作者:华为云 ...

  5. 1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效

    摘要: 云原生数据库GaussDB助力"2号人事部"打造高品质HR效率软件 本文分享自华为云社区<1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效>, ...

  6. 十大 CI/CD 安全风险(五)

    在本篇文章中,我们将了解第三方服务的监管不足,工件完整性验证及日志可见性不足这三个关键 CI/CD 安全风险,并给出缓解相应风险的建议与措施. 第三方服务监管不足 CI/CD 攻击面包括企业资产,例如 ...

  7. 企业新道路怎么走?火山引擎AB测试助力决策选择

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   乐刻是一家创立8年的企业,除了消费者熟悉的乐刻健身房可办月卡.24小时营业等,其还有比外界了解更多元的业务.目 ...

  8. 火山引擎 DataLeap:从短视频 APP 实践看如何统一数据指标口径

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 短视频正在成为越来越多人发现世界的窗口,其背后的创作者生态建设是各大短视频 APP 不可忽视的重要组成部分. 为了 ...

  9. 火山引擎 DataTester 背后,抖音的名字原来是 AB 测试来的

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 抖音的名字是怎么来的? 在字节跳动火山引擎技术开放日上,字节跳动副总裁杨震原曾透露过"抖音"名 ...

  10. 聊一聊为什么我要整合Microsoft.Extensions.DependencyInjection和Castle.Core

    前言 如果用到动态代理,大家可能会有几种选择,排到前列的是Autofac+Castle.AspectCore和DoraInterception, 我将从我当时研究的经历,以及我遇到的场景,为大家展示下 ...