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上配置多个站点需要完成以下步骤: 1.创建站点目录 在服务器上创建每个站点的目录,例如,假设我们要创建两个站点,一个是example1.com,另一个是example2.com。我们可以在服务器上的/var/www目录下创建两个目录,分别命名为example1.com和example2.com: sudo mkdir /var/www/examp…

    Nginx 2023年5月16日
    00
  • 编译安装nginx时配置开机自启

    详细编译安装nginx请参考【Nginx目录结构与配置文件详解】以及【Nginx安装部署】,在这里就进行简单安装 环境介绍 操作系统: [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@localhost ~]# uname -a Li…

    Nginx 2023年4月12日
    00
  • nginx——优化 Nginx worker 进程数

    Nginx 有 Master 和 worker 两种进程,Master 进程用于管理 worker 进程,worker 进程用于 Nginx 服务 worker 进程数应该设置为等于 CPU 的核数,高流量并发场合也可以考虑将进程数提高至 CPU 核数 * 2 1。 grep -c processor /proc/cpuinfo # 查看CPU核数 2。vi…

    Nginx 2023年4月17日
    00
  • Nginx实现会话保持的两种方式

    Nginx实现会话保持的两种方式,分别为: IP Hash方式 IP Hash方式是指通过将客户端IP地址作为会话的一部分,将请求分配给同一IP地址的后端服务器,从而实现会话保持的功能。 实现IP Hash方式需要进行如下配置: upstream backend { ip_hash; server backend1.example.com; server b…

    Nginx 2023年5月16日
    00
  • nginx地址重定向的方法

    这里是“Nginx地址重定向的方法”的完整攻略,包含两条示例说明: 什么是Nginx地址重定向 Nginx是一个高性能的Web服务器和反向代理,它可以用来处理HTTP请求、负载均衡、Cookie会话管理、URL地址重写等。Nginx的地址重定向主要用来将浏览器请求的URL重定向到其他的URL地址上,实现特定场景下的业务需求。 Nginx地址重定向方法 实现N…

    Nginx 2023年5月16日
    00
  • nginx 是如何分配 worker 进程连接数的

    客户端连接过来后,多个空闲的进程,会竞争这个连接,很容易看到,这种竞争会导致不公平,如果某个进程得到 accept 的机会比较多,它的空闲连接很快就用完了,如果不提前做一些控制,当 accept 到一个新的 tcp 连接后,因为无法得到空闲连接,而且无法将此连接转交给其它进程,最终会导致此 tcp 连接得不到处理,就中止掉了。很显然,这是不公平的,有的进程有…

    Nginx 2023年4月11日
    00
  • 详解nginx配置location总结及rewrite规则写法

    这里给您详细讲解一下 “详解nginx配置location总结及rewrite规则写法” 的完整攻略,包含两个示例说明。 一、什么是location? location 是 Nginx 配置中一个非常重要的指令,它用于匹配请求的 URL 路径。具体来说,它可以用来配置服务器如何响应请求。 二、location 的分类 在 Nginx 中,location 指…

    Nginx 2023年5月16日
    00
  • Keepalived+HAProxy基于ACL实现单IP多域名负载功能

    编译安装 HAProxy 新版 LTS 版本,编译安装 Keepalived 开启HAProxy多线程,线程数与CPU核心数保持一致,并绑定CPU核心 因业务较多避免配置文件误操作,需要按每业务一个配置文件并统一保存至/etc/haproxy/conf.d目录中 基于ACL实现单IP多域名负载功能,两个域名的业务: www.yanlinux.org 和 ww…

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