• 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

     

     

     

     

  • 相关阅读:
    PAT 甲级 1015 Reversible Primes (20 分) (进制转换和素数判断(错因为忘了=))
    『Spring.NET+NHibernate+泛型』框架搭建之DAO(三)★
    (C#)使用队列(Queue)解决简单的并发问题
    VB.NET多线程入门
    Machine Learning With Spark学习笔记(在10万电影数据上训练、使用推荐模型)
    JAVA 并发编程-多个线程之间共享数据(六)
    POJ 3087 Shuffle'm Up(模拟)
    cocos2dx --- 富文本的使用 RichText
    <LeetCode OJ> 217./219. Contains Duplicate (I / II)
    java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
  • 原文地址:https://www.cnblogs.com/zhangan/p/10881266.html
Copyright © 2020-2023  润新知