zoukankan      html  css  js  c++  java
  • LVS+Keepalive+Nginx实现负载均衡

    本文参考:http://blog.csdn.net/yinwenjie/article/details/47211551

    简单粗暴写一下,做备忘,刚刚搭好没做优化呢,后期补充

    一、机器准备

    LVS-Master  192.168.100.2    主LVS
    LVS-BACKUP 192.168.100.3    备LVS
    WEB1    192.168.100.11    nginx1
    WEB2    192.168.100.12    nginx2
    WEB3    192.168.100.13    nginx3
    vip     192.168.100.1     虚拟IP

      

    主机名统一更新,可以自定义名称,我这里统一命名,LVS-Master、LVS-BACKUP、WEB1、WEB2、WEB3

    二、安装配置Keepalive

    yum install -y zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh
    yum install keepalive* -y //如果yum里面没有请编译安装一下 
    cp /etc/keepalived/keepalived.conf /etc/keepalived/bck_keepalived.conf  //先做个备份,防止操作错误
    

    vi 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_DEVEL
    }
    
    vrrp_instance VI_1 {
        #141节点设置为MASTER,142或者还有其他的节点设置为BACKUP
        #还记得我们前面文章讲到的无抢占设置吗?这里也可以用哦。
        state BACKUP
        #网络适配器名称
        interface eth0
        virtual_router_id 51
        #所有的SLAVE节点的优先级都要比这个设置值低
        priority 120
        advert_int 1
        #真实ip,主LVS和备份LVS要改成相应的lvs节点真实ip
        mcast_src_ip=192.168.100.3
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        #虚拟/浮动IP
        virtual_ipaddress {
            192.168.100.1
        }
    }
    
    virtual_server 192.168.100.1 80 {
        #健康时间检查,单位秒
        delay_loop 6
        #负载均衡调度算法wlc|rr,和您将使用的LVS的调度算法保持原则一致
        lb_algo rr
        #负载均衡转发规则 DR NAT TUN。和您将启动的LVS的工作模式设置一致
        lb_kind DR
        #虚拟地址的子网掩码
        nat_mask 255.255.255.0
        #会话保持时间,因为我们经常使用的是无状态的集群架构,所以这个设置可有可无
        #persistence_timeout 50
        #转发协议,当然是TCP
        protocol TCP
    
        #真实的下层Nginx节点的健康监测
        real_server 192.168.100.11 80 {
            #节点权重,
            weight 10
            #设置检查方式,可以设置HTTP_GET | SSL_GET
            HTTP_GET {
                url {
                  path /
                  digest ff20ad2481f97b1754ef3e12ecd3a9cc
                }
                #超时时间,秒。如果在这个时间内没有返回,则说明一次监测失败
                connect_timeout 3
                #设置多少次监测失败,就认为这个真实节点死掉了
                nb_get_retry 3
                #重试间隔
                delay_before_retry 3
            }
        }
    
        real_server 192.168.100.12 80 {
            weight 10
            HTTP_GET {
                url {
                  path /
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    
        real_server 192.168.100.13 80 {
        weight 10
        HTTP_GET {
            url {
              path /
              digest 640205b7b0fc66c1ea91c463fac6334d
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    
    }
    

     /etc/init.d/keepalived restart  //启动服务     启动后可以在/var/log/messages 看看有没有启动报错 

    三、LVS安装配置

    先列出了lvs管理工具的一些参数,供下面命令参考。

    -A –add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
    -E –edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
    -D –delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
    -C –clear 清除内核虚拟服务器表中的所有记录。
    -R –restore 恢复虚拟服务器规则
    -S –save 保存虚拟服务器规则,输出为-R 选项可读的格式
    -a –add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
    -e –edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
    -d –delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
    -L –list 显示内核虚拟服务器表
    -Z –zero 虚拟服务表计数器清零(清空当前的连接数量等)
    –set tcp tcpfin udp 设置连接超时值
    –start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的VRRP 功能。
    –stop-daemon 停止同步守护进程
    -t –tcp-service service-address 说明虚拟服务器提供的是tcp 的服务[vip:port] or [real-server-ip:port]
    -u –udp-service service-address 说明虚拟服务器提供的是udp 的服务[vip:port] or [real-server-ip:port]
    -f –fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
    -s –scheduler scheduler 使用的调度算法,选项:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, 默认的调度算法是: wlc.
    -p –persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
    -M –netmask netmask persistent granularity mask
    -r –real-server server-address 真实的服务器[Real-Server:port]
    -g –gatewaying 指定LVS 的工作模式为直接路由模式DR模式(也是LVS默认的模式)
    -i –ipip 指定LVS 的工作模式为隧道模式
    -m –masquerading 指定LVS 的工作模式为NAT 模式
    -w –weight weight 真实服务器的权值
    –mcast-interface interface 指定组播的同步接口
    –connection 显示LVS 目前的连接 如:ipvsadm -L -c
    –timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L –timeout
    –daemon 显示同步守护进程状态
    –stats 显示统计信息
    –rate 显示速率信息
    –sort 对虚拟服务器和真实服务器排序输出
    –numeric -n 输出IP 地址和端口的数字形式
    

    安装

    yum -y install ipvsadm  //这个简单,现在linux内核里面已经大部分都内置了lvs的功能,只需要安装管理工具即可

    配置 (重启后会消失,要写成脚本)  参数意思看上方列表

    ipvsadm -C
    ipvsadm -At 192.168.100.1:80 -s rr      
    ipvsadm -at 192.168.100.1:80 -r 192.168.100.11 -g
    ipvsadm -at 192.168.100.1:80 -r 192.168.100.12 -g
    ipvsadm -at 192.168.100.1:80 -r 192.168.100.13 -g
    ipvsadm
    

    四、NGINX配置

    ###yum安装nginx并打开Nginx所在服务器的“路由”功能、关闭“ARP查询”功能###

     yum install nginx* -y
    
    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
    

    设置回环IP

    ifconfig lo:0 192.168.100.1 broadcast 192.168.100.1 netmask 255.255.255.255 up
    route add -host 192.168.100.1 dev lo:0

    配置完毕,给nginx做个测试,看看访问是否正常,为了测试效果写了个html用于辨别几台WEB

    vi /var/www/html/index.html  (web1)

    <html>
    <head><title>web1</title></head>
    <body>
    my ip is 192.168.100.11
    </body>
    </html>

    vi /var/www/html/index.html  (web2)

     

    <html>
    <head><title>web2</title></head>
    <body>
    my ip is 192.168.100.12
    </body>
    </html>

    vi /var/www/html/index.html  (web3)

    <html>
    <head><title>web3</title></head>
    <body>
    my ip is 192.168.100.13
    </body>
    </html>
    

     五、小结一下

    1.keepalive,安装完毕了,配置文件也没问题,没有日志报错,能够正常工作。

    2.lvs, ipvsadm命令能看到分别的三个web服务,如果没有说明上方配置lvs时没生效

    IP Virtual Server version 1.2.1 (size=65536)
    Prot LocalAddress:Port Scheduler Flags
      -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
    TCP  localhost:http rr
      -> web2:http                    Route   1      0          0         
      -> web1:http                    Route   1      0          0         
      -> web3:http                    Route   1      0          0   
    

    3.nginx能够正常访问,并且vip已经能够通过ifconfig查看到 

    这样应该能够访问vip了,看看展示的界面是不是会分别按照lvs的算法分配给三台nginx服务

    好记性不如烂笔头-_-
  • 相关阅读:
    angular2学习
    随笔
    angular 中ng-repeat后ng-click失效
    一个hover效果
    获取屏幕高度
    延时加载 lazyload使用技巧
    关于MVC模板渲染的一点小事type="text/template"
    JsRender实用教程(tag else使用、循环嵌套访问父级数据)
    jQuery Validate 插件为表单提供了强大的验证功能
    日期时间选择器bootstrap-datetimepicker表单组件
  • 原文地址:https://www.cnblogs.com/liuquan/p/5583816.html
Copyright © 2011-2022 走看看