• 也不知怎么了LVS.SH找不到,网上搜了一篇环境搭配CENTOS下面的高可用 参考


    系统环境:

    ************************************************************

    两台服务器都装了 CentOS-5.2-x86_64 系统

    Virtual IP :                    192.168.30.20              

    Squid1+Real Server 1 :       网卡地址 (eth0):192.168.30.12     

    Squid2+Real Server 2 :        网卡地址 (eth0):192.168.30.13   

    ************************************************************

    软件列表
    keepalived

    http://www.keepalived.org/software/keepalived-1.1.17.tar.gz

    openssl-devel

     yum -y install openssl-devel

    ***************************************************************

     

     


    配置:

    配置基于高可用 keepalived, 确定 LVS 使用 DR 模式

     

     

    1. 安装配置 keepalived

    1.1 安装依赖软件 如果系统为基本文本安装,需要安装一下软件 

    # yum -y install ipvsadm

    # yum -y install kernel kernel-devel

    # reboot   重启系统切换内核

    # yum -y install openssl-devel                              ;安装 keepalived 依赖软件

    #ln -s /usr/src/kernels/`uname -r`-`uname -m`/ /usr/src/linux      

        ;建立内核链接,编译 keepalived 支持 lvs 时需要

    注意建立链接的内核名和当前运行的内核一致,否则导致安装失败

    #tar zxvf keepalived-1.1.17.tar.gz

    #cd keepalived-1.1.17

    #./configure  --prefix=/usr  --sysconf=/etc

     

     

    Keepalived configuration

    ------------------------

    Keepalived version       : 1.1.17

    Compiler                  : gcc

    Compiler flags           : -g -O2

    Extra Lib                : -lpopt -lssl -lcrypto

    Use IPVS Framework       : Yes                         ; 注意编译时一定要支持 lvs

    IPVS sync daemon support : Yes

    Use VRRP Framework       : Yes

    Use LinkWatch            : No

    Use Debug flags          : No              

    #make

    #make install

     

     

    1.2 编辑 keepalived 配置文件

    #Vi  /etc/keepalived/keepalived.conf

     

    global_defs {

       notification_email {

         test@163.com

       }

       notification_email_from root@localhost

       smtp_server 127.0.0.1

       smtp_connect_timeout 30

       router_id LVS_DEVEL

    }

     

    vrrp_instance VI_1 {

        state MASTER         # 备份服务器上将 MASTER 改为 BACKUP 

        interface eth0           # HA 监测网络接口

        virtual_router_id 51     # 主、备机的 virtual_router_id 必须相同

        priority 100           # 主、备机取不同的优先级,主机值较大,备份机值较小

        advert_int 2        # VRRP Multicast 广播周期秒数

        authentication {

            auth_type PASS         #VRRP 认证方式

            auth_pass 1111          #VRRP 口令字

        }

        virtual_ipaddress {

            192.168.30.20               # VRRP HA 虚拟地址 如果有多个VIP,继续换行填写

        }

    }

     

    virtual_server 192.168.30.20 80 {

        delay_loop 2                   # 每隔 6 秒查询 realserver 状态

        lb_algo rr                        #lvs 算法

        lb_kind DR                      # Direct Route

        persistence_timeout 50             # 同一IP 的连接60 秒内被分配到同一台realserver

        protocol TCP                     # 用 TCP 协议检查 realserver 状态

     

      real_server 192.168.30.12 80 {

           weight 3          #(权重)

        TCP_CHECK {   

           connect_timeout 10       #(10秒无响应超时)
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
      

        }

    }

    real_server 192.168.30.13 80 {

           weight 3          #(权重)

        TCP_CHECK {   

           connect_timeout 10       #(10秒无响应超时)
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
      

        }

    }

    }

    1.3 BACKUP 服务器同上配置,先安装 lvs 再按装 keepalived, 仍后配置 /etc/keepalived/keepalived.conf ,只需将红色标示的部分改一下即可 .

    global_defs {

       notification_email {

        test@163.com

       }

       notification_email_from root@localhost

       smtp_server 127.0.0.1

       smtp_connect_timeout 30

       router_id LVS_DEVEL

    }

     

    vrrp_instance VI_1 {

        state BACKUP          # 备份服务器上将 MASTER 改为 BACKUP 

        interface eth0           # HA 监测网络接口

        virtual_router_id 51     # 主、备机的 virtual_router_id 必须相同

        priority 99               # 主、备机取不同的优先级,主机值较大,备份机值较小

        advert_int 2           # VRRP Multicast 广播周期秒数

        authentication {

            auth_type PASS         #VRRP 认证方式

            auth_pass 1111          #VRRP 口令字

        }

        virtual_ipaddress {

            192.168.30.20               # VRRP HA 虚拟地址

        }

    }

    virtual_server 192.168.30.20 80 {

        delay_loop 2                   # 每隔 6 秒查询 realserver 状态

        lb_algo rr                        #lvs 算法

        lb_kind DR                      # Direct Route

        persistence_timeout 50             # 同一IP 的连接60 秒内被分配到同一台realserver

        protocol TCP                     # 用 TCP 协议检查 realserver 状态

     

      real_server 192.168.30.12 80 {

           weight 3          #(权重)

        TCP_CHECK {   

           connect_timeout 10       #(10秒无响应超时)
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
      

        }

    }

    real_server 192.168.30.13 80 {

           weight 3          #(权重)

        TCP_CHECK {   

           connect_timeout 10       #(10秒无响应超时)
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
      

        }

    }

    }

     

    2. 配置lvs客户端脚本 

    1. #vi /usr/local/sbin/realserver.sh  
    2.  #!/bin/bash  
    3.  # description: Config realserver lo and apply noarp   
    4.  #Written by :NetSeek http://www.linuxtone.org  
    5.    
    6.  SNS_VIP=192.168.30.20  
    7.     
    8.  . /etc/rc.d/init.d/functions  
    9.     
    10.  case "$1" in  
    11.  start)  
    12.         ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP  
    13.         /sbin/route add -host $SNS_VIP dev lo:0  
    14.         echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
    15.         echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce  
    16.         echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore  
    17.         echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
    18.         sysctl -p >/dev/null 2>&1  
    19.         echo "RealServer Start OK"  
    20.     
    21.         ;;  
    22.  stop)  
    23.         ifconfig lo:0 down  
    24.         route del $SNS_VIP >/dev/null 2>&1  
    25.         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
    26.         echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
    27.         echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
    28.         echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
    29.         echo "RealServer Stoped"  
    30.         ;;  
    31.  *)  
    32.         echo "Usage: $0 {start|stop}"  
    33.         exit 1  
    34.  esac  
    35.     
    36.  exit 0  

      

    或者采用secondary ip address方式配置
              # vi /etc/sysctl.conf

               net.ipv4.conf.lo.arp_ignore = 1
               net.ipv4.conf.lo.arp_announce = 2
               net.ipv4.conf.all.arp_ignore = 1
               net.ipv4.conf.all.arp_announce = 2

    #sysctl -p

    #ip addr add 192.168.30.20/32 dev lo
    #ip add list 查看是否绑定


     3. 启动lvs-dr脚本和realserver启本,在DR上可以查看LVS当前状态:
             #watch ipvsadm -ln

    4. 启动 keepalived 服务
    #service httpd start

    #/etc/init.d/keepalived start  

      查看keepalived的安装位置:
        # find / -name keepalived 
     将keepalived作为服务添加到chkconfig中,并设置开机启动
       # chkconfig --add keepalived
       # chkconfig --level 35 keepalived on
       # chkconfig --list keepalived
          keepalived      0:关闭  1:关闭  2:关闭  3:启用  4:关闭  5:启用  6:关闭

     

    “各等级”包括2、3、4、5等级

    等级0表示:表示关机

    等级1表示:单用户模式

    等级2表示:无网络连接的多用户命令行模式

    等级3表示:有网络连接的多用户命令行模式

    等级4表示:不可用

    等级5表示:带图形界面的多用户模式

    等级6表示:重新启动

    5. 测试 lvs 服务是否正常

      5.1 通过浏览器访问 http://192.168.30.20 是否正常

    多次刷新浏览器,在主 LVS 上看连接数变化

    5.2 停止主 LVS 上的 keepalived 看看备份 keepalived 是否正常接管服务

     

    注:realserver如果为windows主机的话需要安装microsoft loopback,设置IP为VIP

    确认之后搜索注册表,关键字"VIP"

    把搜到结果的每项里面的subnet mask都改成255.255.255.255

    然后重启即可

  • 相关阅读:
    MySQL用户
    python -- 中
    Python -- 上
    Zabbix导入数据库时报错
    chmod无执行权限
    编译安装Tengine
    Nginx的调度算法
    nginx--第三方模块echo
    ngx_http_headers_module
    nginx---隐藏或添加后端服务器的信息
  • 原文地址:https://www.cnblogs.com/xred/p/3538878.html
Copyright © 2020-2023  润新知