• nginx+keepalived主从高可用配置


     

    上面有4web服务器  我们实验条件限制,就开两台web服务器1.117  1.119

    一、环境准备:

    系统环境:CentOS 6.5 x86_64

    Nginx版本:nginx v1.6.2

    Keepalived版本:keepalived v1.2.1

    Nginx-1:192.168.1.116 (Master)

    Nginx-2:192.168.1.118 (Backup)

    我这里也是根据前面lnamp实验的基础环境,192.168.1.116nginx里面配置负载均衡是192.168.1.117 / 192.168.1.119 的php网站,

    数据库还是192.168.1.18 和192.168.1.19  所以说每个实验按照顺序来 可以节约很多时间,若果没有环境 就自己快速搭建一个lnamp环境或者用tomcat也行。

    我这里是克隆了192.168.1.116 (克隆如何修改ip自己学习)

    Ip为192.168.1.118  里面配置环境和1.116的一样都是nginx服务器

    也就说两个nginx服务器都可以负载均衡192.168.1.117和1.119的网站

    Windows hosts文件上把1.118也加上去 同时把1.116注释掉 也能访问网站

     

    如果把上面两个dns解析都打开  他只会访问1.116 即使1.116挂了也不会访问1.118 域名一样它会优先匹配第一个ip

     

    以上两个图片可以说明1.118克隆的nginx服务启动后可以访问的,这里就有一个问题如果1.116nginx挂了,dns是不会自动解析1.118的网站因为他们的域名一样,优先访问第一个ip ,同时也就访问不了 ,下面我们就用keepalived来决绝这个问题。

    Keepalived安装配置:

    wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz(两台数据库都要安装)       防火墙和selinux都关掉

    tar zxf keepalived-1.2.1.tar.gz  

    cd keepalived-1.2.1 &&./configure --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686(这里写的是自己机器的内内核 这里记住如果内核Tab不出来, 那么我们就安装内核扩展包 yum –y install kernel kernel-devel)

    这里编译出错 就安装yum -y install popt-devel)

     

    make && make install  

    DIR=/usr/local/ ;cp $DIR/etc/rc.d/init.d/keepalived  /etc/rc.d/init.d/

    cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ && mkdir -p /etc/keepalived

    cp $DIR/sbin/keepalived /usr/sbin/

    两台nginx服务器keepalived安装步骤一样:

    Nginx、Keepalived软件安装完毕,接下来进行详细配置。

    两台服务器端keepalived.conf内容都为如下,都设置为backup,不抢占,注意修改备用机优先级不同:

    ! Configuration File for keepalived
     global_defs {
      notification_email {
          wgkgood@163.com
     }
        notification_email_from wgkgood@163.com
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id LVS_DEVEL
     }
      vrrp_script chk_nginx {
        script "/data/sh/check_nginx.sh"
        interval 2
        weight 2
      }
     # VIP1
     vrrp_instance VI_1 {
         state BACKUP
         interface eth0
         lvs_sync_daemon_inteface eth0
         virtual_router_id 151
         priority 100
         advert_int 5
         nopreempt
         authentication {
             auth_typePASS
             auth_pass  1111
         }
         virtual_ipaddress {
             192.168.1.188
         }
         track_script {
         chk_nginx
        }
     }

    如上配置,我们需要自己建立check_nginx脚本,以方便检查本地Nginx是否存活更好的切换。Check_nginx.sh脚本内容如下:(两台一样)

    #!/bin/bash
    #auto check nginx  process
    #2012-10-16 wugk
     killall  -0   nginx
     if
     [[ $? -ne 0 ]];then
     /etc/init.d/keepalived stop
     fi

    这里 记住 在同一网段内配置多个keepalived服务  virtual_router_id 值不能相同,如果相同会在messages中收到VRRP错误包  这里比如我们在mysql +keepalived 上面的virtual_router_id =151  那么我们在nginx+keepalived上的virtual_router_id就不能等于151

     

    下面我们把hosts文件里面的dns解析换成1.188 windows机器上的)

     

    这里能访问就说明你配置成功了

     

    接下来在另一台nginx服务商配置keepalived  安装步骤一样 唯一就是配置文件里面优先级改一改 改为 90 要比master nginx低一些

     

    配置到这一步就完成了   那么下面我们就测试 vip会不会飘逸 也就是说其中一台nginx挂了 vip会不会自动飘到另一台nginx服务器

     

     

    这时我们发现vip 已经飘到1.118这台nginx服务器了

     

    同样网站还是好的  

     

    这时你在主nginxnginx服务起来 keepalived也起来 再把1.118nginx服务停掉 它会自动跑到主nginx1.116

     

     

     

     

  • 相关阅读:
    创建Variant数组
    ASP与存储过程(Stored Procedures)
    FileSystemObject对象成员概要
    Kotlin 朱涛9 委托 代理 懒加载 Delegate
    Kotlin 朱涛 思维4 空安全思维 平台类型 非空断言
    Kotlin 朱涛7 高阶函数 函数类型 Lambda SAM
    Kotlin 朱涛16 协程 生命周期 Job 结构化并发
    Proxy 代理模式 动态代理 cglib MD
    RxJava 设计理念 观察者模式 Observable lambdas MD
    动态图片 Movie androidgifdrawable GifView
  • 原文地址:https://www.cnblogs.com/zhangan/p/10881266.html
Copyright © 2020-2023  润新知