• KeepAlived主备/主主模型高可用Nginx


    部署准备:

      两台CentOS 7主机HA1和HA2

    CentOS 7 基于rpm包安装Nginx:

      由于Base源中没有Nginx,所以要安装EPEL源,命令如下:

    wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    rpm -ivh epel-release-latest-7.noarch.rpm
    yum repolist      ##检查是否已添加至源列表

          然后就可以用yum安装相应的rpm包了

    主备模型部署开始:

      1.两台主机各自安装Nginx,并自行设置好测试页

      2.keepalived配置文件示例:

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
           root@localhost
       }
       notification_email_from admin@ka.com 
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id node1
    }
    
    /*进程状态探测脚本*/
    /*务必要定义在实例之外,再在实例内调用*/
    /*且脚本名字尽量不要用完整单词,如check等,我第一次用此名导致脚本执行失败,可用ck,chk等代替为妙*/
    vrrp_script ck_nginx {
       script "killall -0 nginx"
       interval 2
       weight -5
    }
    
    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.1.100 dev eno16777736 label eno16777736:0
        }
       /*在实例内调用脚本*/ 
        track_script {
            ck_nginx
        }
    }

      3.开始测试效果:

        ①现在备节点启用keepalived,显示

        ②再在主节点开启keepalived,备节点的日志显示

        此时,访问nginx的结果是

        ③在主节点上停止nginx,再次访问服务,结果是HA2,符合需求


    主主模型部署开始:

      HA1:          HA2:

        主          备

        备          主

      HA1配置文件:

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
           root@localhost
       }
       notification_email_from admin@ka.com 
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id node1
    }
    
    vrrp_script ck_nginx {
       script "killall -0 nginx"
       interval 2
       weight -5
    }
    
    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.1.100 dev eno16777736 label eno16777736:0
        }
        track_script {
            ck_nginx
        }
    }
    
    vrrp_instance VI_2 {
        state BACKUP
        interface eno16777736
        virtual_router_id 52
        priority 98
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.1.111 dev eno16777736 label eno16777736:1
        }
        track_script {
            ck_nginx
        }
    }

      HA2配置文件:

    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
           root@localhost
       }
       notification_email_from admin@ka.com 
       smtp_server 127.0.0.1
       smtp_connect_timeout 30
       router_id node1
    }
    
    vrrp_script ck_nginx {
       script "killall -0 nginx"
       interval 2
       weight -5
    }
    
    vrrp_instance VI_1 {
        state BACKUP 
        interface eno16777736
        virtual_router_id 51
        priority 98
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.1.100 dev eno16777736 label eno16777736:0
        }
        track_script {
            ck_nginx
        }
    }
    
    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.1.111 dev eno16777736 label eno16777736:1
        }
        track_script {
            ck_nginx
        }
    }

      测试开始:

      ①现在HA2上开启keepalived,效果如下:

      ②再在HA1上开启,效果是:

      ③回到HA2,使用ifconfig查看结果是:

    注意:

      脚本中用到的killall命令如果是最小化安装默认是没有此命令的,需要运行:

    yum -y install psmisc
  • 相关阅读:
    python中修改元组
    c语言中语音警告转义字符
    linux中防火墙策略管理工具firewalld
    C语言获取数值的最后几位数
    VMware安装win7虚拟机
    python中字符串的常规处理
    专家详解面试成功法宝和技巧
    怎样学好java
    一个Java程序员应该掌握的10项技能
    专家详解面试成功法宝和技巧
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/6218449.html
Copyright © 2020-2023  润新知