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

实现nginx高可用的方法有很多种,其中一种比较常见的方法是使用keepalived结合nginx。接下来我将给出一个完整的攻略,包括keepalived、nginx的安装和配置以及两个示例说明。

安装keepalived

keepalived是一个高可用性的解决方案,可以在多个服务器之间维护虚拟IP。在此之前需要安装依赖库和编译工具:

sudo yum install -y gcc make openssl-devel libnfnetlink-devel net-snmp-devel wget

然后,从官网下载最新的稳定版本的keepalived,比如v2.1.5:

wget https://www.keepalived.org/software/keepalived-2.1.5.tar.gz
tar zxvf keepalived-2.1.5.tar.gz
cd keepalived-2.1.5 
./configure
make && sudo make install

配置keepalived

安装完之后,在需要实现高可用的两台服务器上都进行如下配置:

编辑/etc/keepalived/keepalived.conf文件,添加如下内容:

vrrp_script check_nginx {
        script "/usr/local/nginx/sbin/nginx -t"
        interval 2
        fall 2
        rise 2
}
vrrp_instance VI_nginx {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 101
        authentication {
             auth_type PASS
             auth_pass 1111
        }
        track_script {
             check_nginx
        }
        virtual_ipaddress {
             192.168.1.100/24
        }
}

其中,virtual_router_idinterface需要在两台服务器上分别设置不同的值,priority用于设置主服务器的优先级,数字越大优先级越高。

上述配置中,check_nginx是自定义的脚本,用于检测nginx是否正常运行。如果nginx出现问题,则该脚本的返回值为“1”,表示nginx状态异常,keepalived会向另一台服务器发送虚拟IP的切换请求。

安装nginx

安装最新的稳定版本的nginx,比如v1.20.1:

wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_sub_module --with-stream
make && sudo make install

配置nginx

在两台服务器上都进行如下nginx配置:

编辑/usr/local/nginx/conf/nginx.conf文件,修改为如下内容:

user  nobody;
worker_processes  2;
error_log  logs/error.log;
pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        location /health {
            return 200 'ok';
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}
stream {
    upstream nginx_server {
        server 127.0.0.1:80;
    }
    server {
        listen 192.168.1.100:80;
        proxy_pass nginx_server;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_buffer_size 32k;
    }
}

其中,server块中的“location /health”用于健康检查,如果返回值为“ok”则表示nginx健康。

stream块中的upstream用于指定上游服务器的地址,server块用于将虚拟IP绑定到本机,并将请求转发到上游服务器上。

示例说明

下面我们将给出两个示例说明,分别是nginx访问应用服务器的情况和nginx作为反向代理的情况。

示例一:nginx访问应用服务器

假设我们有两台应用服务器,分别为192.168.1.101和192.168.1.102,监听的端口号为8080,使用HTTP协议。

我们需要在nginx配置文件中添加如下内容:

upstream app_servers {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://app_servers;
    }
}

上述配置中,upstream用于指定应用服务器的地址,server用于监听HTTP请求,将请求转发到上游服务器上。

当nginx的虚拟IP被切换到另一台服务器时,上游服务器的地址会自动更新。

示例二:nginx作为反向代理

假设我们有两台Web服务器,分别为192.168.1.201和192.168.1.202,使用HTTP协议。

我们需要在nginx配置文件中添加如下内容:

upstream web_servers {
    server 192.168.1.201;
    server 192.168.1.202;
}

server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://web_servers;
    }
}

上述配置中,upstream用于指定Web服务器的地址,server用于监听HTTP请求,将请求转发到上游服务器上。

当nginx的虚拟IP被切换到另一台服务器时,上游服务器的地址会自动更新。

以上就是使用keepalived结合nginx实现nginx高可用的方法的完整攻略,包括安装和配置keepalived和nginx以及两个示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:keepalived结合nginx实现nginx高可用的方法 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Nginx的rewrite模块详解

    下面我将为您详细讲解“Nginx的rewrite模块详解”的完整攻略,包含两条示例说明。 什么是Nginx的rewrite模块 Nginx的rewrite模块用于在Nginx服务器上对URL进行重写和重定向。它可以帮助我们修改URL,使其更具可读性,更好的满足我们的需求,同时也可以帮助我们进行HTTP重定向。rewrite模块使用正则表达式进行匹配和替换。 …

    Nginx 2023年5月16日
    00
  • nginx 过滤了自定义的请求头参数

      请求头参数为  token_info  然后本地测试是OK的,但是放到服务器上就获取不到请求头参数了,   本地用的单纯 代码启动的http server,没用nginx   后来发现 了这个参数       underscores_in_headers on; #该属性默认为off,表示如果header name中包含下划线,则忽略掉。复制代码    …

    Nginx 2023年4月11日
    00
  • 详解nginx平滑升级的过程

    让我为你详细讲解“详解nginx平滑升级的过程”的完整攻略,同时包含两条示例说明。 详解nginx平滑升级的过程 在对nginx进行升级时,平滑升级是一个比较常用的方式。下面详细介绍nginx平滑升级的过程。 第一步:备份 在升级nginx前,首先需要备份当前的nginx配置和日志文件。可以通过以下命令备份: cp /usr/local/nginx/sbin…

    Nginx 2023年5月16日
    00
  • 详解nginx实现ssl反向代理实战

    首先,关于”详解nginx实现ssl反向代理实战”的完整攻略,可以分为以下几个步骤: 安装nginx和SSL证书 确保已安装最新版的nginx,并且获取证书,可以通过Let’s Encrypt免费获取。 配置nginx 编写nginx配置文件,启用SSL模块,将 SSL 证书和私钥文件绑定到HTTPS服务器的端口上。配置代理服务器,这里以反向代理http:/…

    Nginx 2023年5月16日
    00
  • 如何使用nginx充当mysql的负载均衡器

    使用nginx充当MySQL负载均衡器可以将请求分布到多个MySQL服务器中,以实现高可用性和性能。下面是一个完整攻略,包含两个示例说明。 准备工作 在开始配置之前,需要满足以下条件: 已安装nginx和MySQL 假设有两个MySQL服务器:mysql1和mysql2 已在两个MySQL服务器上创建了相同的数据库和表 示例1:使用nginx的upstrea…

    Nginx 2023年5月16日
    00
  • nginx1.16.1平滑升级到1.18

    系统环境:redhat7.6  nginx版本:nginx1.16.1 1、到官网查看最新稳定版的安装包 http://nginx.org/en/download.html 2、查看已经安装nginx的版本以及安装模块 [dip@dip007 nginx]$ /user/local/nginx/sbin/nginx -Vnginx version: ngin…

    Nginx 2023年4月10日
    00
  • nginx代理实现静态资源访问的示例代码

    首先要明确一下什么是 Nginx 代理和静态资源访问。 Nginx 代理是 Nginx 服务器接收到请求后,将请求转发到其他服务器或者资源上,再将响应结果返回给客户端。静态资源访问则是指通过 HTTP 请求获取静态资源,如 HTML、CSS、JS、图片等。 下面是两个示例,演示如何使用 Nginx 代理实现静态资源访问。 示例一:Nginx 代理实现静态资源…

    Nginx 2023年5月16日
    00
  • Nginx服务器配置性能优化方案

    Nginx服务器配置性能优化方案 Nginx服务器是现代化服务器软件,它可以有效地解决高并发的访问问题。但是,如果不进行配置优化,会影响服务器的性能。下面是一些在Nginx服务器上进行配置优化的方案: 控制进程数:在 Nginx 中可以通过 worker_processes 来设置 Nginx 派生出的 worker 进程的数量,一般来说,worker 进程…

    Nginx 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部