设为首页 收藏本站
查看: 1462|回复: 0

[经验分享] 实例:LVS+Keepalived配置LVS的高可用

[复制链接]

尚未签到

发表于 2018-12-30 10:18:47 | 显示全部楼层 |阅读模式
  LVS+Keepalived配置LVS的高可用
  我们这里LVS-DR模型的高可用集群:
  实验环境:   
    vm1 LVS-DR1:   
             eth0 172.16.3.2/16   
             VIP :eth0:0 172.16.3.88         
    vm2 LVS-DR2:   
            eth0 172.16.3.3/16   
    vm3 Server-web1   
            RS1: eth0 172.16.3.1/16     
            VIP: lo:0 172.16.3.88/16   
    vm4 Server-web2   
            RS2: eth0 172.16.3.10/16     
            VIP: lo:0 172.16.3.88/16
  测试机:实体本机:IP: 172.16.3.100            
1、vm3 Server-web1配置:   
      # ifconfig eth0 172.16.3.1/16 up                             RIP1   
      # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
      # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore (由于是一个网卡,也可以指定的接口为lo:0)   
      # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce   
      # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce   
      # ifconfig lo:0 172.16.3.88 netmask 255.255.255.255 broadcast 172.16.3.88    VIP   
      # route add -host 172.16.3.88 dev lo:0   
    web1主页面为   
      # yum install nginx   
      # echo "172.16.3.1" > /usr/share/nginx/html/index.html   
2、vm4 Server-web2配置:   
      # ifconfig eth0 172.16.3.10/16 up                        RIP2   
      # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore     
      # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore (由于是一个网卡,也可以指定的接口为lo:0)   
      # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce   
      # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce   
      # ifconfig lo:0 172.16.3.88 netmask 255.255.255.255 broadcast 172.16.3.88    VIP   
      # route add -host 172.16.3.88 dev lo:0   
    web2主页面为   
      #yum install nginx   
      # echo "172.16.3.10" > /usr/share/nginx/html/index.html   
3、vm1 LVS-DR1 (我们这里的vm1为)配置   
      # yum install keepalived   
# vim /etc/keepalived/keepalived.conf
  ! Configuration File for keepalived
  global_defs {   
   notification_email {   
    root@localhost   
   }   
   notification_email_from ning@qq.com   
   smtp_server 127.0.0.1   
   smtp_connect_timeout 30   
#   router_id LVS_DEVEL   
}
  vrrp_instance VI_1 {   
    state MASTER   
    interface eth0   
    virtual_router_id 88   
    priority 100   
    advert_int 1   
    authentication {   
        auth_type PASS   
        auth_pass ning   
    }   
    virtual_ipaddress {   
    172.16.3.88   
    }   
}
  virtual_server 172.16.3.88 80 {   
    delay_loop 6   
    lb_algo rr   
    lb_kind DR   
    nat_mask 255.255.0.0   
#    persistence_timeout 50   
    protocol TCP   
   sorry_server 127.0.0.1 80   
    real_server 172.16.3.1 80 {   
        weight 1   
        HTTP_GET {   
            url {   
              path /   
         status_code 200   
            }   
            connect_timeout 2   
            nb_get_retry 3   
            delay_before_retry 1   
        }   
    }
  real_server 172.16.3.10 80 {   
        weight 1   
        HTTP_GET {   
            url {   
              path /   
         status_code 200   
            }   
            connect_timeout 2   
            nb_get_retry 3   
            delay_before_retry 1   
        }   
    }   
}   
由于我们添加了sorry_service 所以我们在DR节点上也安装了nginx(方便测试)   
  # yum install nginx   
  # echo "172.16.3.2" > /usr/share/nginx/html/index.html   
4、vm2 LVS-DR2 (我们这里的vm2配置文件)配置   
    # yum install keepalived      
# vim  /etc/keepalived/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 {   
    state BACKUP               主要是这里不同   
    interface eth0   
    virtual_router_id 88            
    priority 99                  优先级不同   
    advert_int 1   
    authentication {   
        auth_type PASS   
        auth_pass ning   
    }   
    virtual_ipaddress {   
    172.16.3.88   
    }   
}
  virtual_server 172.16.3.88 80 {   
    delay_loop 6   
    lb_algo rr   
    lb_kind DR   
    nat_mask 255.255.0.0   
#    persistence_timeout 50   
    protocol TCP   
   sorry_server 127.0.0.1 80  这里我们添加了sorry_server,就是说,两个web服务器都不在线时,就给客户提供一个页面,(这里我们指向了自己的主机,,可以指定另外一台webserver)   
    real_server 172.16.3.1 80 {   
        weight 1   
        HTTP_GET {   
            url {   
              path /   
         status_code 200   
            }   
            connect_timeout 2   
            nb_get_retry 3   
            delay_before_retry 1   
        }   
    }
  real_server 172.16.3.10 80 {   
        weight 1   
        HTTP_GET {   
            url {   
              path /   
         status_code 200   
            }   
            connect_timeout 2   
            nb_get_retry 3   
            delay_before_retry 1   
        }   
    }   
}
  由于我们添加了sorry_service 所以我们在DR节点上也安装了nginx(方便测试)   
  # yum install nginx   
  # echo "172.16.3.3" > /usr/share/nginx/html/index.html
  5、测试   
http://172.16.3.88   
  (1)我们测试keepalived集群负责能不能用?(这里不做太多说明)   
        用到的命令:   
        # service keepalived stop|start   
        # ip addr show   
  (2)测试是否可以轮训   
     直接在实体机:   
http://172.16.3.88测试即可   
(3)测试sorry_server   
    关掉所有的 web-server(vm3、vm4)   
      # service nginx stop   
http://172.16.3.88测试即可   
=====================================================================================   
双主模型案例:   
在上面的基础上lvs-dr双主模型的配置文件     
这里我们没有配置,VIP1得地址和禁用同步MAC   
1、vm3 添加 VIP2   
    # ifconfig lo:1 172.16.3.188 netmask 255.255.255.255 broadcast 172.16.3.188 up   
    # route add -host 172.16.3.188 dev lo:1   
2、vm4 添加 VIP2   
    # ifconfig lo:1 172.16.3.188 netmask 255.255.255.255 broadcast 172.16.3.188 up   
    # route add -host 172.16.3.188 dev lo:1   
3、vm1 LVS-DR1 (我们这里的vm1为)配置   
    # cat keepalived.conf   
    ! Configuration File for keepalived
  global_defs {   
       notification_email {   
        root@localhost   
       }   
       notification_email_from ning@qq.com   
       smtp_server 127.0.0.1   
       smtp_connect_timeout 30   
    }   
    vrrp_instance VI_1 {          vm1主   
        state MASTER   
        interface eth0   
        virtual_router_id 88   
        priority 100   
        advert_int 1   
        authentication {   
            auth_type PASS   
            auth_pass ning   
        }   
        virtual_ipaddress {   
        172.16.3.88                                VIP1   
        }   
    }   
    vrrp_instance VI_2 {        vm2 从   
        state BACKUP                         注意的地方   
        interface eth0   
        virtual_router_id 90                    注意地方   
        priority 99                            注意地方   
        advert_int 1   
        authentication {   
            auth_type PASS   
            auth_pass ning1   
        }   
        virtual_ipaddress {   
        172.16.3.188                            VIP2   
        }   
    }
  virtual_server 172.16.3.88 80 {             vm1 web-server  VIP1   
        delay_loop 6   
        lb_algo rr   
        lb_kind DR   
        nat_mask 255.255.0.0   
    #    persistence_timeout 50   
        protocol TCP   
       sorry_server 127.0.0.1 80   
        real_server 172.16.3.1 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }
  real_server 172.16.3.10 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }   
    virtual_server 172.16.3.188 80 {                    vm2 web-servr VIP2   
        delay_loop 6   
        lb_algo rr   
        lb_kind DR   
        nat_mask 255.255.0.0   
    #    persistence_timeout 50   
        protocol TCP   
       sorry_server 127.0.0.1 80   
        real_server 172.16.3.1 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }
  real_server 172.16.3.10 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }   
    }   
    }
  4、vm2 LVS-DR2 (我们vm2的配置文件配置)配置   
    # cat keepalived.conf     
    ! Configuration File for keepalived
  global_defs {   
       notification_email {   
        root@localhost   
       }   
       notification_email_from ning@qq.com   
       smtp_server 127.0.0.1   
       smtp_connect_timeout 30   
    }   
    vrrp_instance VI_1 {   
        state BACKUP                      注意   
        interface eth0   
        virtual_router_id 88               注意   
        priority 99                        注意   
        advert_int 1   
        authentication {   
            auth_type PASS   
            auth_pass ning                 注意   
        }   
        virtual_ipaddress {   
        172.16.3.88                     注意   
        }   
    }   
    vrrp_instance VI_2 {   
        state MASTER                  注意   
        interface eth0   
        virtual_router_id 90         注意   
        priority 100                注意   
        advert_int 1   
        authentication {   
            auth_type PASS   
            auth_pass ning1          注意   
        }   
        virtual_ipaddress {   
        172.16.3.188                  注意   
        }   
    }
  virtual_server 172.16.3.88 80 {   
        delay_loop 6   
        lb_algo rr   
        lb_kind DR   
        nat_mask 255.255.0.0   
    #    persistence_timeout 50   
        protocol TCP   
       sorry_server 127.0.0.1 80   
        real_server 172.16.3.1 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }
  real_server 172.16.3.10 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }   
    virtual_server 172.16.3.188 80 {   
        delay_loop 6   
        lb_algo rr   
        lb_kind DR   
        nat_mask 255.255.0.0   
    #    persistence_timeout 50   
        protocol TCP   
       sorry_server 127.0.0.1 80   
        real_server 172.16.3.1 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }
  real_server 172.16.3.10 80 {   
            weight 1   
            HTTP_GET {   
                url {   
                  path /   
             status_code 200   
                }   
                connect_timeout 2   
                nb_get_retry 3   
                delay_before_retry 1   
            }   
        }   
    }   
    }   
5 、测试:   
   (1)双主模型是否开启(我们这里只开启vm1)   
      # service keepalived start   
      # ip addr show   
      3: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000   
        link/ether 00:0c:29:d7:f7:9c brd ff:ff:ff:ff:ff:ff   
        inet 172.16.3.2/16 brd 172.16.255.255 scope global eth0   
        inet 172.16.3.88/32 scope global eth0                -----------VIP1   
        inet 172.16.3.188/32 scope global eth0                ------------VIP2   
        inet6 fe80::20c:29ff:fed7:f79c/64 scope link     
       valid_lft forever preferred_lft forever   
    (2)再次启动vm2   
        # service keepalived start   
        在vm1上查看   
        # ip addr show     
        3: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000   
        link/ether 00:0c:29:d7:f7:9c brd ff:ff:ff:ff:ff:ff   
        inet 172.16.3.2/16 brd 172.16.255.255 scope global eth0   
        inet 172.16.3.88/32 scope global eth0            ---------------VIP1   
        inet6 fe80::20c:29ff:fed7:f79c/64 scope link     
       valid_lft forever preferred_lft forever   
       在vm2上查看‘   
       # ip addr show   
       2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000   
        link/ether 00:0c:29:0b:35:6a brd ff:ff:ff:ff:ff:ff   
        inet 172.16.3.3/16 brd 172.16.255.255 scope global eth0   
        inet 172.16.3.188/32 scope global eth0          -----------------VIP2   
        inet6 fe80::20c:29ff:fe0b:356a/64 scope link     
       valid_lft forever preferred_lft forever   
    (3)测试主页   
        本机上测试:都会轮训   
http://172.16.3.88   
http://172.16.3.188




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657497-1-1.html 上篇帖子: keepalived.conf配置详解 下篇帖子: 负载均衡(LVS DR模式搭建,DR只用一个公网ip,Keepalived+LVS DR)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表