zoukankan      html  css  js  c++  java
  • nginx(三、keepalived高可用)

    介绍

    keepalived是基于VRRP协议来实现的高可用方案,VRRP协议(Virtual Router Redundancy Protocol)即虚拟路由冗余协议,将多台功能相同的路由器组成一个路由组,在组里会有一个master和多个backup,对外看来仿佛是一个虚拟路由器,拥有一个虚拟IP(VIP),占有这个IP的master响应和转发IP的数据包。master会向其他的backup路由器发送数据包,如果在超时时间内backup没有收到数据包则认为master宕机了,就通过优先级选举出来一个backup作为master来保证路由的高可用。

    安装部署

    安装环境

    yum install -y gcc

    yum install -y openssl openssl-devel

    yum install -y libnl libnl-devel

    yum install -y libnfnetlink-devel

    解压keepalived

    tar -zxvf keepalived-2.0.20.tar.gz

    检查安装环境并指定安装路径

    cd  keepalived-2.0.20

    ./configure --prefix=/usr/local/keepalived

    编译

    make && make install

    开机启动

    因为没有用默认安装,需自行移动文件

    mkdir /etc/keepalived

    cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

    cp /usr/local/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived

    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

    启动服务

    systemctl start keepalived

    查看日志

    这里启动可能会报错,因为配置文件有问题,可以在/var/log/message里面查看日志

    设置开机启动

    systemctl enable keepalived

    取消开机启动

    systemctl disable keepalived

    配置文件

    /etc/keepalived/keepalived.conf

    ! Configuration File for keepalived
    
    # 全局配置 删掉了邮箱部分暂时用不到
    global_defs {
       # 负载均衡唯一标识,其实就是一个标识,我这里用的是IP
       router_id 10.32.16.195
       # 健康检查的用户组
       script_user root
       # 想要执行健康检查的脚本,必须加上这个配置,不然没权限
       enable_script_security
       # 默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查)。
       # vrrp_skip_check_adv_addr
       # 严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
       # vrrp_strict
    }
    
    # vrrp配置
    # 1.vrrp_script 定时执行脚本
    vrrp_script nginx_check {
        # 执行脚本路径
        script "/etc/keepalived/nginx_check.sh"
        # 执行间隔之间默认1S
        interval 1
        # 超时时间为失败
        timeout 10
        # 优先级(-254~254)默认2
        weight -20
    }
    
    # 2.vrrp_instance 节点信息
    vrrp_instance VI_1 {
        # 指定节点的处所状态MASTER | BACKUP
        state MASTER
        # 网卡信息 ip address查看网卡信息
        interface ens33
        # 让master和backup在同一个虚拟路由里,id必须相同
        virtual_router_id 51
        # 优先级 谁高谁将成为master
        priority 100
        # 设置为不抢占。默认是抢占的,当高优先级的机器恢复后,会抢占低优先级的机器成为MASTER,而不抢占,则允许低优先级的机器继续成为MASTER,即使高优先级的机器已经上线。如果要使用这个功能,则初始化状态必须为BACKUP。
        # nopreempt
        # 指定发送vrrp通告的时间间隔1S
        advert_int 1
        authentication {
            # 认证方式 PASS(简单密码认证,推荐) | AH(IPSEC认证,不推荐)
            auth_type PASS
            # 密码最多8位
            auth_pass 1111
        }
        # 指定VIP地址,可虚拟多个VIP地址
        virtual_ipaddress {
            10.32.16.200
        }
        track_script {
            nginx_check
        }
    }
    
    # 本来后面还有virtual_server等配置,一般用在超大型LVS中,这里不介绍

    /etc/keepalived/check_nginx.sh(这里将文件权限改为755,不知道为什么777报错)

    #!/bin/bash
    run=`ps -C nginx --no-header | wc -l`
    if [ $run -eq 0 ]
    then
    /usr/local/nginx/sbin/nginx -s stop
    /usr/local/nginx/sbin/nginx
    sleep 3
    if [ `ps -C nginx --no-header | wc -l` ]
    then
    killall keepalived
    fi
    fi

    集群配置

    将195的节点定为master,196的节点定义为backup

    启动两台服务器的keepalived,可以看到nginx也跟着启动了,在nginx80调整页面做个标记以便测试。

     

     而我们通过keepalived虚拟了一个VIP的地址是10.32.16.200,我们访问这个VIP地址

     我们看到通过访问这个虚拟IP可以访问到我们196的nginx,这样集群就建立成功了。

    这里可以把196的keepalived关闭看看效果:

    systemctl stop keepalived

     可见当196的服务挂掉之后,就切换到了195,这样就实现了nginx的高可用。

  • 相关阅读:
    184. Department Highest Salary【leetcode】sql,join on
    181. Employees Earning More Than Their Managers【leetcode】,sql,inner join ,where
    178. Rank Scores【leetcode】,sql
    177. Nth Highest Salary【leetcode】,第n高数值,sql,limit,offset
    176. Second Highest Salary【取表中第二高的值】,sql,limit,offset
    118. Pascal's Triangle【LeetCode】,java,算法,杨辉三角
    204. Count Primes【leetcode】java,算法,质数
    202. Happy Number【leetcode】java,hashSet,算法
    41. First Missing Positive【leetcode】寻找第一个丢失的整数,java,算法
    删除
  • 原文地址:https://www.cnblogs.com/Unlimited-Blade-Works/p/12617581.html
Copyright © 2011-2022 走看看