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设置成服务并开机自动启动的配置

    将Nginx设置成服务 步骤一:创建Nginx服务文件在/etc/systemd/system目录下创建一个新的Nginx服务文件nginx.service,内容如下: [Unit] Description=nginx service After=network.target [Service] Type=forking PIDFile=/run/nginx…

    Nginx 2023年5月16日
    00
  • Nginx处理请求的过程

    HTTP 连接建立和请求处理过程 HTTP 连接建立和请求处理过程如下: Nginx 启动时,Master 进程,加载配置文件。 Master 进程,初始化监听的 Socket。 Master 进程,Fork 出多个 Worker 进程。 Worker 进程,竞争新的连接,获胜方通过三次握手,建立 Socket 连接,并处理请求。 Nginx 高性能、高并发…

    2023年4月10日
    00
  • Nginx配置SSL和WSS步骤介绍

    下面是 Nginx 配置 SSL 和 WSS 的完整攻略。同时提供两个示例说明。 1. 生成 SSL 证书 生成 SSL 证书是配置 HTTPS 的第一步。可以使用 OpenSSL 工具生成自签名的证书,或者购买证书。 1.1 自签名的证书 使用 OpenSSL 工具生成自签名的 SSL 证书: # 生成私钥 openssl genrsa -out serv…

    Nginx 2023年5月16日
    00
  • Nginx+Keepalive实现高可用负载均衡

    1、准备2台服务器 服务器名LB1,假设IP为192.168.1.100 服务器名LB2,假设IP为192.168.1.101 2、在LB1,LB2上分别安装Nginx   步骤参照:http://blog.csdn.net/yabingshi_tech/article/details/47416787   两台机器的Nginx均修改proxy_pass,指…

    Nginx 2023年4月13日
    00
  • Nginx进程不产生core文件问题

      最近工作中遇到Nginx进程异常重启却没有产生core文件问题,经过排除发现问题所在,下面是这个问题的两个原因。 开启生成core文件功能   linux系统下默认是不产生core文件的,需要在进程崩溃时产生core文件要确保开启了此功能,使用命令 ulimit -c 查看,如果显示 0 就是没有开启,使用命令 ulimit -c unlimited 开…

    Nginx 2023年4月11日
    00
  • linux操作系统重启后 解决nginx的pid消失问题

    重启了linux服务器之后,进程性的 nginx -s stop后再次启动nginx -s reload ,总是会报错误nginx: [error] open() “/alidata/server/nginx/logs/nginx.pid” failed (2: No such file or directory),这应该是因为把nginx进程杀死后pid丢…

    Nginx 2023年4月11日
    00
  • windows下安装php+nginx+mysql(一)

    win10 安装之前,首先下载软件: Nginx: http://nginx.org/en/download.html PHP Stable PHP 7.2.3: http://php.net/downloads.php mysql: http://dev.mysql.com/downloads/utilities/   1、E盘建立文件wnmp,并且把下载…

    Nginx 2023年4月11日
    00
  • nginx配置打印请求响应内容

    #放在http{}里面 log_format kyh ‘ [$time_local] “$request” $status \n’ ‘req_header:”$req_header” \n req_body:”$request_body” \n’ ‘resp_header:”$resp_header” \n resp_body:”$resp_body”\n\…

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