nginx+keepalived 高可用主从配置详解

本文介绍了nginx+keepalived 高可用主从配置详解,分享给大家,具体如下:

一、系统环境及软件版本

CentOS 6.6 x64
keepalived-1.2.18.tar.gz
nginx-1.6.2.tar.gz

主服务器:192.168.38.64

从服务器:192.168.38.66

VIP :192.168.38.100

二、nginx安装 (主从安装一致)

1.安装依赖环境

代码如下:

yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-developenssl openssl-devel

  

2.上传nginx到 opt 目录

3.解压安装

  # tar -zxvf nginx-1.6.2.tar.gz

  # cd nginx-1.6.2
  # ./configure --prefix=/opt/nginx (prefix=/opt/nginx 这个指定的是 nginx目录)
  # make && make install

4.修改 nginx监听端口 及 index.html

# vi /opt/nginx/conf/nginx.conf

vi /opt/nginx/html/index.html

5. nginx 启动及常用命令

配置测试: /opt/nginx/sbin/nginx -t 出现如下界面说明配置没问题

启动 : /opt/nginx/sbin/nginx

重启 : /opt/nginx/sbin/nginx -s reload

停止 : /opt/nginx/sbin/nginx -s stop

6.开机启动 nginx

vi /etc/rc.local

加入: /opt/nginx/sbin/nginx

7.修改防火墙开放端口

vi /etc/sysconfig/iptables

添加 : -A INPUT -p tcp -m state --state NEW -m tcp --dport 8888 -j ACCEPT

重启防火墙 : service iptables restart

8.问题

启动 nginx遇到的问题

vi /etc/ld.so.conf

添加: /opt/nginx/lib/

9.nginx的负载均衡

nginx的负载均衡主要是 由upstream 这一模块完成

修改 nginx的配置文件

vi /data/nginx/conf/nginx.conf

添加如下内容:(web_pools 这个名称可变)

  upstream web_pools {
  server 10.0.6.108:7080weight=1;
   server 10.0.0.85:8980weight=1;
  }

将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称即可

结果如下:

其中 weight是权重 backup是备用服务器 ,只有其它服务器宕机后,备用服务器才会启动。

三、keepalived 安装

1.keepalived上传到 opt目录下

2.解压 安装  

  tar -zxvf keepalived-1.2.18.tar.gz
  cd keepalived-1.2.18
  ./configure --prefix=/opt/keepalived
  make && make install

3.将keepalived 安装成 linux服务

cp /opt/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
  cp /opt/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
  ln -s /opt/sbin/keepalived /usr/sbin/
  ln -s /opt/keepalived/sbin/keepalived /sbin/

4.设置 keepalived 服务开机启动

chkconfig keepalived on

5.修改 Keepalived 配置文件

vi /etc/keepalived/keepalived.conf

  ! Configuration File for 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_01 #这个配置要唯一
  } 

  vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
    interval 2 ## 检测时间间隔
    weight -20 ## 如果条件成立,权重-20
  } 

  vrrp_instance VI_1 { #实例 VI_1 名字可以随意 但是不建议修改
    state MASTER # 主服务器MASTER 从服务器 BACKUP
    interface em1 # em1 网卡
    virtual_router_id 51 #virtual_router_id 主备要一致
    priority 100   # 优先级 数字越大 优先级越高 priority 的值 主服务器要大于 从服务器
    advert_int 1  #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
    authentication { # 主从通信 验证类型及密码
      auth_type PASS  #设置vrrp验证类型,主要有PASS和AH两种
      auth_pass 1111  #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    } 

    ## 将 track_script 块加入 instance 配置块
    track_script {
      chk_nginx ## 执行 Nginx 监控的服务
    }

    virtual_ipaddress {
    192.168.38.100/24 #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
    }
  } 

6.编写 Nginx 状态检测脚本

vi /etc/keepalived/nginx_check.sh

内容如下:

  #!/bin/bash

  A=`ps -C nginx –no-header |wc -l`
  if [ $A -eq 0 ];then
    /opt/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then

      killall keepalived
    fi
  fi

保存后,给脚本赋执行权限:chmod +x/etc/keepalived/nginx_check.sh

7.注意点:Keepalived主从配置文件不同点

  a.router_id 不一致

  b.state 主服务器是MASTER ,从服务器是 BACKUP

  c.priority 主服务器 大于 从服务器

8.keepalived 命令

  启动 : servicekeepalived start

  停止: servicekeepalived stop

  重启: servicekeepalived restart

9.注意的问题

a.vip没绑定成功

解决方案:ip addr 查看 本地ip所在网卡的名称 ,然后修改 配置文件

vi /etc/keepalived/keepalived.conf

保存后 servicekeepalived restart 重启 keepalived服务即可

10.测试

启动主从nginx和keepalived 服务

主从服务器分别: ip add | grep 192.168.38.100

在192.168.38.64 可看到

同时 在192.168.38.66

当杀死 主服务器上的keepalived 则 从服务器

当再次启动主服务器上的keepalived则结果主服务器上有结果,从服务器上没结果。

当杀死 nginx后,keepalived则会自动启动 nginx服务

11. keepalived脑裂 (ip add | grep 192.168.38.100 在主从都有结果)

解决方案:防火墙问题

iptables-IINPUT4-pvrrp-jACCEPT  

service iptables save

service iptables restart

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • keepalived实现nginx高可用

    keepalived直译就是保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,keepalived实现的基础是vrrp,至于vrrp是什么请直接看这里vrrp,下面我们直接看应用吧. keepalived使用 为了方便使用,写了一个基于ubuntu 16.04 server 的一键配置脚本,配置使用相关就在脚本里见吧 #!/bin/bash # nginx+keepalived 高可用一键脚本for

  • 详解Keepalived+Nginx实现高可用(HA)

    keepalived的HA分为抢占模式和非抢占模式,抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来.非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP.下面分别介绍CentOS7下抢占模式和非抢占模式的配置方式: 1.方案规划 VIP IP 主机名 Nginx端口 192.168.1.210 192.168.1.201 nginx-01 80 192.168.1.210 192.168.1.202 nginx-02 80 两台服务器的VIP

  • keepalived+nginx高可用实现方法示例

    1.keepalived介绍 keepalived最初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了实现高可用的VRRP功能.keepalived除了能够管理LVS软件外,还能支持其他服务的高可用解决方案. keepalived通过VRRP协议实现高可用功能的.VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议.VRRP出现的目的就是为了解决静态路由单点故障问题,它能保证当个别节点宕机时,整个网络可以不

  • keepalived结合nginx实现nginx高可用的方法

    1.简介 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障.一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性.Keepalived是VRRP的完美实现,因此在介绍keepalived之前,先介绍

  • nginx+keepalived 高可用主从配置详解

    本文介绍了nginx+keepalived 高可用主从配置详解,分享给大家,具体如下: 一.系统环境及软件版本 CentOS 6.6 x64 keepalived-1.2.18.tar.gz nginx-1.6.2.tar.gz 主服务器:192.168.38.64 从服务器:192.168.38.66 VIP :192.168.38.100 二.nginx安装 (主从安装一致) 1.安装依赖环境 复制代码 代码如下: yum install gcc gcc-c++ make automake

  • nginx七层负载均衡配置详解

    目录 一.负载均衡介绍 二.nginx下载安装 1.下载nginx源码包 2.安装并启用 三.nginx七层负载均衡配置 real server设置: 客户端设置: 四.nginx扩充调度算法(sticky) 1.下载扩展包 2.编译前做一些优化: 3.重新编译 一.负载均衡介绍 1)四层负载均衡 所谓四层就是基于IP+端口的负载均衡 四层负载均衡,是指OSI七层模型中的传输层,传输层已经支持TCP/IP的控制,所以只需要对客户端的请求进行TCP/IP协议的包转发就可以实现负载. 2)七层负载均

  • Linux 系统 nginx 服务器安装及负载均衡配置详解

    nginx(engine x) 是一个 高性能 的 HTTP 和 反向代理 服务器.邮件代理服务器以及通用的 TCP/UDP 代理服务器.其特点为轻量级(占用系统资源少).稳定性好.可扩展性(模块化结构).并发能力强.配置简单等. 本文主要介绍在测试环境中通过 nginx 实现基本的 负载均衡 功能. nginx 可以提供 HTTP 服务,包括处理静态文件,支持 SSL 和 TLS SNI.GZIP 网页压缩.虚拟主机.URL 重写等功能,可以搭配 FastCGI.uwsgi 等程序处理动态请求

  • nginx 防盗链防爬虫配置详解

    新建配置配置文件 (例如进入到nginx安装目录下的conf目录,创建: agent_deny.conf) 禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } 禁止指定UA及UA为空的访问 #forbidden Scrapy if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } #forbidden UA if

  • Redis服务之高可用组件sentinel详解

    前文我们了解了redis的常用数据类型相关命令的使用和说明,回顾请参考https://www.jb51.net/article/120364.htm 今天我们来聊一下redis的高可用组件sentinel:首先来回顾下redis的主从同步,主从同步最主要的作用是让master的数据在其他服务器上实时存在副本,起到了备份的效果:对于redis的读写来说,主从架构能够让读的请求分散到多个从服务器上,从而降低了单台redis读请求的io压力,同时也提高了redis读请求的并发能力:通常为了数据的一致性

  • Docker mysql 主从配置详解及实例

    Docker mysql 主从配置 1.首先创建两个文件my-m.cnf(主库配置) .my-s.cnf(从库配置) my-m.cnf 内容如下 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU

  • Nginx+Tomcat的服务器端环境配置详解

    Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK安装: #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz ;mkdir -p /usr/java/ ;mv jdk1.7.0_25/ /usr/java/ 下. #然后配置

  • Nginx服务器搭建和基本配置详解

    Nginx(engine X) 是一个高性能的 HTTP 服务器和反向代理服务器,这款软件开发的目的是为了解决 C10k 问题. Nginx 的架构利用了许多现代操作系统的特性,以实现一个高性能的 HTTP 服务器.例如在 Linux 系统上,Nginx 使用了 epoll,sendfile,File AIO,DIRECTIO 等机制,使得 Nginx 不仅性能高效,而且资源占用率非常低,官方宣称 nginx 维持 10000 个非活动的 HTTP keep-alive 连接仅需要 2.5M 内

  • Nginx防止流量攻击的配置详解

    使用场景 最近在工作中遇到一个问题,项目中报告查询系统负载均衡集群相关配置已经完成,两种实现方式分别是基于Ehcache和Redis的session管理策略. 大家都知道服务器资源有限的,但是客户端来的请求是无限的(不排除恶意攻击), 为了保证大部分的请求能够正常响应,不得不放弃一些客户端来的请求,所以我们会采用Nginx的限流操作, 这种操作可以很大程度上缓解服务器的压力, 使其他正常的请求能够得到正常响应. 如何使用Nginx实现基本的限流,比如单个IP限制每秒访问50次.通过Nginx限流

  • Nginx服务器中的location配置详解

    语法 location  [=|~|~*|^~] /uri/  {...} 规则 = : 表示精确的URI匹配(有兴趣的同学可以看一下url和uri的区别) -: 表示区分大小写的正则匹配 -*:表示不区分大小写的正则匹配 !~ && !~*:表示区分大小写不匹配的正则和不区分大小写的不匹配的正则 /:通用匹配,任何请求都会匹配到 location匹配目标 location匹配测试只使用请求URI的部分,而不使用参数部分.(原因:参数的写法太多,无法精确匹配) location匹配顺序 多

随机推荐