LVS + keepalived DR 模式

Stella981
• 阅读 545

第1章 LVS  + keepalived 负载均衡安装配置笔记

经安装测试能够实现我的这些需要:

  • 双机或多机实现虚拟IP,能够实现IP故障切换
  • 能够连接多台后端真实服务器,实现后端服务器的负载均衡
  • 能够实现双机热备份(同一时间单机工作,故障后切换到另一台)
  • 能够双机虚拟IP且负载均衡(双机即做调度器又做真实服务器)

1.1 LVS (Linux Virtual Server)

虚拟IP,负载均衡调度器,但需要手工动态增加命令,所以需要keepalived来实现自动配合。虚拟IP同时只能存在于某一台机器上,此时称为master机,其它为backup机。 
安装:ubuntu上直接用apt-get install ipvsadm,装完后为自启动服务。剩下的事就交给keepalived管理了,不需要手工配置LVS。

1.2 Keepalived

根据配置文件进行监控,向LVS提供信息,自动检测各调度器可用性,从而实现虚拟IP(即master机)由哪台机器服务。就是指定哪些机器一块虚拟出哪个IP。还有在虚拟的IP上提供哪个端口映射到哪些后端真实服务器从而实现后端服务的负载均衡(可自动检测出哪些不可用) 
安装:ubuntu上直接用apt-get install keepalived,装完后为自启动服务。然后在/etc/keepalived/中增加配置keepalived.conf

1.3 基本网络结构

一般需要4台机器,2台做为双机备份的调度器(VIP同时只能存在其中一台机上,另一台闲着的),另2台做为真实应用服务器(realserver)如web服务器。其中调度器可以增加为多台(浪费),realserver也可以增加为多台。设: 
虚拟VIP:10.0.0.110
调度器A:10.0.0.101 (装lvs+keepalived+配置) 
调度器B:10.0.0.102 (装lvs+keepalived+配置) 
realserverA:10.0.0.103 (需要启动realserver.sh脚本) 
realserverB:10.0.0.104 (需要启动realserver.sh脚本)

1.4 keepalived.conf

global_defs {

         router_id webHA

         }

vrrp_instance VI_1 {    #调度器虚拟IP切换配置

        state MASTER   #一台为MASTER,另一台为BACKUP。或者两台均是BACKUP

        interface ens33

        virtual_router_id 51   

        priority 100   #优先级,另一台改为90

        advert_int 1    #组播信息发送间隔,两个节点设置必须一样

        nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置

        authentication {

          auth_type PASS

          auth_pass 1111

        }

        virtual_ipaddress {

          10.0.0.110

        }

    }

virtual_server 10.0.0.110 80 {  #负载均衡配置 (重要:端口必须与realserver端口一致,不能更改)

        delay_loop 5   #每个5秒检查一次real_server状态

        lb_algo wrr   #LVS算法

        lb_kind DR    #LVS模式

        persistence_timeout 10   #会话保持时间

        protocol TCP

        real_server 10.0.0.103 80 {

            weight 1           

            TCP_CHECK {

              connect_timeout 5    #连接超时时间

              nb_get_retry 2       #重连次数

              delay_before_retry 3   #重连间隔时间

              connect_port 80   #健康检查端口

            }

        }

        real_server 10.0.0.104 80 {

            weight 1

            TCP_CHECK {

              connect_timeout 5    #连接超时时间

              nb_get_retry 2       #重连次数

              delay_before_retry 3   #重连间隔时间

              connect_port 80   #健康检查端口

            }

        }

    }

两台调度器做好配置后,重启service keepalived restart,即可实现2台调度器上的VIP切换(关掉机器或断掉网络或关掉keepalived都可以使VIP切换)。

重要:要使服务转接到后端realserver实现负载均衡,realserver上必须运行一个脚本用来修改网络配置,不能realserver会产生对VIP的冲突,原理暂时我还不清楚。

重要:虚拟VIP实现的服务端口必须与realserver上的服务端口一致,不能更改成其它端口,否则不能转接到realserver****。

可以在2****台调度器机器上运行 ipvsadm -ln 来查看后方realserver的状态。没有显示出来的则表示该realserver有问题,能显示的代表realserver服务正常,但不一定从VIP访问就是OK****的

1.5 realserver.sh脚本

以下脚本是放在rs节点服务器上的

#!/bin/bash

# description: Config realserver lo and apply noarp

#Written by :NetSeek http://www.yaodouwang.com

VIP=10.0.0.110

case "$1" in

start)

    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP

    /sbin/route add -host $VIP dev lo:0              

    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 "2" >/proc/sys/net/ipv4/conf/all/arp_announce

    sysctl -p >/dev/null 2>&1

    echo "RealServer Start OK"

    ;;

stop)

    ifconfig lo:0 down

    route del $VIP >/dev/null 2>&1             

    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 "RealServer Stoped"

    ;;

*)

    echo "Usage: $0 {start|stop}"

    exit 1

esac

exit 0

完成上面步骤后,就可以虚拟IP并且负载均衡了。

1.6 keepalived绑定公网IP方法

添加一块网卡

LVS + keepalived DR 模式

LVS + keepalived DR 模式

确定之后进入虚拟机,ip a命令会出现网卡信息

 LVS + keepalived DR 模式

可以看到我这里有个刚添加的网卡,keepalived配置文件设置的虚拟IP绑定到这个网卡上

 LVS + keepalived DR 模式

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
2年前
Nginx+Keepalived实现站点高可用
公司内部OA系统要做线上高可用,避免单点故障,所以计划使用2台虚拟机通过Keepalived工具来实现nginx的高可用(HighAvaiability),达到一台nginx入口服务器宕机,另一台备机自动接管服务的效果。(nginx做反向代理,实现后端应用服务器的负载均衡)快速搭建请直接跳至第2节。1\.Keepalived介绍
Stella981 Stella981
2年前
Keepalived+Nginx实现高可用和双主节点负载均衡
简介Nginx可以实现高并发反向代理,lvs集群可以实现负载均衡,但是他们都有一个共同的弊端,就是Nginx,lvs架构中Director是单点故障,有没有一个好的方案解决这个问题呢?答案是有。通过Keepalived就可以实现,前端Nginx,lvs中Director服务器的高可用和负载均衡,通过shell命令或者脚本可以实现对服务器状态和服务的监控!
Stella981 Stella981
2年前
Keepalived+LVS
LVS架构中,不管是NAT模式还是DR模式,当后端的RS宕掉后,调度器依然会把请求转发到宕掉的RS上,这样的结果并不是我们想要的。其实,keepalived就可以解决问题,它不仅仅有高可用的功能,还有负载均衡。也就是说keepalived已经嵌入了LVS功能,完整的keepalivedLVS架构需要有两台调度器实现高可用,提供调度器的只需要一台,另外一台作
Stella981 Stella981
2年前
LVS+keepalived实现DR模式负载均衡
系统环境:centos6.4注:本次实践全部是在本机(windows7系统)中安装的vmware下启动的三个虚拟机(centos6.4)中进行的;三个虚拟机的IP:    192.168.118.136 (作为主机,vip也设置在该机)    192.168.118.135 (realserver服务
Wesley13 Wesley13
2年前
1. LVS概述
1.LVS介绍  LVS是linuxvirtualserver的简写linux虚拟服务器,是一个虚拟的服务器集群系统,可以再unix/linux平台下实现负载均衡集群功能2.LVS组成 LVS由2部分程序组成,包括ipvs(嵌入到linux的内核,不需要安装)和ipvsadm(https://www.oschina
可莉 可莉
2年前
18、7 Keepalived LVS
完整的架构需要两台服务器(角色为dir),分别安装Keepalived工具,目的是实现高可用,但Keepalived本身也有负载均衡功能,所以本次使用可以只安装一台Keepalived。Keepalived内置了ipvsadm的功能,所以不需要安装ipvsadm包,也不用编写和执行lvs\_dr脚本。准备工作三台机器:调度器director:
Wesley13 Wesley13
2年前
Ubuntu10.04.4 Server下基于LVS DR模式+Keepalived的负载均衡高可用
Ubuntu10.04.4 Server下基于LVS DR模式Keepalived的负载均衡高可用集群LVSKeepalived 介绍2LVS2Keepalvied2ubuntu系统环境准备工作2更换Ubuntu软件源2架构拓扑图2服务安装3安装LVS3安装Keepalived3服务配置4
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这