LVS(DR)+keeplived

1. DS:Director Server。              指的是前端负载均衡器节点。
2. RS:Real Server。                   后端真实的工作服务器。
3. VIP:                                         向外部直接面向用户请求,作为用户请求的目标的IP地址。
4. DIP:Director Server IP,         主要用于和内部主机通讯的IP地址。
5. RIP:Real Server IP,              后端服务器的IP地址。
6. CIP:Client IP,                        访问客户端的IP地址。

 第一部分:

实验环境:

系统版本linux7.2

DS:192.168.1.100

RS:192.168.1.200(serverA)     192.168.1.201(serverB)

客户端 :192.168.1.3(用于验证)

1,首先两台RS安装web服务器,这里使用nginx:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum install nginx

nginx 

修改默认index文件,区分两台RS

nginx  -s reload 重载配置,客户端访问:

2,配置DS服务器(192.168.1.100)

加载LVS内核模块

LVS现在已经成为LINUX内核的一部分,默认编译为ip_vs模块,必要时能够自动调用,

    modprobe ip_vs   手动加载ip_vs模块

    cat /proc/net/ip_vs

    

安装管理软件ipvsadm,不需要启动

    rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm

    下载地址http://www.linuxvirtualserver.org/software/ipvs.html#kernel-2.6

创建调度脚本

 #!/bin/bash

#
ifconfig ens33:0 192.168.1.10 broadcast 192.168.1.10 netmask 255.255.255.255 up
route add -host 192.168.1.10 dev ens33:0
ipvsadm –C
ipvsadm -A -t 192.168.1.10:80 -s rr
ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.200:80 –g
ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.201:80 –g
ipvsadm –Ln

chmod +x dr.sh

sh dr.sh

     

 ifconfig 

    

3,配置两台web服务器

vim  web_dr.sh

#!/bin/bash
#haha
ifconfig lo:0 192.168.1.10 broadcast 192.168.1.10 netmask 255.255.255.255 up
route add -host 192.168.1.10 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

执行脚本

ifconfig

    

4,测试

备注:

      arp_ignore和arp_annonuce参数参考https://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html

第二部分: +keepalievd     

环境:

系统版本linux7.2

DS:192.168.1.100(主)   192.168.1.99(备)

RS:192.168.1.200(serverA)     192.168.1.201(serverB)

yum install keepalived  (两节点)

vim /etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     acassen@firewall.loc        #报警接收人,多个写多行
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from ******@163.com      #报警发件人
   smtp_server   smtp.163.com   #发送email时使用的smtp服务器地址
   smtp_connect_timeout 30      #smtp超时时间
   router_id LVS_DEVEL         #标识,发邮件的主题信息
}

vrrp_instance VI_1 {
    state MASTER      #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器
    interface ens33      #指定HA监测网络的接口
    virtual_router_id 51    #虚拟路由标识,即同一vrrp_instance下,MASTER和BACKUP必须是一致的
    priority 100      #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER必须大于BACKUP
    advert_int 1      #定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {   
        auth_type PASS    #设置验证类型,主要有PASS和AH两种
        auth_pass 1111   #设置验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    }
    virtual_ipaddress {
        192.168.1.10    #设置虚拟IP地址,可以设置多个虚拟IP地址,每行一个
    } 
}

virtual_server 192.168.1.10 80 {       设置虚拟服务器,需要指定虚拟IP地址和服务端口
    delay_loop 6        #设置运行情况检查时间,单位是秒
    lb_algo rr           #设置负载调度算法,这里设置为rr,即轮询算法
    lb_kind DR           #设置LVS实现负载均衡的机制,有NAT、TUN、DR三个模式可选
    persistence_timeout 0      #会话保持时间,单位是秒。这个选项对动态网页是非常有用的,为集群系统中的session共享提供了一个很好的解决方案。
    protocol TCP        #指定转发协议类型,有TCP和UDP两种

    real_server 192.168.1.200 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.1.201 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

 拷贝主节点的配置文件keepalived.conf,然后修改如下内容:

state MASTER -> state BACKUP
priority 100 -> priority 90
router_id LVS2

测试两台分别停掉keepalived,是否能访问正常
ipaddr




原文地址:https://www.cnblogs.com/shiji888/p/11005465.html