zoukankan      html  css  js  c++  java
  • debian下配置keepalived ha

    抄袭自http://blog.51yip.com/server/1417.html,做了一些修改

    可以参考http://blog.linuxphp.org/archives/1615/

    备注:NAT模式在rs机器上不需要做关于ip之类的任何配置,以下为DR模式,ip tunnerl模式也需要在rs上配置vip和router,ip tunnel和DR模式不允许改变后端的端口。

    服务器介绍

    Master        192.168.1.11        //lvs主服务器
    BACKUP        192.168.1.12        //lvs从服务器
    VIP           192.168.1.8         //VIP
    WEB1-Real     192.168.1.104       //RS服务器
    WEB2-Real     192.168.1.108       //RS服务器

    VIP不需要用ifconfig手工配置,配置好keepalived以后,keepalived会自动给你配置好

    模式:

    配置keepalived的两个主机会自动根据配置把VIP绑定到相关网卡
    两个RS主机上需要手工绑定VIP,添加路由表

    原因在于,当LVS把client的包转发给Real-server时,因为包的目的IP地址是VIP,那么如果Real-server收到这个包后,发现包的目的IP不是自己的系统IP,那么就会认为这个包不是发给自己的,就会丢弃这个包,所以需要将这个IP地址绑到网卡上;当发送应答包给client时,Real-server就会把包的源和目的地址调换,直接回复给client。

     

    在lvs的master和slave上安装ipvsadm和keepalived

    然后配置/etc/keepalived/keepalived.conf,额,debian下其实也有sample文件的,在/usr/share/doc/keepalived/下面,复制出来改改

    global_defs {
        router_id LVS_DEVEL                 #负载均衡器标识,同一网段内,可以相同
    }
    
    vrrp_sync_group VGM {                   #定义一个vrrp组
        group {
            VI_1
        }

        #这里似乎也支持脚本
        # notify_master /path/to/to_master.sh
        # notify_backup /path_to/to_backup.sh
        # notify_fault "/path/fault.sh VG_1"

    }
    
    vrrp_instance VI_1 {                    #定义vrrp实例
        state BACKUP                        #主LVS是MASTER,从的BACKUP,一般都设置为BACKUP,并且priority高的设置为nopreempt(不抢占)
        interface eth0                      #LVS监控的网络接口,笔记本测试的时候可以用wlan0,具体看自己的机器
        virtual_router_id 51                #同一实例下virtual_router_id必须相同
        priority 150                        #定义优先级,数字越大,优先级越高,MASTER必须高于BACKUP
       nopreempt advert_int 1
    #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒 authentication { #验证类型和密码 auth_type PASS auth_pass 1111 }
    virtual_ipaddress { #虚拟IP
    192.168.1.8 } } virtual_server 192.168.1.8 11111 { #定义虚拟服务器 delay_loop 2 #健康检查时间,单位是秒 lb_algo rr #负载调度算法,这里设置为rr,即轮询算法 lb_kind DR #LVS实现负载均衡的机制,可以有NAT、TUN和DR三个模式可选 persistence_timeout 60 #会话保持时间,指客户端往服务器发包时,在这个时间段内服务器把这些请求转发到同一个rs上,单位是秒,测试直接改成0 protocol TCP #转发协议类型,有tcp和udp两种 real_server 192.168.1.104 11111 { #定义WEB服务器 weight 100 #权重 TCP_CHECK { #通过tcpcheck判断RealServer的健康状态 connect_timeout 2 #连接超时时间 nb_get_retry 3 #重连次数 delay_before_retry 3 #重连间隔时间 connect_port 11111 #检测端口 } } real_server 192.168.1.108 11111 { weight 100
    #这里支持任意脚本,很强大
    #notify_down "xxxx.sh your_param"
    #notify_up "xxxx.py"
    TCP_CHECK { connect_timeout
    2 nb_get_retry 3 delay_before_retry 3 connect_port 11111 } } }

    从服务器只要改二个地方就行了,priority的权重调小一点,state改成BACKUP,注意realserver的connect_timeout字段

    下面配置real server的配置脚本

    gvim /etc/init.d/rs-lvs,并且chmod +x

    #!/bin/bash
    
    VIP=192.168.1.8
    
    source /lib/lsb/init-functions
    
    case "$1" in
    start)
     ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP up
     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
     echo 1 >/proc/sys/net/ipv4/ip_forward
    
     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 0 >/proc/sys/net/ipv4/ip_forward
    
    sysctl -p >/dev/null 2>&1
    echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0

    这个脚本如果是windows下scp到linux主机,需要vim以后set ff=unix,然后保存

    在lvs主机

    sudo invoke-rc.d keepalived restart

     

     rs主机

    sudo invoke-rc.d rs-lvs start

     

    如何查看VIP在哪个lvs主机上

    ip a
    看eth0,应该能看到192.168.1.8这个VIP

    附上一个在rs执行的tunnel模式的脚本,lvs主机上lb_kind改成TUN

    #!/bin/bash
    
    VIP=192.168.1.8
    
    source /lib/lsb/init-functions
    
    case "$1" in
    start)
     ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up
     route add -host $VIP dev tunl0
    
     echo 1 >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
     echo 2 >/proc/sys/net/ipv4/conf/tunl0/arp_announce
     echo 0 >/proc/sys/net/ipv4/conf/tunl0/rp_filter
     echo 1 >/proc/sys/net/ipv4/conf/tunl0/forwarding
    
     echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
     echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
    #all的rp_filter非常重要,不然rs收不到
     echo 0 >/proc/sys/net/ipv4/conf/all/rp_filter
     echo 1 >/proc/sys/net/ipv4/ip_forward
    
     sysctl -p >/dev/null 2>&1
     echo "RealServer Start OK"
     ;;
    stop)
     ifconfig tunl0 down
     route del $VIP >/dev/null 2>&1
    
     echo 0 >/proc/sys/net/ipv4/conf/all/arp_ignore
     echo 0 >/proc/sys/net/ipv4/conf/all/arp_announce
     echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
     echo 0 >/proc/sys/net/ipv4/ip_forward
    
    sysctl -p >/dev/null 2>&1
    echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
  • 相关阅读:
    收集于网络的Web Standard规范化CSS+XHTML命名参考
    【转】6 个强大的 HTML5 应用在线开发工具
    【转】2012年度最新免费web开发设计资源荟萃
    优秀网站精选
    【转】inlineblcok 前世今生
    130+ 网页设计工具
    【转】60款很酷的 jQuery 幻灯片演示和下载
    【转载】用CSS3做的动画按钮
    有用网站收集
    『转』Photoshop中改进ios设计流程的30个诀窍
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/3291351.html
Copyright © 2011-2022 走看看