暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

keepalived主从及双主的配置

子弹linux联盟 2019-06-29
846

keepalived主从及双主的配置

    

一、什么是Keepalived?

    Keepalived是一个用C编写的路由软件。该项目的主要目标是为Linux系统和基于Linux的基础架构提供简单而强大的负载平衡和高可用性设施。 负载平衡框架依赖于众所周知且广泛使用的Linux虚拟服务器(IPVS)内核模块,提供Layer4负载均衡。Keepalived实现了一组检查程序,以根据其健康状况动态地和自适应地维护和管理负载平衡的服务器池。另一方面,VRRP实现了高可用性 协议。VRRP是路由器故障转移的基础。

Keepalived为VRRP有限状态机实现了一组挂钩,提供低级和高速协议交互。为了提供最快的网络故障检测,Keepalived实现了BFD协议。VRRP状态转换可以考虑BFD提示来驱动快速状态转换。Keepalived框架可以单独使用,也可以一起使用,以提供灵活的基础架构。

二、高可用有两种方式

1、Nginx+keepalived 主从配置

这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。


2、Nginx+keepalived 双主配置

这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两台机器的请求转移到一台机器负担,非常适合于当前架构环境。

三、具体的配置

1、Nginx+keepalived 主从配置

 

1.环境如下

lb-01:192.168.96.130  nginx+keepalived-master

lb-02:192.168.96.131  nginx+keepalived-backup

VIP:192.168.96.138

 



nginx+tomcat负载均衡集群参照 nginx+tomcat负载均衡集群参照

两台机器都要安装nginx 配置文件相同

    

      server 192.168.96.130:8080;      
    server 192.168.96.131:8080;
    }
    server {
    listen 80;
    server_name localhost;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location {
    proxy_pass http://myServer;
    }


    2、nginx结合keepalived高可用

    为什么使用keepalived呢?使用keepalived就用来做高可用的,提供虚拟VIP

    分别在2台机子上安装keepalived

      # yum install keepalived -y

      查看keepalived版本

        # keepalived -v
        Keepalived v1.2.13 (11/20,2015)

        关于2台keepalived配置文件/etc/keepalived

        在130master keepalived配置文件内容如下:

             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_script chk_http_port {

          script "/usr/local/src/check_nginx_pid.sh"

          interval 2 #(检测脚本执行的间隔)

          weight 2

          }

          vrrp_instance VI_1 {
          state MASTER # 备份服务器上将 MASTER 改为 BACKUP
          interface eno16777736 网卡
          virtual_router_id 51 # 主、备机的virtual_router_id必须相同
          priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
          advert_int 1
          authentication {
          auth_type PASS
          auth_pass 1111
          }
          virtual_ipaddress {
          192.168.96.138 VRRP H虚拟地址
          }
          }



          在131-backup keepalived配置文件内容如下

             

            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_script chk_http_port {

            script "/usr/local/src/check_nginx_pid.sh"

            interval 2 #(检测脚本执行的间隔)

            weight 2

            }

            vrrp_instance VI_1 {
            state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
            interface eno16777736
            virtual_router_id 51
            priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
            advert_int 1
            authentication {
            auth_type PASS
            auth_pass 1111
            }
            virtual_ipaddress {
            192.168.96.138
            }

            然后分别启动2台keepalived服务

              [root@lb-01 ~]# systemctl start keepalived.service
              [root@lb-02 ~]# systemctl start keepalived.service

              查看虚拟VIP

              130-master机器查看

              从上面可以看到虚拟VIP地址192.168.96.138


              131-backup机器查看

              上面可以看到没有虚拟VIP地址

              测试访问虚拟VIP

              打开浏览器访问 

               

              此时虚拟VIP可以轮询访问了

              模拟故障

              把130-master nginx和keepalived停止查看是否还能正常提供服务

              [root@lb-01 sbin]# ./nginx -s stop

              [root@lb-01 sbin]# systemctl stop keepalived.service

              此时虚拟VIP已经不再master上了

              客户端打开浏览器访问是否正常访问


              130nginx和keepalived挂了也不影响服务

              查看131backup机器VIP情况

              此时虚拟VIP 已经在131机器上


              3、nginx+keepalived双主模式


              1.其实只是需要更改下keepalived配置文件即可,配置文件实例如下

              增加新的VIP192.168.96.139,192.168.75.138是130机器上主虚拟VIP,192.168.96.139是131机器上主虚拟VIP

              130的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_script chk_http_port {

                script "/usr/local/src/check_nginx_pid.sh"

                interval 2 #(检测脚本执行的间隔)

                weight 2

                }

                vrrp_instance VI_1 {
                state MASTER
                interface eno16777736
                virtual_router_id 51
                priority 100
                advert_int 1
                authentication {
                auth_type PASS
                auth_pass 1111
                }
                virtual_ipaddress {
                192.168.96.138
                }
                }

                vrrp_instance VI_2 {
                state BACKUP
                interface eno16777736
                virtual_router_id 52
                priority 90
                advert_int 1
                authentication {
                auth_type PASS
                auth_pass 1111
                }
                virtual_ipaddress {
                192.168.96.139
                }
                }


                131的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_script chk_http_port {

                  script "/usr/local/src/check_nginx_pid.sh"

                  interval 2 #(检测脚本执行的间隔)

                  weight 2

                  }

                  vrrp_instance VI_1 {
                  state BACKUP
                  interface eno16777736
                  virtual_router_id 51
                  priority 90
                  advert_int 1
                  authentication {
                  auth_type PASS
                  auth_pass 1111
                  }
                  virtual_ipaddress {
                  192.168.96.138
                  }
                  }


                  vrrp_instance VI_2 {
                  state MASTER
                  interface eno16777736
                  virtual_router_id 52
                  priority 100
                  advert_int 1
                  authentication {
                  auth_type PASS
                  auth_pass 1111
                  }
                  virtual_ipaddress {
                  192.168.96.139
                  }
                  }

                  分别启动2台lb上nginx和keepalived服务

                    [root@lb-01 sbin]# ./nginx
                    [root@lb-01 sbin]# systemctl start keepalived.service


                    130查看虚拟ip

                     


                    131查看虚拟ip

                     

                    客户端测试访问虚拟VIP

                    访问虚拟VIP:192.168.96.138结果如下


                    访问虚拟VIP:192.168.96.139结果如下


                     

                    模拟故障

                     

                    把130服务停止

                    查看130虚拟VIP是否存在结果如下

                     

                    测试访问虚拟VIP

                     



                     

                    从上面结果可以看到,即使130机器发生了故障也不影响使用,这样也利用131资源了

                    此时查看一下131虚拟ip结果情况如下


                    双主模式配置成功。


                    喜欢就关注吧:

                            

                               



                    文章转载自子弹linux联盟,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论