• lvs+keepalived


     环境:两台lvs、两台real server(四台简化为两台)

    关闭所有服务器的防火墙和selinux

     sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config      #重启生效 reboot
    
    /etc/init.d/iptables stop
    • 安装依赖包

    可参考 http://www.cnblogs.com/zzzhfo/p/5957113.html 

    两台lvs配置相同

    [root@lvs02 /]# yum -y install kernel-devel gcc gcc-c++ libnl* libpopt* popt-static
    • 创建一个软链接,防止后面编译安装ipvsadm时找不到系统内核

    2.6.32-642.4.2.el6.x86_64用tab键补全

    [root@lvs01 /]# uname -r
    2.6.32-431.el6.x86_64
    [root@lvs01 /]# ln -s /usr/src/kernels/2.6.32-642.4.2.el6.x86_64/ /usr/src/linux

    这里我们使用的2.6版本,并且注意内核是2.6版本的,如果你的版本是6.X版本的话,那么可以使用2.6版本

    [root@lvs01 /]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
    --2016-10-05 23:52:06--  http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
    Resolving www.linuxvirtualserver.org... 69.56.251.119
    Connecting to www.linuxvirtualserver.org|69.56.251.119|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 41700 (41K) [application/x-gzip]
    Saving to: “ipvsadm-1.26.tar.gz”
    
    100%[=======================================>] 41,700      41.6K/s   in 1.0s    
    
    2016-10-05 23:52:23 (41.6 KB/s) - “ipvsadm-1.26.tar.gz” saved [41700/41700]

    解压、配置、编译、安装

    [root@lvs01 /]# tar zxvf ipvsadm-1.26.tar.gz 
    [root@lvs01 /]# cd ipvsadm-1.26
    [root@lvs01 ipvsadm-1.26]# make
    [root@lvs01 ipvsadm-1.26]# make install
    [root@lvs ipvsadm-1.26]# lsmod | grep ip_vs
    把ipvs模块加载进系统,需要我们执行ipvsadm命令才会加载进去
    或者modprobe ip_vs。
    [root@lvs01 ipvsadm-1.26]# modprobe ip_vs
    [root@lvs01 ipvsadm-1.26]# lsmod | grep ip_vs
    ip_vs                 125220  0 
    libcrc32c               1246  1 ip_vs
    ipv6                  317340  142 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

    两台real server配置相同

    web01配置
    [root@web01 /]# hostname
    web01
    [root@web01 /]# yum -y install httpd
    [root@web01 /]# find / -name httpd.conf
    /etc/httpd/conf/httpd.conf
    [root@web01 /]# vim /etc/httpd/conf/httpd.conf
    ServerName 127.0.0.1
    [root@web01 /]# cd /var/www/html/
    [root@web01 html]# echo "web01_192.168.119.130" > index.html
    [root@web01 html]# ls
    index.html
    [root@web01 html]# cat index.html 
    web01_192.168.119.130
    [root@web01 html]# /etc/init.d/httpd start
    Starting httpd:                                            [  OK  ]
    [root@web01 html]# curl localhost
    web01_192.168.119.130
    
    
    web02配置
    [root@web02 /]# hostname
    web02
    [root@web02 /]# yum -y install httpd
    [root@web02 /]# vim /etc/httpd/conf/httpd.conf
    ServerName 127.0.0.1
    [root@web02 /]# echo "web02_192.168.119.133" > /var/www/html/index.html 
    [root@web02 /]# cat /var/www/html/index.html 
    web02_192.168.119.133
    [root@web02 /]# /etc/init.d/httpd start
    Starting httpd:                                            [  OK  ]
    [root@web02 /]# curl localhost
    web02_192.168.119.133

    real server 脚本

    用于绑定VIP和ARP抑制

    [root@web01 /]# vim /usr/local/sbin/ipvs_client.sh
    #!/bin/bash VIP=192.168.119.150 PORT=80 case "$1" in start) ifconfig eth0:0 $VIP/32 up route add -host $VIP dev eth0 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_announce echo "2">/proc/sys/net/ipv4/conf/all/arp_announce echo "start LVS of REALServer IP" ;; stop) ifconfig eth0:0 $VIP/32 down route del -host $VIP dev eth0 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_announce echo "0">/proc/sys/net/ipv4/conf/all/arp_announce echo "stop LVS OF REALServer" ;; *) echo "Usage: $0 {start|stop}" esac

    启动脚本

    [root@web01 /]# chmod 755 /usr/local/sbin/ipvs_client.sh 
    [root@web01 /]# ipvs_client.sh start
    start LVS of REALServer IP
    [root@web01 /]# ifconfig eth0:0
    eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:1B:BA:FB  
              inet addr:192.168.119.150  Bcast:255.255.255.255  Mask:0.0.0.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

     安装keepalived

    可参考  http://www.cnblogs.com/zzzhfo/p/6070065.html

    lvs01和lvs02

    检查下

    [root@lb01 /]# ln -s /usr/src/kernels/2.6.32-642.6.2.el6.x86_64/ /usr/src/linux
    [root@lb01 /]# ls -l /usr/src/
    total 8
    drwxr-xr-x. 2 root root 4096 Sep 23  2011 debug
    drwxr-xr-x. 3 root root 4096 Oct  6 11:05 kernels
    lrwxrwxrwx  1 root root   43 Oct  6 11:09 linux -> /usr/src/kernels/2.6.32-642.6.2.el6.x86_64/

    下载keepalived

    [root@lvs01 /]# wget http://www.keepalived.org/software/keepalived-1.2.16.tar.gz

    安装依赖包

    报错
    configure: error: 
      !!! OpenSSL is not properly installed on your system. !!!
      !!! Can not include OpenSSL headers files.            !!!
    解决
    [root@lvs01 /]# yum -y install openssl openssl-devel

    解压、配置、编译、安装

    [root@lvs01 /]# tar zxvf keepalived-1.2.16.tar.gz 
    [root@lvs01 /]# cd keepalived-1.2.16
    [root@lvs01 keepalived-1.2.16]# ./configure 
    
    Keepalived configuration
    ------------------------
    Keepalived version       : 1.2.16
    Compiler                 : gcc
    Compiler flags           : -g -O2 -I/usr/include/libnl3  
    Extra Lib                : -lssl -lcrypto -lcrypt  -lnl-genl-3 -lnl-3  
    Use IPVS Framework       : Yes
    IPVS sync daemon support : Yes
    IPVS use libnl           : Yes
    fwmark socket support    : Yes
    Use VRRP Framework       : Yes
    Use VRRP VMAC            : Yes
    SNMP support             : No
    SHA1 support             : No
    Use Debug flags          : No
    
    [root@lvs01 keepalived-1.2.16]# make && make install
    [root@lvs01 keepalived-1.2.16]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/ 
    [root@lvs01 keepalived-1.2.16]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
    [root@lvs01 keepalived-1.2.16]# mkdir /etc/keepalived
    [root@lvs01 keepalived-1.2.16]# cp /usr/local/etc/keepalived/keepalived.conf  /etc/keepalived/
    [root@lvs01 keepalived-1.2.16]# cp /usr/local/sbin/keepalived /usr/sbin/
    [root@lvs01 keepalived-1.2.16]# /etc/init.d/keepalived start
    Starting keepalived:                                       [  OK  ]
    [root@lvs01 keepalived-1.2.16]# ps -ef | grep keepalived
    root      3217     1  0 01:08 ?        00:00:00 keepalived -D
    root      3219  3217  0 01:08 ?        00:00:00 keepalived -D
    root      3220  3217  0 01:08 ?        00:00:00 keepalived -D
    root      3222  1074  0 01:08 pts/0    00:00:00 grep keep
    [root@lvs01 keepalived-1.2.16]# /etc/init.d/keepalived stop
    Stopping keepalived:                                       [  OK  ]

    修改配置文件(单实例)

    lvs01

    [root@lvs01 keepalived-1.2.16]# cd /etc/keepalived/
    [root@lvs01 keepalived]# cp keepalived.conf keepalived.conf.bak
    [root@lvs01 keepalived]# vim keepalived.conf
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_01
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.119.150
        }
    }
    
    virtual_server 192.168.119.150 80 {
        delay_loop 6
        lb_algo wrr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 300
        protocol TCP
    
        real_server 192.168.119.130 80 {
            weight 1
        TCP_CHECK
                connect_timeout 8
                nb_get_retry 3
                delay_before_retry 3
            connect_port 80
            }
        }
        real_server 192.168.119.133 80 {
            weight 1
            TCP_CHECK
                connect_timeout 8
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }

    启动keepalived

    [root@lvs01 keepalived]# /etc/init.d/keepalived start
    Starting keepalived:                                       [  OK  ]

    查看VIP

    [root@lvs01 keepalived]# ip add 
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:6e:24:e0 brd ff:ff:ff:ff:ff:ff
        inet 192.168.119.134/24 brd 192.168.119.255 scope global eth0
        inet 192.168.119.150/32 scope global eth0
        inet6 fe80::20c:29ff:fe6e:24e0/64 scope link 
           valid_lft forever preferred_lft forever

    查看ipvs

    [root@lvs01 keepalived]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.119.150:80 rr persistent 300
      -> 192.168.119.130:80           Masq    1      0          0         
      -> 192.168.119.133:80           Masq    1      0          0    

    lvs02配置

    [root@lvs02 keepalived]# vim keepalived.conf
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_02
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.119.150
        }
    }
    
    virtual_server 192.168.119.150 80 {
        delay_loop 6
        lb_algo wrr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 300
        protocol TCP
    
        real_server 192.168.119.130 80 {
            weight 1
        TCP_CHECK
                connect_timeout 8
                nb_get_retry 3
                delay_before_retry 3
            connect_port 80
            }
        }
        real_server 192.168.119.133 80 {
            weight 1
            TCP_CHECK
                connect_timeout 8
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }

    查看vip和ipvs

    (没有VIP但lvs服务启动、不接受请求)

    [root@lvs02 keepalived]# ip add | grep 192.168.119.150
    [root@lvs02 keepalived]# ip add | grep 192.168.119.150
    [root@lvs02 keepalived]# ip add | grep 192.168.119.150
    [root@lvs02 keepalived]# ip add | grep 192.168.119.150
    [root@lvs02 keepalived]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    [root@lvs02 keepalived]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.119.150:80 wrr persistent 300
      -> 192.168.119.130:80           Route   1      0          0         
      -> 192.168.119.133:80           Route   1      0          0         
    [root@lvs02 keepalived]# ipvsadm -ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  192.168.119.150:80 wrr persistent 300
      -> 192.168.119.130:80           Route   1      0          0         
      -> 192.168.119.133:80           Route   1      0          0         
    [root@lvs02 keepalived]# ip add | grep 192.168.119.150

    测试

     

  • 相关阅读:
    Latex文件如何拆分进行独立编译?
    梯度下降优化算法
    Google大脑科学家贾杨清(Caffe缔造者)-微信讲座
    Jeecg 如何执行批量insert或者update操作,高效率
    【JEECG_3.7.1】列表多表头的设计
    t:formvalid中定义callback函数
    Excel导入的时候日期格式会变成double式的String数据处理
    sql 跨表修改的方式
    js判断字符串str是否包含字符串substr
    帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数
  • 原文地址:https://www.cnblogs.com/hwlong/p/6079374.html
Copyright © 2020-2023  润新知