实现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_id
和interface
需要在两台服务器上分别设置不同的值,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技术站