精华内容
下载资源
问答
  • 虚拟IP技术-VIP 与 负载均衡
    万次阅读
    2019-01-23 20:09:10

    1.虚拟IP技术,简写VIP,Virtual IP.

    2.虚拟IP原理

    我们知道一般的IP地址是和物理网卡绑定的,而VIP相反,是不与实际网卡绑定的的IP地址。当外网的上的一个机器,通过域名访问某公司内网资源时,内网的DNS服务器会把域名解析到一个VIP上。当外网主机经过域名解析得到这个VIP后,就将数据包发往这个VIP。但是在内网中,这个VIP是不与具体的设备相连接的,所以外网发过来的目的地址是VIP的IP数据包,究竟会到哪台机器呢?

    其实,这个在内网的过程是,通过ARP协议来完成的。也就是说这个VIP可以映射到的MAC地址是可以控制的。VIP在内网中被动态的映射到不同的MAC地址上,也就是映射到不同的机器设备上,那么就可以起到负载均衡的效果啦。

    PS:VIP的概念的是LVS中一个概念,具体学习《Linux负载均衡软件LVS之概念篇》http://blog.csdn.net/wangjianno2/article/details/21291209

    原文地址:http://www.voidcn.com/article/p-rvygijjc-bhh.html

    更多相关内容
  • 原标题:微服务管理平台nacos虚拟ip负载均衡集群模式搭建 微服务管理平台nacos虚拟ip负载均衡集群模式搭建一、Nacos简介Nacos是用于微服务管理的平台,其核心功能是服务注册与发现、服务配置管理。Nacos作为服务注册...

    原标题:微服务管理平台nacos虚拟ip负载均衡集群模式搭建

    微服务管理平台nacos虚拟ip负载均衡集群模式搭建

    一、Nacos简介

    Nacos是用于微服务管理的平台,其核心功能是服务注册与发现、服务配置管理。

    Nacos作为服务注册发现组件,可以替换Spring Cloud应用中传统的服务注册于发现组件,如:Eureka、consul等,支持服务的健康检查。

    Nacos作为服务配置中心,可以替换Spring Cloud Config。

    当然Nacos作为一个微服务管理平台,除了面向spring Cloud,还支持很多其他的微服务基础设施,如:docker、dubbo、kubernetes等。除了核心的服务注册与发现和配置管理功能,还提供了各种服务管理的功能特性,如:动态DNS、服务元数据管理等。

    二、Nacos单点部署

    Nacos支持单点部署的模式,搭建过程非常简单,实际上nacos的standalone模式没有所谓的安装过程,就是下载和启动。但是这种情况没有高可用支持,所以只适合测试或学习使用。首先去nacos的github地址下载release安装包。当然你也可以自己下载源码之后进行编译打包,nacos是使用java开发的,使用maven进行编译打包。这里我们就不自己打包了,使用release安装包。下载地址是:https://github.com/alibaba/nacos/releases。在linux系统下可以使用如下的命令下载和解压缩。#下载nacos wget https://github.com/alibaba/nacos/releases/download/1.1.4/nacos-server-1.1.4.tar.gz; # 解压nacos tar -xvf nacos-server-1.1.4.tar.gz

    进入到nacos/bin目录下面,startup命令用于启动nacos,shutdown命令用于停掉nacos。

    图片:nacos启动命令

    如果你是linux/unix系统,使用sh startup.sh -m standalone脚本启动方式。

    如果你是windows系统,双击startup.cmd启动nacos。

    nacos的默认服务端口是8848,启动完成之后通过浏览器访问nacos:http://ip:8848/nacos/。看到如下界面,需要登陆,默认的用户名密码都是nacos,登陆之后看到如下界面:

    图片:浏览器访问nacos

    如果你访问不到上面的界面,请检查你部署的主机操作系统的防火墙设置。以下是为CentOS7系统防火墙开放8848端口的命令,其他系统请自行解决。firewall-cmd --zone=public --add-port=8848/tcp --permanent firewall-cmd --reload

    三、查看主机网卡设备

    使用ip addr命令查看linux主机的网络设备

    图片:主机网络设备

    第一个lo网络ip是回路ip,127.0.0.1,这个是标配

    第二个enp0s3网络设备,ip是10.0.2.15,这个是因为我的服务器网络使用了双网卡:桥接+HostOnly模式。正常的服务器是没有的。

    第三个enp0s8就是本服务器真正的使用到提供服务的网络ip,如:192.168.161.4。

    第四个网络设备是因为我在这台虚拟机上安装过docker,所以有一个docker0的网络设备。

    因为较多的网络设备,导致我在后续安装过程出现问题。这里先卖个关子。

    四、配置nacos集群

    我们准备了三台服务器(虚拟机),192.168.161.3、192.168.161.4、192.168.161.5。在三台服务器上分别下载、解压nacos,并开放8848端口。参考单点standalone部署的模式的操作。然后在conf/cluster.conf中加入三台服务器的ip配置#ip:port 192.168.161.3:8848 192.168.161.4:8848 192.168.161.5:8848

    初始化 MySQL 数据库,sql源文件是在nacos/conf解压目录下面的nacos-mysql.sql文件。sql语句源文件。并在nacos/conf/application.properties中增加mysql配置spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://192.168.161.3:3306/testdb?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=test db.password=

    spring.datasource.platform说明支持数据持久化的数据库类型,已知目前只支持mysql

    db.num数据库的数量,我们实验环境只有一个mysql数据库,所以是1

    db.url.0表示第一个mysql数据库的jdbc url连接。如果还有第二个、第三个,请增加db.url.n中的n。

    问题: 解决网卡获取的不是我们希望绑定的网卡的问题:当我们配置完成之后,使用startup.sh命令启动。发现集群节点列表中并没有任何记录。而且后台服务日志报错,内容如下:

    图片:网卡获取的不是我们希望绑定的网卡

    分析: 通过日志我们看到nacos程序自动获取的是10.0.2.15这个ip,而我们配置的是192.168.161.x的ip。二者不一致,所以报错。我们看一下获取主机ip的程序源码,如下:private static String getHostAddress() { String address = System.getProperty("nacos.server.ip"); if (StringUtils.isNotEmpty(address)) { return address; } else { address = "127.0.0.1"; } ... }

    解决方案: 看完源码之后,ip是通过System.getProperty获取的,所以我们完全可以通过JVM传参指定ip。在startup.sh的启动脚本中增加nacos.server.ip参数。#================================================================================= # JVM Configuration #================================================================================ # 单机模式对应的启动参数 if [[ "${MODE}" == "standalone" ]]; then JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m" JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true" else # 集群模式对应的启动参数 JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof" JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages" # 新增以下参数设置本机ip地址 JAVA_OPT="${JAVA_OPT} -Dnacos.server.ip=你的服务器的ip" fi

    当以上工作都完成之后,我们通过浏览器分别访问nacos服务,看到如下界面。集群管理的节点列表里面已经有三各节点,ip分别是192.168.161.3:8848、192.168.161.4:8848、192.168.161.5:8848。

    图片:nacos集群

    五、nacos集群架构

    在完成nacos集群的配置之后,我们可以通过三个入口分别访问集群内的nacos服务,那下面的问题就是如何将三个入口转成一个入口。目前许多个人开发者写的博客或教程中的方法就是在三个nacos服务的前端加一个负载均衡器,如:nginx、haproxy。然后号称是生产级别的搭建方法,但这种方法是绝对不能用于生产的,因为你的nginx和haproxy是单点,一旦nginx挂了,整个服务就挂了。

    图片:nacos集群+负载均衡

    nacos官网推荐的方法是使用虚拟ip的方法,如下:

    图片:nacos集群+虚拟ip

    最开始虚拟ip192.168.161.6可能与192.168.161.3的主机绑定在一起,通过这两个ip都可以访问192.168.161.3主机的nacos服务。

    一旦192.168.161.3主机宕机或者其他网络故障,192.168.161.6会自动切换到与192.168.161.4或者192.168.161.5主机绑定在一起。这个过程被叫做虚拟ip的漂移。

    这种虚拟ip的方法就是没有使用到负载均衡,访问的仍然是某一个节点的nacos服务,只不过形成了主从备份,提供了高可用。那既可以提供高可用,又可以提供负载均衡的办法可能有的朋友已经想到了,如下图:

    图片:nacos集群+负载均衡+虚拟ip

    在nacos服务的前端加上nginx或者haproxy的负载均衡器

    然后对负载均衡器使用虚拟ip,通过keepalived实现虚拟ip的漂移

    用户访问负载均衡器实现对nacos服务的访问,主nginx挂掉,虚拟ip漂移到从nginx负载均衡提供服务

    六、nacos集群(虚拟ip漂移)

    我们就拿官网中推荐的方法,使用虚拟ip访问nacos集群的方式做个例子讲解一下。为什么不讲第三种?一般系统架构水平到了的人听懂这种方式就知道第三种方式怎么做,水平不到的人听了第三种仍然还是不懂。

    6.1.安装配置keepalived

    在三台服务器上分别安装keepalivedyum install -y keepalived

    在三台服务器上分别修改/etc/keepalived/keepalived.confvrrp_instance VI_1 { state MASTER interface enp0s8 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.161.6 } }

    一台服务器是MASTER,其他的服务器为BACKUP

    interface 配置为我们刚刚查看的网卡的名称

    virtual_router_id 必须一致,表示这三台服务器抢用一个虚拟ip。

    修改priority 优先级,三台服务器要不一样,比如:100、101、102,优先级最高的优先使用虚拟ip。MASTER的优先级一定要高于BACKUP主机

    advert_int 是几台服务器之间的同步检查时间,1秒

    authentication 的设置必须一致,这样这几台服务器才能通信

    修改virtual_ipaddress为三台服务器所在网段内未被占用的IP地址,比如:192.168.161.6

    6.2.修改防火墙CentOS7必须开放防火墙配置,否则三台主机无法就虚拟ip的使用优先级通信,将都是MASTER,都配置虚拟ip。firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --protocol vrrp -j ACCEPT; firewall-cmd --reload;

    6.3.启动keepalived服务sudo systemctl restart keepalived.service

    推荐:SpringBoot系列精品文章(16章97节), http://springboot.zimug.com 本号只做持续的知识输出,希望您能关注、评论、转发!您的支持是我不竭的创作动力!让知识产生价值、让程序员改变世界!返回搜狐,查看更多

    责任编辑:

    展开全文
  • ip负载均衡技术是在负载调度器的实现技术中时最高效的,在已有的ip负载均衡技术中主要有通过网络地址转换,将一组服务器构建成一个高性能的,高可用的虚拟服务器我们称之为VS/NAT技术。 在分析VS/NAT的缺点和网络...

    ip负载均衡技术是在负载调度器的实现技术中时最高效的,在已有的ip负载均衡技术中主要有通过网络地址转换,将一组服务器构建成一个高性能的,高可用的虚拟服务器我们称之为VS/NAT技术。
    在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了VS/TUN和直接通过路由实现虚拟服务器的方法VS/DR,他们可以极大的提高系统的伸缩性

    LVS三种模式的特点:

    `VS/NATVS/TUNVS/DR
    服务器操作系统任意支持隧道多数(支持Non-arp )
    服务器网络私有网络局域网/广域网局域网
    服务器数目(100M网络)10-20100多(100)
    服务器网关负载均衡器自己的路由自己的路由
    效率一般最高

    管理 LVS 的虚拟服务
    -A 增加 ipvsadm 在内核列表中增加一个新的调度服务,也可以理解为添加一主机。
    -s 指定该调度服务使用到算法。
    -t|-u指定IP地址和端口,t表示TCP协议,u表示UDP协议。
    -E 编辑已经存在的调度列表。
    -D 删除某条调度列表。

    管理 LVS 的真实服务器
    -a 增加一个IP地址来参与响应请求服务。
    -t|-u指定调度列表中主机的IP地址和端口,t表示TCP协议,u表示UDP协议。
    -r 指定参与响应请求的IP地址和端口。
    -g 表示DR模式
    -i 表示TUN模式
    -m 表示NAT模式
    -w 指定权重,供那些加权算法参考,如1、2、3。
    -e 编辑指定的真实服务器。
    -d 删除指定的真实服务器。

    查看和管理当前 LVS 配置
    -C 清空所有配置列表。
    -Z 清零当前连接计算器。
    -l 显示当前内核LVS状态。
    -c 显示当前LVS的连接情况,配合l使用。
    –stats显示统计数据。
    –rat显示速率数据。
    –sort对输出进行排序。
    -n不进行主机名解析,直接输出IP,加快显示速度。

    LVS 调度算法
    rr 轮叫(Round Robin) 调度器通过"轮 叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务 器,而不管服务器上实际的连接数和系统负载。
    wrr 加权轮叫(Weighted Round Robin) 调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调 度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
    lc 最少链接(Least Connections) 调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链 接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。
    wlc 加权最少链接(Weighted Least Connections) 在集群系统中的服务器性能差异较大 的情况下,调度器采用"加权最少链接"调度
    算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
    lblc 基于局部性的最少链接(Locality-Based Least Connections) “基于局部性的最少链接” 调度算法是针对目标IP地址的负载均衡,目前主要 用于Cache集群系统。该算法根据请求的目标IP地
    址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若
    服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。
    lblcr 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication) "带复制的基于局部性最少链接"调度算法也是 针对目标IP地址的负载均衡,目前主要用于Cache集
    群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地 址到一组服务器的映射,而LBLC算法维护从一个目标IP地
    址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一台服务器,将该服务
    器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
    dh 目标地址散列(Destination Hashing) "目标地址散列"调 度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
    sh 源地址散列(Source Hashing) "源地址散列"调 度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

    VS/DR 通过直接路由实现虚拟服务器
    输入层:负载均衡高可用
    首先 配置服务器的yum源
    将有关负载均衡以及高可用的套件加进去
    这里写图片描述
    然后下载安装ipvsadm
    添加
    这里写图片描述
    由于目前没有100ip 所以先加入vip
    同时服务端也需要添加vip 原因是因为tcp的三次握手
    Ip addr add 172.25.19.100/24 dev eth0
    但是从这里看 这几台设备都有100地址 呢么访问100 的时候谁先相应就用谁的
    呢么运气不好的条件下 我们所作的负载均衡就失去了效果
    呢么就需要在两台真实服务器中 (可以参考红帽官网的文档)
    下载arptables_jf
    这里写图片描述
    当然这个ip与你的vip保持相同
    这里写图片描述
    将他保存下来
    这个是效果
    这里写图片描述
    Ldirectord
    下载

    yum install ldirectord-3.9.5-3.1.x86_64.rpm 
    [root@server1 ~]# rpm -ql ldirectord
    /etc/ha.d
    /etc/ha.d/resource.d
    /etc/ha.d/resource.d/ldirectord
    /etc/init.d/ldirectord
    /etc/logrotate.d/ldirectord
    /usr/lib/ocf/resource.d/heartbeat/ldirectord
    /usr/sbin/ldirectord
    /usr/share/doc/ldirectord-3.9.5
    /usr/share/doc/ldirectord-3.9.5/COPYING
    /usr/share/doc/ldirectord-3.9.5/ldirectord.cf
    /usr/share/man/man8/ldirectord.8.gz
    [root@server1 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf
    cp: missing destination file operand after `/usr/share/doc/ldirectord-3.9.5/ldirectord.cf'
    Try `cp --help' for more information.
    [root@server1 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
    [root@server1 ~]# cd /etc/ha.d/
    [root@server1 ha.d]# ls
    ldirectord.cf  resource.d  shellfuncs
    [root@server1 ha.d]# vim ldirectord.cf 
    『
    virtual=172.25.19.100:80  vip
            real=172.25.19.2:80 gate  真实服务器主机的ip
            real=172.25.19.3:80 gate   真实服务器主机的ip
            fallback=127.0.0.1:80 gate 
            service=http
            scheduler=rr
            #persistent=600
            #netmask=255.255.255.255
            protocol=tcp
            checktype=negotiate
            checkport=80
            request="index.html"
    #       receive="Test Page"
    #       virtualhost=www.x.y.z
    
    』
    [root@server1 ha.d]# ipvsadm -C #将原来自己编写的一些规则刷掉
    [root@server1 ha.d]# ipvsadm -l
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    

    启动 ld
    然后 策略会自动编写在ipvsadm 里面
    当一台服务器挂掉后 不再会调用挂掉的服务器
    以下为结果
    这里写图片描述
    当一台服务器挂掉后 就不会伦叫错误的
    两台都挂掉了后 会调用主机的

    Ld实现了对服务健康的检测
    关掉ld
    负载均衡高可用

     211  tar zxf keepalived-2.0.6.tar.gz  #解压这个包
      212  cd keepalived-2.0.6   #进入该目录
      213  ls
      214  ./configure --prefix=/usr/local/keepalived --with-init=SYSV
      218  yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm 
      220  ./configure --prefix=/usr/local/keepalived --with-init=SYSV
      224  yum install openssl-devel  
      225  ./configure --prefix=/usr/local/keepalived --with-init=SYSV
             make  #解决完它的error 然后make
      240  make install  
      244  cd /usr/local/
      245  ls
      246  cd keepalived/
      261  cd etc/rc.d/
      262  ls
      263  cd init.d/
      264  ls
      265  chmod +x keepalived  #为该脚本增添可执行权限
      292  ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d #建立软连接
      293  ln -s /usr/local/keepalived/etc/keepalived /etc/
      294  ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
      295  ln -s /usr/local/keepalived/sbin/keepalived /sbin/
      296  which keepalived 
      297  /etc/init.d/keepalived start
      298  cd /usr/local/
      299  ls
      300  scp -r keepalived/ server4:/usr/local/ #同样的需要在另外一台服务机器作相同的配置
      302  yum install -y mailx
      303  vim /etc/keepalived/keepalived.conf 
      304  ip addr del 172.25.19.100/24 dev eth0
      305  ip addr
      306  ip addr del 172.25.19.200/24 dev eth0
      307  ipvsadm -l
      308  ipvsadm -C
      309  ipvsadm -l
      310  /etc/init.d/ldirectord stop
      311  ipvsadm -l
      312  ls
      313  cd /etc/keepalived/
      314  ls
      315  scp keepalived.conf server4:/etc/keepalived/
      316  /etc/init.d/keepalived restart
      317  ipvsadm -l
      318  iptables -l
      319  iptables -L
      320  vim /etc/keepalived/keepalived.conf 
      321  iptables -F
      322  iptables -L
      323  /etc/init.d/keepalived restart
      324  ipvsadm -l
      325  iptables -L
      326  ipvsadm -l
      327  ip addr
      328  cat /var/log/messages 
      329  ipvsadm -L
      330  ipvsadm -l
      331  ip addr
      332  ip addr -d 172.25.19.100/32
      333  ip addr -d 172.25.19.100/32 dev eth0
      334  ip addr -del 172.25.19.100/32 dev eth0
      335  ipvsadm
      336  vim /etc/keepalived/keepalived.conf 
      337  iptables 0L
      338  iptables -L
      339  /etc/init.d/keepalived restart
      340  ipvsadm
      341  ipvsadm -L
      342  vim /etc/keepalived/keepalived.conf 
      343  /etc/init.d/keepalived restart
      344  vim /etc/keepalived/keepalived.conf 
      345  /etc/init.d/keepalived restart
    
    
       20  yum install -y mailx
       21  vim /etc/keepalived/keepalived.conf 
       22  /etc/init.d/keepalived restart
       23  cd 
       24  vim /var/spool/mail/root 
       25  vim /etc/keepalived/keepalived.conf 
       26  /etc/init.d/keepalived restart
       27  cat /var/log/messages 
       28  vim /etc/keepalived/keepalived.conf 
       29  /etc/init.d/keepalived restart
       30  > /var/log/messages 
       31  /etc/init.d/keepalived restart
       32  cat /var/log/messages 
       33  vim /etc/keepalived/keepalived.conf 
       34  /etc/init.d/keepalived restart
       35  vim /etc/keepalived/keepalived.conf 
       36  /etc/init.d/keepalived restart
       37  history 
    

    下面VS/TUN ip隧道实现虚拟服务器 以及NAT实现虚拟服务器 为自己的理解 不足之处还往指出

    		     示意图哦
    

    这里写图片描述
    172.25.19.1 ipvsadm主机
    172.25.19.119 VIP
    172.25.19.2
    。。。
    这里写图片描述
    会出现tun这个接口
    当然rs上也需要出现该端口

    vs
    
     (如果有两个网卡,可以将VIP地址配置到另一个网卡上)
    ip addr add 172.25.19.119/24 dev tunl0
    
    ipvsadm -A -t 172.25.19.119:80 -s rr
    ipvsadm -a -t 172.25.19.119:80 -r 172.25.19.2:80 -i
    ipvsadm -a -t 172.25.19.119:80 -r 172.25.19.3:80 -i
    
    ipvsadm -a -t 172.25.19.119:80 -r 172.25.19.1:80 -i  #别的挂了的话vs也可以自己上
     
    
    rs1 rs2
    ip addr add 172.25.19.119/24 dev tunl0
    作一下arp抑制 与dr 相同参考上面
    将 tunl打开 ip link set up tuml0 
    需要将 sysctl -w net.ipv4.conf.tunl0.rp_filter 关闭 
    系统的话默认不接受不由直接连接的网络所传递来的数据包
    rs1: ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  172.25.19.119:80 rr
      -> 172.25.19.1:80             Local   1      1          0        
      -> 172.25.19.2:80             Tunnel  1      1          0        
      -> 172.25.19.3:80             Tunnel  1      1          0
    

    这里写图片描述
    说明

    访问172.25.19.119能出现轮训不同的页面即表示搭建LVS成功。
    Forward为Tunnel即为IP隧道模式tun。
    Weight表示权重。
    ActiveConn是表示处于TCP的ESTABLISHED(确定建立)状态的连接数目,ActiveConn的各项总和即为当前已建立连接的总和。
    InActConn表示处于TCP的非ESTABLISHED状态的连接数目,包括SYN_RECEIVED, TIME_WAIT, CLOSE_WAIT状态等等。
    结果:
    这里写图片描述

    NAT:
    这里写图片描述
    首先配置以下环境
    sever1作为vs (双网卡)
    sever2、sever3作为rs
    同样的yum源需要全部设置出来
    2.下载ipvsadm
    [root@server1: ~]# yum install ipvsadm -y
    下载完成后启动
    [root@server1: ~]# /etc/init.d/ipvsadm start
    3.打开内部路由设置

    [root@server1: ~]# vim /etc/sysctl.conf
    7 net.ipv4.ip_forward = 1 ##0=关闭 1=开启
    [root@server1: ~]# sysctl -p
    net.ipv4.ip_forward = 1
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
    error: “net.bridge.bridge-nf-call-iptables” is an unknown key
    error: “net.bridge.bridge-nf-call-arptables” is an unknown key
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296

    4.添加ipvsadm规则

    [root@server1: ~]# ipvsadm -A -t 172.25.254.119:80 -s rr
    [root@server1: ~]# ipvsadm -a -t 172.25.254.119:80 -r 172.25.19.2:80 -m
    [root@server1: ~]# ipvsadm -a -t 172.25.254.119:80 -r 172.25.19.3:80 -m
    [root@server1: ~]# ipvsadm -L -n
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  172.25.254.191:80 rr
      -> 172.25.19.2:80               Masq    1      0          0         
      -> 172.25.19.3:80               Masq    1      0          0        
    

    2.server(2)

    1.下载http服务

    [root@server2: network-scripts]# yum install httpd -y
    [root@server2: network-scripts]# cat /var/www/html/index.html 
    server2
    [root@server2: network-scripts]# /etc/init.d/httpd    restart
    

    2.配置RS的网关指向vs

    [root@server2: network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
    DEVICE="eth0"
    BOOTPROTO="static"
    ONBOOT="yes"
    IPADDR=172.25.19.2
    PREFIX=24
    GATEWAY=172.25.19.1
    DNS1=114.114.114.114
    

    3.server(3)

    1.下载http服务

    [root@server3: network-scripts]# yum install httpd -y
    [root@server3: network-scripts]# cat /var/www/html/index.html 
    server3
    [root@server3: network-scripts]# /etc/init.d/httpd    restart
    

    配置真实服务器的网管 使其指向VS
    这里写图片描述
    这里写图片描述

    展开全文
  • IP负载均衡(LVS)

    千次阅读 2022-01-02 21:38:17
    负载均衡 文章目录负载均衡一、配置环境1 配置虚拟机2.制作母盘3.创建虚拟机二、负载均衡实现1.配置DR和VS2.测试效果三、keepalived+LVS1.问题展示2.实验准备3.配置keepalived4.配置辅助DR 提示:以下是本篇文章...

    负载均衡



    提示:以下是本篇文章正文内容,下面案例可供参考

    一、配置环境

    1 配置虚拟机

    1.配置一个母盘
    本次实验用的是红帽7.6系统,首先准备一个7.6版本的系统镜像,将这个系统先安装成一个虚拟机。

    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述然后我们就可以得到一个清爽干净的7.6系统了

    在这里插入图片描述

    2.制作母盘

    配置ip
    在这里插入图片描述
    systemctl restart network
    在这里插入图片描述配置repo
    在这里插入图片描述配置完仓库就可以安装一些必要的软件了
    比如vim,http之类的
    之后就是一些配置

    selinux给disabled掉
    在这里插入图片描述

    关火墙,网络管理器
    systemctl disable --now firewalld
    systemctl disable --now NetworkManage

    配置解析
    在这里插入图片描述

    3.创建虚拟机

    回到真机中,先安装一个清盘工具

    dnf install libguestfs-tools-c.x86_64

    安后做清盘操作
    后面的shy是前面创建的母盘名称
    在这里插入图片描述之后需要可以对母盘压缩,但是空间不够也可以不压缩,如下显示为空间不够提示,这时候就不要压缩了
    在这里插入图片描述利用母盘生成三个虚拟机
    在这里插入图片描述
    完事后
    首先先来配置下ip
    由于之前母盘中基本都写差不多了
    进入ifcfg文件中稍作修改即可
    server1:172.25.254.101
    server2:172.25.254.102
    server2:172.25.254.103

    二、负载均衡实现

    1.配置DR和VS

    本节实验实现的是通过直接路由实现虚拟服务器(VS/DR)
    我们将server1设定为DR
    将server2和server3设定为VS
    那么在server1中
    首先我们需要安装ipvsadm
    ‘yum install -y ipvsadm’
    然后做一个vip
    ‘ip addr add 172.25.254.180/24 dev eth0’
    在这里插入图片描述
    在这里插入图片描述

    在server2中
    安装开启apache服务
    yum install httpd
    systemctl start httpd
    书写一个默认发布文件以便测试
    在这里插入图片描述设定vip
    ip addr add 172.25.254.180 dev eth0
    在这里插入图片描述server3的设定与此一致,只需要将对应的数字稍作修改即可

    此时设定的状态ip负载可以分配成功,但不会返回
    此时我们需要去做RS的设置
    这里我们介绍arptables的方法
    使用之前分别在server2和server3安装arptables
    下面还是先以2为例演示操作
    yum install -y arptables

    安装完成后,开始相应的配置
    1.书写策略文件,隐藏172.25.254.180
    arptables -A IN -d <virtual_ip> -j DROP
    arptables -A OUTPUT -s 172.25.254.180 -j mangle --mangle-ip-s 172.25.254.102
    在这里插入图片描述
    查看一下策略文件是否添加上了
    在这里插入图片描述
    2.保存策略文件
    arptables-save > /etc/sysconfig/arptables
    这步可以防止重启后策略丢失

    删除策略的操作
    arptables -D INPUT -j DROP -d 172.25.254.180

    3.设定vip
    ip addr add 172.25.254.180/32 dev eth0
    在这里插入图片描述然后如法炮制,对server进行设定,就是将server中的ip用户位改为server3的用户位值就可以了。
    对应大致步骤大致如下
    在这里插入图片描述

    2.测试效果

    下面就是测试环节
    打开真实主机
    访问172.25.254.180
    在这里插入图片描述
    可以看到实现了负载均衡

    三、keepalived+LVS

    在负载均衡已经实现的前提下
    不难发现其中问题所在
    在本次实验中
    如果server2挂掉了,那么将会有一半的用户出现访问被拒的现象,这很显然是不应该出现的一件事
    那么我们要做的首要的一件事就是

    健康监测

    其次就是LVS出现故障挂掉了,那么server2,server3就全都不能再正常工作,也是不能出现的状况,所以我们要做的第二件事情就是保证有备选项来接手工作,这就是我们需要做的第二件事

    主备冗余

    那么知道的问题所在,就要开始解决问题了

    1.问题展示

    关掉server2的http服务,相当于server2挂掉了
    systemctl stop httpd.service
    打开真机
    curl 172.25.254.180
    在这里插入图片描述可以看到分配到server2上的用户都被拒掉了
    针对这个
    下面首先来看健康监测的实现

    2.实验准备

    为了使测试的效果更加直观
    我们做如下步骤

    我们首先也再server1中写一个默认发布文件

    yum install http -y
    systemctl start httpd.service
    echo server1 > /var/www/html/index.html
    

    清空上个实验的数据
    删掉vip
    ip addr del 172.25.254.180/24 dev eth0
    删掉手动添加的真实ip,即server2和server3的记录
    ipvsadm -C
    删除完成后可以看到vip没了
    在这里插入图片描述

    ipvsadm -ln
    在这里插入图片描述

    3.配置keepalived

    打开server1
    安装keepalived
    yum install keepalived -y
    然后对配置文件进行编辑
    cd /etc/keepalived/
    vim keepalived.conf
    在这里插入图片描述
    文件中的内容全部如下,可以直接复制粘贴(前面的数字为序号,不是配置文件内容)

    配置文件主要内容就是第一部分的邮件发送的配置,用于提示出错时的信息。
    主DR的设置,优先级的设置,然后设置虚拟ip就是前面不断提到的vip,以及真实主机的ip设定,即本次实验中的server2和server3。

      1 ! Configuration File for keepalived
      2 
      3 global_defs {
      4    notification_email {
      5      root@localhost
      6    }
      7    notification_email_from keepalived@localhost
      8    smtp_server 127.0.0.1
      9    smtp_connect_timeout 30
     10    router_id LVS_DEVEL
     11    vrrp_skip_check_adv_addr
     12 #   vrrp_strict
     13    vrrp_garp_interval 0
     14    vrrp_gna_interval 0
     15 }
     16 
     17 vrrp_instance VI_1 {
     18     state MASTER
     19     interface eth0
     20     virtual_router_id 51
     21     priority 100
     22     advert_int 1
     23     authentication {
     24         auth_type PASS
     25         auth_pass 1111
     26     }
     27     virtual_ipaddress {
     28         172.25.254.180
     29     }
     30 }
     31 
     32 virtual_server 172.25.254.180 80 {
     33     delay_loop 6
     34     lb_algo rr
     35     lb_kind DR
     36 #    persistence_timeout 50
     37     protocol TCP
     38 
     39     real_server 172.25.254.102 80 {
     40         weight 1
     41         TCP_CHECK {
     42             connect_timeout 3
     43             delay_before_retry 3
     44         }
     45     }
     46     real_server 172.25.254.103 80 {
     47         weight 1
     48         TCP_CHECK {
     49             connect_timeout 3
     50             delay_before_retry 3
     51         }
     52     }
     53 }
    

    此时健康监测的部分就完成了
    那么还有一个需要解决的问题就是前面提到的server1挂掉的问题,即做主备冗余。
    那么就新开一个server4,作为server1的辅助DR

    4.配置辅助DR

    先用第一节中提到的母盘生成虚拟机server4
    cd /var/lib/libvirt/images/
    qemu-img create -f qcow2 -b shy.qcow2 server4
    生成完server4后开启它

    安装ipvsadm 和 keepalived
    yum install ipvsadm keepalived -y
    然后将server1中配置好的keepalived配置文件复制到server4中
    因为文件内容大致相同,我们只需要稍作更改

    切换到server1
    cd /etc/keepalived/
    scp keepalived.conf root@172.25.254.104:/etc/keepalived/
    将配置文件传输到server4后
    切换到server中修改配置文件
    在这里插入图片描述
    只需要更改这两个地方,意思就是将状态设置为辅助DR,优先级50,低于主DR的100即可。
    然后再和主DR一样开启服务
    systemctl start keepalived.service

    开始测试之前可以再做一遍检测工作
    server1和server4
    ip addr
    没有vip
    ipvsadm -ln
    没有server2和sever3的信息
    (为了看到实验效果)

    server2和server3
    开启apache服务
    ip addr
    查看,必须有vip
    本章实验为172.25.254.180

    然后先将server1和server4分别开启keepalived
    systemctl start keepalived.service

    然后就可以看到server1和server4都自动生成了vip和server2,server3的信息。
    在这里插入图片描述
    测试

    一开始都是会正常工作
    在这里插入图片描述
    挂掉server2

    在server2中关掉httpd
    systemctl stop httpd

    在server1中的效果
    在这里插入图片描述
    在真机中访问就会全部由server3承担
    在这里插入图片描述
    这就是健康监测生效,不会出现访问失败的现象
    再测试一下主备冗余
    停掉server1的keepalived服务,就是停掉主DR
    systemctl stop keepalived.service
    再回到主机中进行测试
    依旧可以正常访问
    在这里插入图片描述
    说明server4,辅助DR生效。

    展开全文
  • f5负载均衡虚拟ip

    2021-08-08 06:32:44
    f5负载均衡虚拟ip 内容精选换一换创建私网类型的负载均衡器。创建成功后,该接口会返回创建的负载均衡器的ID、所属子网ID、负载均衡器内网IP等详细信息。若要创建公网类型的负载均衡器,还需调用创建浮动IP的接口,...
  • 用于控制平面和Kubernetes服务的Kubernetes虚拟IP负载均衡器 kube-vip背后的想法是一个针对所有环境的小型独立的高度可用选项,尤其是: 裸机 Edge(手臂/ Raspberry PI) 虚拟化 几乎其他任何地方:) 注意现在...
  • 本文主要讲述了LVS集群中的三种IP负载均衡技术。在分析网络地址转换方法(VS/NAT)的缺点和网络服务的非对称性的基础上,我们给出了通过IP隧道实现虚拟服务器的方法VS/TUN,和通过直接路由实现虚拟服务器的方法VS/DR...
  • 网络虚拟化,顾名思义,就是让...提到网络虚拟化,我们就可以联想到负载均衡技术,该技术通过构建一个虚拟化的访问地址,将我们的请求均衡的分配到多个服务器上去,实现虚拟化后端网络服务,同时,还达到了均衡服务...
  • LVS负载均衡虚拟主机IP隧道模式

    千次阅读 2018-03-29 02:00:50
    本文包含LVS负载均衡IP隧道模式的工作原理,以及如何使用它以大大提高服务器集群的扩展性。 IP隧道-IP tunneling IP隧道(IP封装)是一种将IP数据报封装到IP数据报中的技术,它允许将预定IP地址的数据报包装并重...
  • 负载均衡技术通过设置虚拟服务器IP(VIP),将后端多台真实服务器的应用资源虚拟成一台高性能的应用服务器,通过负载均衡算法,将大量来自客户端的应用请求分配到后端的服务器进行处理。负载均衡设备持续的对服务器...
  • 利用BGP虚拟下一跳技术实现IP骨干网流量负载均衡.doc
  • 利用BGP虚拟下一跳技术实现IP骨干网流量负载均衡参照.pdf
  • nginx多域名同ip负载均衡

    千次阅读 2018-04-10 09:16:22
    用户通过不同的域名,访问同一个nginx,实现不同ip的代理。 a.domain.com 和 c.domain.com的域名解析地址是相同的,但内部代理到不同的ip处理 通过nginx的$host变量和upstream的方式 user root root; ...
  • 负载均衡策略/方式(轮询、权重、ip_hash) session共享 使用集群中的session,由于是多个web容器,每个之间的session不互通,所以使用session会话会在集 群结构时失效,例如登录逻辑,会频繁失败,重新登录。
  • 该问题属于"脑裂"什么是"脑裂"?由于无法描述的原因...现象就是主从节点负载均衡服务器同时拥有虚拟ip的问题:主节点真实ip:192.168.1.101 虚拟ip:192.168.1.100从节点真实ip:192.168.1.102...
  • 用户向负载均衡器的VIP(虚拟IP)发起请求VIP 连接到一台或多台服务器SLB设备始终监控真实服务器的健康状况如果健康检查失败,该服务器将从可用真实服务器列表中去除流量根据4-7层信息重定向根据多种因素分配流量,...
  • LVS负载均衡器的原理简单介绍

    千次阅读 2022-02-14 16:59:34
    LVS(Linux Virtual Server)Linux虚拟服务器,通过虚拟IP来接受请求,通过一定的方法(由LVS的模式决定)转发到对应的real server(RS)实际服务器,达到流量分发、负载均衡的目的。该项目是由我国的章文嵩博士主导...
  • TCP/IP的三层负载均衡

    2020-10-25 15:38:05
    三层负载是针对IP,和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址。...三层负载均衡会通过一个虚拟 IP 地址接收请求,然后再分配到真实的 IP 地址 ...
  • 调度器的实现技术中,IP负载均衡技术是效率最高的,IP虚拟服务器软件(IPVS)是在linux内核中实现的。
  • 深入理解负载均衡

    千次阅读 2022-02-04 13:47:39
    文章目录负载均衡分类四层负载均衡真的是在四层吗数据链路层负载均衡网络层负载均衡IP隧道传输(IP Tunnel)网络地址转换(NAT)负载均衡到底是转发还是代理总结 负载均衡分类 工作学习中我们接触过形形色色的负载...
  • https://blog.csdn.net/qq_35611533/article/details/51917310 http://guanjianfeng.com/archives/1157820
  • Nginx负载均衡高可用

    2021-02-25 01:14:16
    本文来自于cnblogs,介绍了什么是负载均衡高可用,什么是keepalived,keepalived+nginx实现主备等。首先介绍一下Keepalived,它是一个高性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的...
  • 使用阿里云SLB负载均衡(云起实验室)
  • 常见的负载均衡器(一)

    千次阅读 2022-04-26 13:56:16
    常见的负载均衡器(一)前言一、LB集群是什么LB集群HA集群HPC集群二、负载均衡类别负载均衡主要方式四层负载均衡和七层负载均衡代理 前言 LB(Load Balance)集群,负载均衡集群,是以提高服务的并发处理能力为...
  • Nginx 反向代理、负载均衡虚拟主机

    千次阅读 多人点赞 2021-08-12 19:20:13
    文章目录一、代理原理二、正/反向代理的区别1、正向代理2、反向代理三、配置Nginx-Proxy1、代理模块2、代理配置3、 proxy 代理实例 ...需要有一个负载均衡设备(即反向代理服务器)来分发用户请求,
  • 负载采用多台服务器组成,对外虚拟出一个IP进行通信。日常业务开展中不适合部署数据库,且对存储有一定的要求,推荐以Nas存储为主,分布式存储、统一存储都可以;而San存储做负载可用性不太大,故不推荐。
  • SLB(服务器负载均衡):在多个提供相同服务的服务器的情况下,负载均衡设备存在虚拟服务地址,当大量客户端从外部访问虚拟服务IP地址时,负载均衡设备将这些报文请求根据负载均衡算法,将流量均衡的分配给后台...
  • Windows Server 2016 安装网络负载均衡

    千次阅读 2021-12-01 13:38:19
    文章目录Windows Server 2016 安装网络负载均衡一、Windows安装...本文在虚拟化环境下进行,两台Windows Server服务器IP地址分别为10.13.109.8和10.13.109.9,准备做的网络负载均衡NLB地址为10.13.109.20 一、Windows

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,120
精华内容 34,848
关键字:

虚拟ip 负载均衡

友情链接: WZQ.rar