lvs模式配置

  1. lvs简介

    LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案,其体系结构如图1所示,终端互联网用户从外部访问公司的外部负载均衡服务器,终端用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某台Web服务器,比如,轮询算法可以将外部的请求平均分发给后端的所有服务器,终端用户访问LVS调度器虽然会被转发到后端真实的服务器,但如果真实服务器连接的是相同的存储,提供的服务也是相同的服务,最终用户不管是访问哪台真实服务器,得到的服务内容都是一样的,整个集群对用户而言都是透明的。最后根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT模式、TUN模式、以及DR模式。

1.1 Ivs: Linux Virtual Server

四层交换,四层路由:

根据请求报文的目标IP和PORT将其转发至后端主机集群中的某-台主机(根据挑选算法)

netfilter

  • PREROUTING --> INPUT
  • PREROUTING --> FORWARD --> POSTROUTING
  • OUTPUT --> POSTROUTING

Ivs:

ipvsadm/ipvs

ipvsadm:用户空间的命令行工具,用于管理集群服务

ipvs:工作于内核中netfilter INPUT钩子.上

支持TCP,UDP,AH, EST, AH_ EST, SCTP等诸多协议

grep -i -A 2 "ipvs’ /boot/config-2.6.32-504.el6.x86_ 64

查看系统对ipvs的支持情况,包括算法

Ivs arch:

  • 调度器: director, dispatcher, balancer
  • RS: Real Server
  • Client IP: CIP
  • Director Virutal IP: VIP
  • Director IP: DIP
  • Real Server IP: RIP

配置NAT模式

  • 准备工作
服务器名称 IP 版本
lvs 192.168.78.134 centos8/redhat8
RS1 192.168.78.135 centos8/redhat8
RS2 192.168.78.136 centos8/redhat8

配置RS1主机

//修改主机名
[root@localhost ~]# hostnamectl set-hostname RS1
[root@localhost ~]# bash
[root@RS1 ~]#
//关闭防火墙和selinux
[root@RS1 ~]# systemctl disable --now firewalld
[root@RS1 ~]# vim /etc/selinux/config
SELINUX=disabled
//查看ip
[root@RS1 ~]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d2:6d:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.78.135/24 brd 192.168.78.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed2:6da2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
//安装httpd配置
[root@RS1 ~]# yum install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo 'RS1' > /var/www/html/index.html
[root@RS1 ~]# cat /var/www/html/index.html
RS1 //配置网卡
[root@RS1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.78.135
PREFIX=24
GATEWAY=192.168.78.134 //调度器的主机IP
DNS1=114.114.114.114
[root@RS1 ~]# systemctl restart NetworkManager

访问网页

配置RS2主机

//修改主机名
[root@localhost ~]# hostnamectl set-hostname RS2
[root@localhost ~]# bash
[root@RS2 ~]#
//关闭防火墙和selinux
[root@RS2 ~]# systemctl disable --now firewalld
[root@RS2 ~]# vim /etc/selinux/config
SELINUX=disabled
//查看ip
[root@RS2 ~]# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:db:88:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.78.136/24 brd 192.168.78.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.78.136/24 brd 192.168.78.255 scope global secondary dynamic noprefixroute ens33
valid_lft 1781sec preferred_lft 1781sec
inet6 fe80::20c:29ff:fedb:8869/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@RS2 ~]# //安装apache配置
[root@RS2 ~]# yum install httpd -y
[root@RS2 ~]# systemctl enable --now httpd
[root@RS2 ~]# echo 'RS2' > /var/www/html/index.html
[root@RS2 ~]# cat /var/www/html/index.html
RS2
//配置网卡
[root@RS2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.78.136
PREFIX=24
GATEWAY=192.168.78.134 //调度器的主机IP
DNS1=114.114.114.114
[root@RS2 ~]# systemctl restart NetworkManager

访问网页

配置LVS主机

//设置主机名
[root@localhost ~]# hostnamectl set-hostname LVS
[root@localhost ~]# bash
[root@LVS ~]#
//关闭防火墙和selinux
[root@LVS ~]# systemctl disable --now firewalld.service
[root@LVS ~]# vim /etc/selinux/config
SELINUX=disabled [root@LVS ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 //加入这一个
//让其生效
[root@LVS ~]# sysctl -p
net.ipv4.ip_forward = 1
//安装配置ipvsadm
[root@LVS ~]# yum install ipvsadm -y
[root@LVS ~]# ipvsadm -A -t 192.168.78.134:80 -s rr
[root@LVS ~]# ipvsadm -a -t 192.168.78.134:80 -r 192.168.220.135:80 -m
[root@LVS ~]# ipvsadm -a -t 192.168.78.134:80 -r 192.168.220.136:80 -m
[root@LVS ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@LVS ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.78.134:80 -s rr
-a -t 192.168.78.134:80 -r 192.168.220.135:80 -m -w 1
-a -t 192.168.78.134:80 -r 192.168.220.136:80 -m -w 1 [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 192.168.78.134:80 rr
-> 192.168.78.135:80 Masq 1 0 0
-> 192.168.78.136:80 Masq 1 0 0 [root@LVS ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.78.134
PREFIX=24
GATEWAY=192.168.78.2
[root@LVS ~]# systemctl restart NetworkManager
//访问
[root@LVS ~]# curl 192.168.78.134
RS2
[root@LVS ~]# curl 192.168.78.134
RS1

配置DR模式

  • 准备工作
服务器名称 IP 版本
lvs 192.168.78.134 centos8/redhat8
RS1 192.168.78.135 centos8/redhat8
RS2 192.168.78.136 centos8/redhat8

RS1主机

记得恢复快照

//修改主机名
[root@localhost ~]# hostnamectl set-hostname RS1
[root@localhost ~]# bash
[root@RS1 ~]#
//查看ip
[root@RS1 ~]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:d2:6d:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.78.135/24 brd 192.168.78.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed2:6da2/64 scope link noprefixroute
valid_lft forever preferred_lft forever //关闭防火墙和selinux
[root@RS1 ~]# systemctl disable --now firewalld
[root@RS1 ~]# vim /etc/selinux/config
SELINUX=disabled //安装httpd配置网页
[root@RS1 ~]# yum install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo 'RS1' > /var/www/html/index.html
[root@RS1 ~]# cat /var/www/html/index.html
RS1

RS2主机

//修改主机名
[root@localhost ~]# hostnamectl set-hostname RS2
[root@localhost ~]# bash
[root@RS2 ~]#
//ip
[root@RS2 ~]# ip a s ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:db:88:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.78.136/24 brd 192.168.78.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.78.136/24 brd 192.168.78.255 scope global secondary dynamic noprefixroute ens33
valid_lft 1781sec preferred_lft 1781sec
inet6 fe80::20c:29ff:fedb:8869/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@RS2 ~]# //关闭防火墙和selinux
[root@RS2 ~]# systemctl disable --now firewalld
[root@RS2 ~]# vim /etc/selinux/config
SELINUX=disabled
//安装apache配置
[root@RS2 ~]# yum install httpd -y
[root@RS2 ~]# systemctl enable --now httpd
[root@RS2 ~]# echo 'RS2' > /var/www/html/index.html
[root@RS2 ~]# cat /var/www/html/index.html
RS2

配置LVS主机

//修改主机名
[root@localhost ~]# hostnamectl set-hostname LVS
[root@localhost ~]# bash
[root@LVS ~]# //关闭防火墙和selinux
[root@LVS ~]# systemctl disable --now firewalld.service
[root@LVS ~]# vim /etc/selinux/config
SELINUX=disabled [root@LVS ~]# yum install net-tools -y //安装软件包
//配置dip
[root@LVS ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.78.134
PREFIX=24
GATEWAY=192.168.78.2
DNS1=114.114.114.114 //配置vip
[root@LVS ~]# ifconfig ens33:0 192.168.78.254/32 broadcast 192.168.78.254 up //配置vip为192.168.78.254 广播地址为192.168.78.254 //查看网卡
[root@LVS ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.78.134 netmask 255.255.255.0 broadcast 192.168.78.255
inet6 fe80::20c:29ff:fe8c:8ed5 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8c:8e:d5 txqueuelen 1000 (Ethernet)
RX packets 31174 bytes 18679875 (17.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30364 bytes 5067821 (4.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 //vip
inet 192.168.78.254 netmask 0.0.0.0 broadcast 192.168.78.254
ether 00:0c:29:8c:8e:d5 txqueuelen 1000 (Ethernet) lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

配置RS1的rip

注意:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告

[root@RS1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.78.135
PREFIX=24
GATEWAY=192.168.78.2
DNS1=114.114.114.114 //末尾加入下面两行
[root@RS1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
//-P 读取
[root@RS1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2 //配置vip
[root@RS1 ~]# ifconfig lo:0 192.168.78.254/32 broadcast 192.168.78.254 up
[root@RS1 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.78.135 netmask 255.255.255.0 broadcast 192.168.78.255
inet6 fe80::20c:29ff:fed2:6da2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d2:6d:a2 txqueuelen 1000 (Ethernet)
RX packets 37460 bytes 2876407 (2.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56204 bytes 10689362 (10.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.78.254 netmask 0.0.0.0
loop txqueuelen 1000 (Local Loopback)

配置RS1的rip

[root@RS2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.78.136
PREFIX=24
GATEWAY=192.168.78.2
DNS1=114.114.114.114
//末尾加入下面两行
[root@RS2 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
//-p 读取
[root@RS2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
//配置vip
[root@RS2 ~]# ifconfig lo:0 192.168.78.254/32 broadcast 192.168.78.254 up
[root@RS2 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.78.136 netmask 255.255.255.0 broadcast 192.168.78.255
inet6 fe80::20c:29ff:fedb:8869 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:db:88:69 txqueuelen 1000 (Ethernet)
RX packets 39942 bytes 3059152 (2.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 59431 bytes 11212720 (10.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 192.168.78.254 netmask 0.0.0.0
loop txqueuelen 1000 (Local Loopback)

调度器配置

//分别在三台主机上配置路由
[root@RS1 ~]# route add -host 192.168.78.254 dev lo:0
[root@RS2 ~]# route add -host 192.168.78.254 dev lo:0
[root@LVS ~]# route add -host 192.168.78.254 dev ens33:0 //调度器配置
[root@LVS ~]# yum install ipvsadm -y
[root@LVS ~]# ipvsadm -A -t 192.168.78.254:80 -s wrr
//-g表示dr模式
[root@LVS ~]# ipvsadm -a -t 192.168.78.254:80 -r 192.168.78.135:80 -g
[root@LVS ~]# ipvsadm -a -t 192.168.78.254:80 -r 192.168.78.136:80 -g
[root@LVS ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
//真机cmd命令行测试
C:\Users\wg>curl 192.168.78.254
RS1
C:\Users\wg>curl 192.168.78.254
RS2
C:\Users\wg>curl 192.168.78.254
RS1
C:\Users\wg>curl 192.168.78.254
RS2
[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 192.168.78.254:80 wrr
-> 192.168.78.135:80 Route 1 0 2//表示访问次数
-> 192.168.78.136:80 Route 1 0 2

lvs模式配置的更多相关文章

  1. LVS三种模式配置及优点缺点比较

    目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...

  2. LVS三种模式配置及优点缺点比较 转

    LVS三种模式配置及优点缺点比较   作者:gzh0222,发布于2012-11-12,来源:CSDN   目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...

  3. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  4. lvs中dr模式配置脚本

    1 dr模式介绍 1.1 lvs的安装 安装具体解释:http://blog.csdn.net/CleverCode/article/details/50586957. 1.2 lvs模式 lvs有三 ...

  5. 一些LVS实验配置、工具和方案

    最近做了一些LVS配置和方案的验证实验,将过程中用到的一些配置.工具和具体的解决方案记录一下.使用DR模式.验证一种不中断业务的RealServer升级或者重启方案. 网络规划: 节点 IP地址 ce ...

  6. LVS模式二:隧道模式(Tun)

    一.IP隧道(IP Tunneling) ip隧道是一个将ip报文封装到另一个ip报文的技术,这可以使得目标为一个ip地址的数据报文被封装和转发到另一个ip地址.ip隧道技术也成为ip封装技术.    ...

  7. LVS模式一:直接路由模式DR(Direct Routing)

    (一)LVS 一.LVS的了解 LVS(Linux Virtual Server)可以理解为一个虚拟服务器系统. Internet的飞速发展,网络带宽的增长,Web服务中越来越多地使用CGI.动态主页 ...

  8. LVS+Keepalived 配置

    LVS+Keepalived配置 环境准备 LVS1:192.168.1.1 LVS2:192.168.1.2 MySQL Server1:192.168.1.13 MySQL Server2:192 ...

  9. 使用共享网卡的NAT模式配置VMware中的CentOS的上网功能

    昨天写了一篇文章总结了前两天折腾VMware 10中的CentOS上网的问题,结果留下一下小瑕疵,就是视频教程中通过共享网卡使用NAT模式配置虚拟机的方法.今天在结合昨天的基础上终于弄明白了这个问题. ...

  10. wpa_supplicant 移植及 linux 命令行模式配置无线上网

    本文涉及内容为linux 命令行模式配置无线上网 及 wpa_supplicant 移植到开发板的过程,仅供参考. 1.源码下载 wpa_supplicant 源码下载地址 :http://hosta ...

随机推荐

  1. 【笔记】GTK的bind函数的参数

    自打用了cinnamon之后 无比想念gnome的扩展 虽然都是基于gjs的东西 但是gnome的插件在cinnamon上没有就很痛苦 这次修改了个插件 recents 记录历史打开的文件 想添加个功 ...

  2. python的惊艳之举--源于一个同事分享16种字符串反转方式

    日期:2018/12/19 最近刚学习了Python的入门课程,准备寻找你的进阶门路,偶尔得到一个老同事微信分享,标题让我这种greenhand心砰砰砰... 好了,看标题: 面试官让用 5 种 py ...

  3. BIP拓展js的使用

    __app.define("common_VM_Extend.js", function () {   var selectData = null;   var common_VM ...

  4. DELL服务器基于centos7安装OMSA

    DELL服务器基于centos7安装OMSA 参考链接: https://www.cnblogs.com/sky-cheng/p/14951071.html https://www.dell.com/ ...

  5. Oracle.DataAccess使用问题汇总

    1.使用参数化传参 先看一段sql select TABLE_COLUMN_NAME from CSV_PARA_MAPPING where TABLE_NAME = ':v_tabName' and ...

  6. nacos原理

    配置中心原理 1.Nacos 客户端使用长轮询请求客户端变更数据,并且设置30s超时,当配置发生变化响应会立即返回,否则一直等到29.5s之后再返回响应. 2.客户端的请求到达服务端后,服务端将该请求 ...

  7. Anaconda之conda常用命令介绍

    anaconda用法: 查看已经安装的包: pip list 或者 conda list 安装和更新: pip install requests pip install requests --upgr ...

  8. ABAP 删除内表重复数据

    SORT <内表> BY <字段> [ascending/descending]. DELETE ADJACENT DUPLICATES FROM <内表> COM ...

  9. vulnhub:easy_cloudantivirus靶机

    kali:192.168.111.111 靶机:192.168.111.177 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...

  10. ionic 架构

    1.路由:rout,页面内容:html,页面css:scss,js脚本内容:ts 2.功能介绍 路由:负责组织每个页面. 页面css:scss,负责定制每个组件的内容,比如组件是iobag,那么在这个 ...