精华内容
下载资源
问答
  • 主要介绍了生产环境之Nginx高可用方案实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 通过linux安装nginx,通过lvs+keeplived实现nginx负载均衡高可用,实现企业级7*24 软件高可用方案。 里面有文档,nginx安装步骤原理图,有图有真相不会你找我
  • Nginx实现高可用

    2021-01-07 11:17:05
    Nginx高可用指的是在一台Nginx宕机的情况下有其他Nginx去处理请求。 这里准备两台centos虚拟机测试,两台虚拟机上都要安装Nginx和keepalived. 安装Nginx: //安装插件 yum -y install gcc zlib zlib-devel pcre-...
  • 文章目录一、原理图分析二、准备工作1、需要两台服务器 192.168.211.25 和 192.168.211.352、在两台服务器安装 nginx3、在两台服务器安装 keepalived三、完成高可用配置1、主服务器配置2、从服务器配置3、把两台...
  • 一.修改启动web服务器 二.安装配置nginx 三.安装及配置keepalived 四.测试
  • 这篇文章主要介绍了nginx高可用集群的实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、配置: (1)需要两台nginx服务器 (2)需要keepalived (3)...
  • Nginx高可用集群实战

    2021-01-27 11:40:09
    下面是本人所理解的nginx高可用集群。此实验拓扑图类似keepalived拓扑,把图中keepalived字样换成nginx即可,我就不画了,有意者可重画。 实验拓扑图:配置nginx的upstream模块,让其反代到后端主机,后端主机配置和...
  • Nginx高可用方案

    2020-12-17 09:23:26
    Nginx高可用方案 一、 高可用架构图 通过keepalived的主被模式,实现nginx高可用架构,在nginx后面部署3个pod使用nginx对三个pod进行负载均衡 二、 部署 1. 通过apt-get 的方式安装keepalived以及nginx。 apt-get...

    Nginx高可用方案

    一、 高可用架构图

    通过keepalived的主被模式,实现nginx的高可用架构,在nginx后面部署3个pod使用nginx对三个pod进行负载均衡
    在这里插入图片描述

    二、 部署

    1. 通过apt-get 的方式安装keepalived以及nginx。

    apt-get install keepalived –y
    apt-get install nginx –y

    2. 第三方插件安装

    我们如果需要对后端服务进行检查,以及访问参数进行监控,所以我们需要对nginx进行第三方插件的部署
    我们要准备nginx check插件和nginx vts插件以满足需求
    详细模块安装方式请查阅官方文档或如下网址
    https://blog.csdn.net/weixin_43934379/article/details/107460230;

    三、 配置信息

    1. 网络信息

    keepalived主备节点网络信息
    在这里插入图片描述
    在这里插入图片描述

    2. Keepalived主备节点配置信息

    在这里插入图片描述
    在这里插入图片描述

    3. Nginx服务检测脚本

    上面配置中可以看到有一个脚本文件:/etc/keepalived/nginx_check.sh
    查看nginx是否启动,如果没启动则启动,如果启动不起来,停掉keepalived服务,此时心跳断掉,服务转向另一台nginx。
    在这里插入图片描述

    4. Nginx配置文件信息

    由于高可用部署,所以两台nginx配置文件一致

    配置文件,自由发挥吧!

    展开全文
  • 最近由于项目的需要,学习了一下Nginx的知识,特此记录一下

    Nginx高可用、高并发:Linux上Nginx+Keepalived部署


    Nginx简单介绍:


    Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。具体的介绍大家可以参见百度百科

    • Nginx安装

      1.1 环境准备
      选两台节点部署Nginx,如:192.169.213.128 Nginx1,192.169.213.129 Nginx2,两台节点Nginx的安装完全相同。
      创建下载及安装目录,进入创建目录

      [root@yanhl1 ~]# mkdir -p /usr/local/nginx/src && cd /usr/local/nginx/src
      

      安装c++编译环境,请确保yum服务正常

      [root@localhost src]#  yum install gcc-c++
      

      下载nginx及相关依赖组件 (请确保wget服务正常 )

      [root@localhost src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz 
      [root@localhost src]# wget http://www.openssl.org/source/openssl-fips-2.0.10.tar.gz
      [root@localhost src]# wget http://zlib.net/zlib-1.2.11.tar.gz
      [root@localhost src]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz
      

      依赖软件安装:

       注:以下命令中,./config or ./configure为执行配置脚本,make 为编译文件,make install为安装文件
       &&为串行执行其连接命令。
      

      openssl安装:

      [root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz
      [root@localhost src]# cd openssl-fips-2.0.10
      [root@localhost openssl-fips-2.0.10]# ./config && make && make install
      

      pcre安装

      [root@localhost src]# tar zxvf pcre-8.40.tar.gz
      [root@localhost src]# cd pcre-8.40
      [root@localhost pcre-8.40]# ./configure && make && make install
      

      zlib安装

      [root@localhost src]# tar zxvf zlib-1.2.11.tar.gz
      [root@localhost src]# cd zlib-1.2.11
      [root@localhost zlib-1.2.11]# ./configure && make && make install
      

      1.2 Nginx安装(之前选定测试的两台机子上的安装步骤和配置均相同)

       指定安装路径:./configure --prefix=path
       如果不指定--prefix=path,默认安装路径为usr/local/nginx
      
      [root@localhost src]# tar zxvf nginx-1.10.2.tar.gz
      [root@localhost src]# cd nginx-1.10.2
      [root@localhost nginx-1.10.2]# ./configure --prefix=usr/local/nginx && make && make install
      

      配置nginx系统环境变量,这样执行ngnix脚本命令就不用切到nginx的安装目录下

      [root@localhost nginx]# vim /etc/profile
      

      加入安装路径到系统环境中

      export NGINX_HOME=/opt/software/nginx
      export PATH=$PATH:$NGINX_HOME/sbin
      

      使系统环境变量生效

      [root@localhost nginx]# source /etc/profile
      

      启动nginx并查看是否启动成功,查询到nginx进程即为启动成功

      [root@localhost nginx]# nginx 
      [root@localhost nginx]# ps aux | grep nginx | grep -v grep
      

      浏览器访问服务器ip.,出现以下内容即为安装成功在这里插入图片描述

       nginx命令:
       nginx -s reload|reopen|stop|quit  #重新加载配置|重启|停止|退出 nginx
       nginx -t   #测试配置是否有语法错误
       nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
       -?,-h           : 打开帮助信息
       -v              : 显示版本信息并退出
       -V              : 显示版本和配置选项信息,然后退出
       -t              : 检测配置文件是否有语法错误,然后退出
       -q              : 在检测配置文件期间屏蔽非错误信息
       -s signal    	  : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新		  加载配置文件)
       -p prefix       : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/)
       -c filename     : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf)
       -g directives   : 设置配置文件外的全局指令
      

      1.3 Nginx负载均衡配置及启动

      修改nginx配置文件

      events
      {
      	use epoll;            #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大	提高nginx的性能
      
      	worker_connections  1024;    #单个后台worker process进程的最大并发链接数
      }
      #HTTP服务器
      http {
      #设定mime类型,类型由mime.type文件定义
      include       mime.types;
      default_type  application/octet-stream;
      #设定日志格式
      access_log    /var/log/nginx/access.log;
      
      #设定负载均衡的服务器列表
      upstream load_balance_server {
          #weigth参数表示权值,权值越高被分配到的几率越大
          server 192.168.213.128:8080   weight=5;
          server 192.168.213.129:8080   weight=5;
      }
      
       server {
          #侦听80端口
          listen       80;
          #定义使用www.xx.com访问,须将www.helloworld.com加到/etc/hosts中
          #server_name  www.helloworld.com;
          root /opt/software/apache-tomcat-8.5.35/webapps;
      
          #对所有请求进行负载均衡请求
          location / {
              index       index.html index.htm;  #定义首页索引文件的名称
              proxy_pass  http://load_balance_server ;#请求转向load_balance_server 定义的服务器列表
      
              #以下是一些反向代理的配置(可选择性配置)
              #proxy_redirect off;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
              proxy_set_header X-Forwarded-For $remote_addr;
              proxy_connect_timeout 90;          #nginx跟后端服务器连接超时时间(代理连接超时)
              proxy_send_timeout 90;             #后端服务器数据回传时间(代理发送超时)
              proxy_read_timeout 90;             #连接成功后,后端服务器响应时间(代理接收超时)
              proxy_buffer_size 4k;              #设置代理服务器(nginx)保存用户头信息的缓冲区大小
              proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
              proxy_busy_buffers_size 64k;       #高负荷下缓冲大小(proxy_buffers*2)
              proxy_temp_file_write_size 64k;    #设定缓存文件夹大小,大于这个值,将从upstream服务器传
      
              client_max_body_size 10m;          #允许客户端请求的最大单文件字节数
              client_body_buffer_size 128k;      #缓冲区代理缓冲用户端请求的最大字节数
          }
        }
      }
      

      重启nginx

      nginx -s reopen
      

      1.4 nginx负载均衡测试
      安装Tomcat 进行负载均衡验证测试(两台机子上的tomca安装要完全相同)

      #下载、解压(保证已安装JDK,我的tomcat安装目录:/opt/software/apache-tomcat-8.5.35/)
      wget https://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz
      tar -xzvf apache-tomcat-8.5.35.tar.gz
      

      进入解压目录下的webapp/examples目录下,编辑index.html(另一台机子同样根据本机ip修改)

      [root@localhost  bin]# vim apache-tomcat-8.5.35/webapps/examples/index.html
      

      在这里插入图片描述
      安装好tomcat,进入tomcat安装目录的bin目录启动tomcat,保证tomat服务启动成功

      [root@localhost bin]# sh startup.sh 
      

      进入页面验证nginx负载均衡功能:
      快速刷新页面,页面的ip会交替变化,说明nginx将请求发送到了不同的服务器上的tomcat上,实现了服务的负载均衡。
      在这里插入图片描述
      在这里插入图片描述

    • Keepalived安装

      关于Keepalived的介绍及nginx与其组成高可用结构的原理可以看网友的这篇博客,感谢这位大佬,博客里说的很清楚
      https://www.cnblogs.com/kevingrace/p/6138185.html

      下面我们继续Keepalived的安装。
      我们选择192.169.213.128作为Keepalived的MASTER,192.169.213.129为BACKUP

      2.1 环境准备

      安装依赖包、下载Keepalived

      #之前如果安装过某些依赖包,可以再安装一次,防止安装Keepalived出错
      [root@localhost  src]# cd /usr/local/nginx/src
      [root@localhost  src]# yum install -y libnl*
      [root@localhost  src]# yum install -y libnfnetlink-devel zlib zlib-devel gcc gcc-c++ openssl openssl-devel openssh
      [root@localhost  src]# wget http://www.keepalived.org/software/keepalived-1.3.5.tar.gz
      

      2.2 安装Keepalived

      [root@localhost  src]# tar xvf keepalived-1.3.5.tar.gz
      [root@localhost  src]# cd keepalived-1.3.5 
      [root@localhost  keepalived-1.3.5]# ./configure --prefix=/usr/local/keepalived		  	
      [root@localhost  keepalived-1.3.5]# make 
      [root@localhost  keepalived-1.3.5]# make install
      

      2.3 配置、启动Keepalived
      安装完成后,一般会将Keepalived注册为系统服务,设置为开机启动,防止服务挂掉。

      进入安装目录的etc目录下,将keepalived相应的配置文件拷贝到系统相应的目录当中。keepalived启动时会从/etc/keepalived目录下查找keepalived.conf配置文件,如果没有找到则使用默认的配置。/etc/keepalived目录安装时默认是没有创建的,需要手动创建。

      [root@localhost  keepalived]# mkdir -p /etc/keepalived
      [root@localhost  keepalived]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
      # init.d/keepalived这个文件在解压包的目录下
      [root@localhost  keepalived]# cp /usr/local/nginx/src/keepalived-1.3.5/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
      [root@localhost  keepalived]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
      

      增加nginx状态检测脚本:

      [root@localhost  ~]# cd /usr/local/keepalived/
      [root@localhost  keepalived]# touch check_nginx.sh
      [root@localhost  keepalived]# chmod 755 check_nginx.sh
      [root@localhost  keepalived]# vim check_nginx.sh
      
      #!/bin/bash
      COUNT=$(ps -C nginx --no-header |wc -l)
      echo $COUNT
      #判断Nginx 是否都挂掉了
      if [ $COUNT -eq 0 ]
      then
          #nginx安装地址,如果挂掉了,就启动nginx(nginx命令的地址要写对)
          /usr/local/nginx/sbin/nginx
          echo "重启nginx"
          #等5秒钟后,再次查看是否 启动成功
          sleep 5
          #如果nginx没有启动起来,就直接干掉keepalived
          COUNT=$(ps -C nginx --no-header |wc -l)
          if [ $COUNT -eq 0 ]
          then
                  echo "干掉keepalived",使得从服务器能够接管服务。
                  #如果killall命令不能使用,就需要安装psmisc工具了
                  #yum install -y psmisc
                  killall keepalived
          fi
      fi
      

      编辑配置文件:

      [root@localhost  ~]# vim /etc/keepalived/keepalived.conf 
      

      192.169.213.128 主节点:

       ````
       #配置文件
       ! Configuration File for keepalived
       global_defs {
           #唯一标识,一般为用户名
           router_id username1
       }
       #监控服务.NGINX mysql等
       vrrp_script chk_nginx {
           script "/usr/local/keepalived/check_nginx.sh"
           #每2s检查一次
           interval 2
           #每次检查-20
           weight -20
       }
       vrrp_instance VI_1 {
           ##主从设置 MASTER/BACKUP  
           state MASTER
           #网卡名称
           interface eth0
           #同一个集群下这个 router_id是一样的
           virtual_router_id 51
           #本机的ip,需要修改
           mcast_src_ip 192.168.213.129
           #优先级,从节点 配置,需要小于主节点
           priority 100
           #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
           advert_int 1
           #认证的密码
           authentication {
               auth_type PASS
               #设定授权密码,密码相同的为一个集群
               auth_pass 1111
           }
           #触发的脚本
           track_script {
                 chk_nginx  #检测脚本,上面配置的
           }
           #虚拟ip地址(同一个集群中的虚拟ip必须得相同,可配置多个)
           virtual_ipaddress {
               192.168.213.135
               192.168.213.136
           }
       }        
      

      192.169.213.129 从节点:

      #配置文件
      ! Configuration File for keepalived
      global_defs {
          #唯一标识,一般为用户名
          router_id username2
      }
      #监控服务.NGINX mysql等
      vrrp_script chk_nginx {
          script "/usr/local/keepalived/check_nginx.sh"
          #每2s检查一次
          interval 2
          #每次检查-20
          weight -20
      }
      vrrp_instance VI_1 {
          ##主从设置 MASTER/BACKUP  
          state BACKUP
          #网卡名称
          interface eth0
          #同一个集群下这个 router_id是一样的
          virtual_router_id 51
          #本机的ip,需要修改
          mcast_src_ip 192.168.213.129
          #优先级,从节点 配置,需要小于主节点
          priority 80
          #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
          advert_int 1
          #认证的密码
          authentication {
             auth_type PASS
             #设定授权密码,密码相同的为一个集群
             auth_pass 1111
          }
          #触发的脚本
          track_script {
             chk_nginx  #检测脚本,上面配置的
          }
          #虚拟ip地址
          virtual_ipaddress {
             192.168.213.135
             192.168.213.136
          }
      }
      

      设置keepalived服务开机启动:

      [root@localhost  ~]# chmod 755 /etc/init.d/keepalived #权限
      [root@localhost  ~]# chkconfig keepalived on #开机启动
      [root@localhost  ~]# chkconfig --add keepalived  #加为系统服务
      [root@localhost  ~]# service keepalived start  #启动服务
      [root@localhost  ~]# service keepalived status  #查看服务状态
      

      查看启动情况:在这里插入图片描述

      想要停止服务,执行:

      [root@localhost  ~]# service keepalived stop #查看服务状态
      

      查看keepalived 虚拟出来的ip

      [root@localhost  keepalived]# ip a 
      

      在这里插入图片描述

      通过虚拟ip访问nginx,依然可以实现nginx的请求转发
      在这里插入图片描述
      在这里插入图片描述
      如果一台机子上的nginx挂了而且无法启动成功,检测脚本会停止这台机子上的keepalived服务,虚拟ip就会切到集群的backup节点上,使用这台服务正常的这台机子上的keepalived和nginx,实现nginx高可用。

      2.4 测试Nginx高可用

      先是两台都开启keepalived,然后通过虚拟ip(192.168.213.135)访问, 再关掉第一台的nginx进程:

        nginx -s stop
      

      再通过虚拟ip(192.168.213.135)访问,依然可以访问到tomcat的测试页面,说明虚拟ip成功漂移到了keepalived的备节点,并且使用nginx的备份节点提供服务。

      安装测试结束。

      安装过程中的问题:

      在这里插入图片描述
      执行 journalctl -xe 查看失败信息,也可查看/var/log/messages文件查看相关信息

      1.无法写入pid
      在这里插入图片描述

       vim  /lib/systemd/system/keepalived.service
      

      在这里插入图片描述
      /usr/local/program/keepalived/var/run/keepalived.pid不存在,写入失败,修改为默认路径:

      PIDFile=/var/run/keepalived.pid  
      systemctl daemon-reload    #重新载入 systemd,扫描新的或有变动的单元
      

      2.(VI_1): ip address associated with VRID 25 not present in MASTER advert : 192.168.213.136

      配置文件中的evirtual_router_id 设置问题。同个集群中的virtual_router_id 必须相同 ,默认为51,不同集群的中的virtual_router_id必须不同。

      参考文章:https://www.cnblogs.com/taiyonghai/p/6728707.html

    展开全文
  • keepalived直译就是保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某...# nginx+keepalived 高可用一键脚本for ubuntu 16.04 if [ $# -ne 4 ]; then echo USAGE
  • Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP...
  • Nginx配置——搭建 Nginx 高可用集群(双机热备)

    一、引言

    在之前几篇文章中,都是介绍了一台Nginx做反向代理服务器,结构图如下。
    但有没有想过,这种架构图,万一Nginx代理服务器挂掉了怎么办?后面的服务就都没有办法访问了,这是一个严重的问题。那怎么解决这个文件呢?这就是下面要说的Nginx的高可用集群,也可以叫双机热备。

    在这里插入图片描述

    在学习之前,如果没有 Linux 和 Nginx 环境,或者想看一下反向代理、负载均衡、动静分离如何配置,可以参考下面文章。

    VirtualBox安装Centos7

    在Centos7下安装Nginx

    Nginx配置——反向代理

    Nginx配置——负载均衡

    Nginx配置——动静分离

    二、Nginx 高可用集群

    高可用集群的架构图

    下面使用两台Nginx做反向代理服务器,当其中一台Nginx宕机之后,仍能用另一台来工作,两台Nginx之间用keeplived来监测心跳。
    在这里插入图片描述

    三、如何配置

    1、需要的环境

    两台 Linux 并各自安装 Nginx 和 keepalived

    2、配置高可用的准备工作

    (1)需要两台服务器 192.168.17.129 、192.168.17.131
    (2)在两台服务器安装 Nginx(可以参考前面文章)
    (3)在两台服务器安装 keepalived

    3、两台服务器都安装 keepalived

    (1)、使用 yum 命令进行安装

    yum install keepalived –y
    

    (2)、keepalived 安装之后,其配置文件目录如下:

    /etc/keepalived/keepalivec.conf 
    
    4、完成高可用配置(主从配置)

    (1)修改/etc/keepalived/keepalivec.conf 配置文件

    global_defs {
    	 notification_email {
    		 acassen@firewall.loc
    		 failover@firewall.loc
    		 sysadmin@firewall.loc
    	 }
    	 notification_email_from Alexandre.Cassen@firewall.loc
    	 smtp_server 192.168.17.129
    	 smtp_connect_timeout 30
    	 # 通过它,可以访问到主机,在hosts文件中,要做映射关系,类似于 127.0.0.1 LVS_DEVEL
    	 router_id LVS_DEVEL  
    }
    
    vrrp_script chk_http_port {
    	 script "/usr/local/src/nginx_check.sh"	 # 执行脚本所在的位置
    	 interval 2 	#检测脚本执行的间隔,单位秒,每个2秒执行一次脚本
    	 weight 2
    }
    	
    vrrp_instance VI_1 {
    	 state MASTER	 # 备份服务器上将 MASTER 改为 BACKUP
    	 interface ens33	 # 绑定的网卡
    	 virtual_router_id 51	 # 主、备机的 virtual_router_id 必须相同
    	 priority 90 	# 主、备机取不同的优先级,主机值较大,备份机值较小
    	 advert_int 1 	#每隔一秒发送一次心跳,确保从服务器是否还活着
    	 authentication {		# 心跳检测需要的密码
    		 auth_type PASS
    		 auth_pass 1111
     	}
    	 virtual_ipaddress {
    	 192.168.17.50 	# VRRP H 虚拟地址
    	 }
    }
    

    (2)在/usr/local/src 添加检测脚本,检查Nginx是否还活着

    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
     /usr/local/nginx/sbin/nginx 	#Nginx启动命令的位置
     sleep 2
     if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
     killall keepalived
     fi
    fi
    

    (3)把两台服务器上 nginx 和 keepalived 启动

    启动 nginx:	./nginx
    启动 keepalived:	systemctl start keepalived.service
    

    可以使用ipconfig,查看虚拟Ip的绑定
    在这里插入图片描述

    5、最终测试

    (1)在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50
    在这里插入图片描述

    (2)把主服务器上的(192.168.17.129)Nginx 和 keepalived 停止,再输入 192.168.17.50,依旧可以访问Nginx。
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • keepalived+nginx高可用

    2021-01-09 11:36:27
    通常情况下,利用nginx进行负载均衡,使后端服务高可用,某个后台服务出现问题可以动态剔除,不影响系统的正常运行,但是nginx只有一个,这时候是个瓶颈,会出现单点故障,nginx出现问题,服务将会出现中断,影响...
  • 主要介绍了keepalived+nginx高可用实现方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 当我们其中一台nginx挂掉之后另一台nginx就会顶上来,这就是我们说的nginx高可用 准备工作 提前准备好如下工作 1.需要两台服务器 2.在两台服务器安装好nginx 安装keepalived 在两台服务器上都安装keepalived 安装...

    前言

    在这里插入图片描述

    我们使用keepalived来管理两台设备的Nginx,并虚拟出一个IP,外界请求直接访问虚拟IP而不是真正的Nginx,让虚拟IP去访问提供服务的Nginx然后再由Nginx去访问tomcat。当我们其中一台nginx挂掉之后另一台nginx就会顶上来,这就是我们说的nginx的高可用

    准备工作

    提前准备好如下工作

    1.需要两台服务器
    2.在两台服务器安装好nginx

    安装keepalived

    在两台服务器上都安装keepalived

    安装yum命令

    yum install keepalived
    

    keepalived常用命令

    systemctl start keepalived.service
    
    systemctl stop keepalived.service
    
    systemctl restart keepalived.service
    

    keepalived查看日志

    tail -f  /var/log/messages
    

    安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf,我们下面的就是配置这个文件

    配置高可用

    修改keepalived配置文件

    首先我们配置keepalived

    找到第一台机器的/etc/keepalived目录的keepalived.conf配置文件,打开;

    在这里插入图片描述

    我们主要是配置这两个节点,下方其他的是配置的lvs,我们不需要修改

    将这两块内容修改如下

    global_defs {
    
       notification_email { # keepalived服务宕机异常出现的时候,发送通知邮件 可以是多个
    
         acassen@firewall.loc  #  收件人邮箱1
    
         failover@firewall.loc #  收件人邮箱2
    
         sysadmin@firewall.loc #  收件人邮箱3
    
       }
    
       notification_email_from Alexandre.Cassen@firewall.loc  #邮件发件人
    
       smtp_server 192.168.200.1  # 邮件服务器地址
    
       smtp_connect_timeout 30   # 超时时间
    
       router_id LVS_DEVEL   # 机器标识 局域网内唯一即可
    
       vrrp_skip_check_adv_addr # 默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查)。
    
       #vrrp_strict   # 严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
    
       vrrp_garp_interval 0  # 小数类型,单位秒,在一个网卡上每组gratuitous arp消息之间的延迟时间,默认为0,一个发送的消息=n组 arp报文
    
       vrrp_gna_interval 0 # 小数类型,单位秒, 在一个网卡上每组na消息之间的延迟时间,默认为0
    
    }
    
     
    
    # vrrp实例  我们集群设置 多机配置,除了state和priority不一样,其他都一样
    
    vrrp_instance VI_1 {
    
        state MASTER  # 服务器状态 MASTER是主服务器  BACKUP是备份服务器 主服务器的priority要比备份服务器大
    
        interface ens33 # 通信端口 通过ip addr可以看到 根据自己的机器配置
    
        virtual_router_id 51  # vrrp实例id  keepalived集群,实例id必须一致
    
        priority 100  # 权重比 主服务器的priority要比备份服务器大
    
        advert_int 1  # 心跳间隔  单位秒  keepalived多机器集群 通过心跳检测,如果发送心跳没反应 就立刻接管;
    
        authentication { # 服务器之间通信密码
    
            auth_type PASS
    
            auth_pass 1111
    
        }
    
        virtual_ipaddress { # 自定义虚拟IP 
    
            192.168.91.199
    
        }
    
    }
    

    把这个配置复制到从服务器上,state改为BACKUP,从服务器的priority改小

    到这里我们高可用就初步完成了,可以开启nginx和keepalived测试了

    这里注意别踩到小白坑(我踩到了/(ㄒoㄒ)/~~)↓

    ps:自定义的虚拟ip得根据真实ip设置,否则会出现真实ip可以访问到,虚拟ip访问不到
    例:比如我的真实ip是192.168.91.138,那我的虚拟ip可以设置为192.168.91.139~255,前面三个数得一致,后面一个数可以是139到255

    在这里插入图片描述

    添加检测脚本

    上面的配置已经可以初步测试nginx的高可用,比如我们关掉主服务器的keepalived,从服务器的nginx就会替代主nginx。

    但如果是我们的主nginx挂掉而主keepalived没挂,我们从nginx就不能替代主nginx,实际情况中nginx比keepalived更容易挂掉,那这情况怎么解决你呢?

    我们可以在keepalived添加脚本,当检测到我们的nginx挂掉之后而keepalived没挂掉,我们可以让脚本主动尝试重启nginx服务,如果实在重启不了nginx,我们让脚本主动关闭keepalived好让从nginx替代上来

    修改keepalived.conf

    在这个位置添加配置

    在这里插入图片描述

    vrrp_script chk_http_port {
    
     script "/home/nginx_check.sh" #脚本地址
    
     interval 2 #检测脚本执行的间隔
    
     weight 2 #比重
    
    }
    

    然后相对应的地址创建nginx_check.sh

    touch /home/nginx_check.sh
    

    脚本内容

    #!/bin/bash
    
    echo 'xxxxxx'
    
    count_nginx=`ps -ef|grep -w nginx|grep -v grep|wc -l`
    
    echo $count_nginx
    
    if [ $count_nginx -eq 0 ];then
    
        systemctl start nginx.service
    
        sleep 2
    
        if [ `ps -ef|grep -w nginx|grep -v grep|wc -l` -eq 0 ];then
    
            systemctl stop keepalived.service
    
        fi  
    
    fi
    

    启动nginx和keepalived

    systemctl start nginx.service 
    systemctl start keepalived.service
    

    测试

    修改两台服务nginx的index页面用来区分是哪台服务器的nginx

    vim /usr/share/nginx/html/index.html
    

    输入虚拟ip访问

    在这里插入图片描述

    关闭主服务器的keepalived从服务的nginx会自动顶替上来

    在这里插入图片描述

    也可以关闭只nginx测试我们配置的脚本

    如果出现无法关闭keepalived问题,尝试下面的步骤

    systemctl start keepalived.service
    
    systemctl stop keepalived.service
    
    systemctl restart keepalived.service
    

    关闭keepalived

    systemctl stop keepalived.service
    

    查看keepalived进程是否真的关闭

    ps -ef|grep keep
    

    在这里插入图片描述
    图中情况说明没有关闭,说明关闭命令无法关闭keepalived

    这种情况是因为systemd启动服务脚本的问题

    修改systemd启动服务脚本

    vim /usr/lib/systemd/system/keepalived.service
    

    注释掉一行KillMode=process

    KillMode=process的大致意思是当停止keepalived的时候只会停掉主进程,而主进程产生的子进程是不会被干掉的。而killmode的默认值是control-group,意思时所有进程都会被干掉,我这里选择把这项注释掉。

    在这里插入图片描述

    重载配置

    systemctl daemon-reload
    

    再试试关闭keepalived,还不行重启服务器试试!!!

    展开全文
  • 搭建 Nginx 高可用集群 (Keepalived+Nginx)

    千次阅读 2020-04-20 18:19:39
    Keepalived+Nginx 高可用集群 (主从模式) 单台的nginx如果宕机,会导致整个系统瘫痪,如果使用nginx集群,当一台nginx宕机,备nginx依然可以提供服务。 环境准备 配置高可用准备工作: 需要2台服务器 192.169....
  • LVS+KeepAlived+Nginx高可用实现方案
  • 在前两篇的基础上,搭建Nginx高可用其实很简单。 哨兵加VIP漂移实现Redis集群高可用 HAProxy+Keepalived(VIP)搭建Rabbitmq高可用镜像队列 主要组件 Nginx Keepalived 搭建流程 安装Nginx和Keepalived 编写配置...
  • keepalived实现nginx高可用 之前发过一篇使用keepalived实现nginx负载均衡的高可用,当时使用的是两台nginx,这次使用三台nginx来做个实验。 环境 zabbix-server 192.168.186.10 zabbix-agent-1 192.168.186.11 ...
  • Nginx高可用

    千次阅读 2020-07-19 21:33:02
    Nginx高可用 nginx优点 占内存小,可以实现并发连接、处理响应快。 可以实现http服务器、虚拟主机、反向代理、负载均衡。 nginx配置简单 可以不暴露真实服务器IP地址 nginx.conf文件的结构 nginx的配置由特定的...
  • nginx和keepalived实现nginx高可用

    万次阅读 2017-04-09 00:19:43
    首先介绍一下Keepalived,它是一个性能的服务器高可用或热备解决方案,Keepalived主要来防止服务器单点故障的发生问题,可以通过其与Nginx的配合实现web服务端的高可用。  Keepalived以VRRP协议为实现基础,用...
  • 首先准备两台机器,每个机器都安装有 keepalived 以及 Nginxnginx 反向代理两个 tomcat 实现负载均衡,所以每个机器上安装docker 以及 tomcat。 1. 配置 Keepalived 1.1 配置 MASTER 第一步:修改 /etc/hosts ...
  • nginx高可用demo.zip

    2021-05-18 10:25:25
    06Nginx、keepalived、安装使用 源码包
  • 在系统设计中,可以利用Nginx的反向代理和负载均衡实现后端应用的高可用性,同时我们还需要考虑Nginx的单点故障。如果Nginx所在服务器宕机,或者Nginx服务不可用就会造成整个系统的不可用。为了解决这个问题可以使用...
  • 中级:Nginx高可用WEB实战演练

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,807
精华内容 46,322
关键字:

nginx高可用