Linux搭建Nginx双主热备集群

Nginx

一、反向代理

正向代理:浏览器访问谷歌不能访问,需要代理服务器访问,将访问结果返回回来

反向代理:一个服务器拖着为几个,需要一个代理服务器进行分发

Nginx默认的配置文件是在安装目录下的 conf目录下,后续对 Nginx的使用基本上都是对此配置文件进行相应的修改。完整的配置文件,可以看一下文章最后。修改过nginx.conf配置文件,记得要重启Nginx服务

全局块:

从配置文件开始到events块之间的内容,主要会设置一些影响Nginx服务器整体运行的配置指令,主要包括:配置运行Nginx服务器的用户(组)、允许生成的 worker process 数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。

events块:

events 块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括:是否开启对多 work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等

上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置。
http块:

这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。下面的反向代理、动静分离、负载均衡都是在这部分中配置

http 全局块:http 全局块配置的指令包括:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server 块:这块和虚拟主机有密切关系,从用户角度看,虚拟主机和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。而每个server块也分为全局server块,以及可以同时包含多个locaton块。

一个 server 块可以配置多个 location 块。

这块的主要作用是:基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

实例

实现效果:使用 Nginx 反向代理,根据访问的路径跳转到不同端口的服务中,Nginx 监听端口为 9001

访问http://192.168.17.129/edu/直接跳转到 127.0.0.1:8080
访问http://192.168.17.129/vod/直接跳转到 127.0.0.1:8081

http块中

server {
	listen       9001;
	server_name  192.168.17.129;

	location ~ /edu/ {
		proxy_pass  http://127.0.0.1:8080
	}

	location ~ /vod/ {
		proxy_pass  http://127.0.0.1:8081
	}
}

二、负载均衡

2.1轮询

http模块

# 代理服务器
	# 设置服务器组
	upstream backend {
        ip_hash;
		server localhost:9001;
		server localhost:9002;
		server localhost:9003;
	}
	server {
		listen 8080;
		server_name localhost;
		
		location / {
			# backend 就是服务器组的名称
			proxy_pass http://backend/;
		}
	}

三、动静分离

nginx的data文件夹放资源

配置nginx配置文件

server {

	location  /www/ {
		root /data/;
	}
	
	location  /images/ {
		root /data/;
		autoindex on; 列出当前目录内容
	}
}

四、Keepalived双机主备集群

安装nginx 和Keepalived

进入Keepalived的配置文件

192.168.2.128(主节点)的keepalived.conf配置文件代码

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_128
}

vrrp_instance VI_1 {
    # 表示的状态,当前的128服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.120
    }
}

192.168.2.129(备用节点)的keepalived.conf配置文件代码:

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_129
}

vrrp_instance VI_1 {
    # 表示的状态,当前的129服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.120
    }
}

实现Nginx 7x24小时不间断服务

1.check_nginx_alive_or_not.sh脚本文件代码:

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
#判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ]; then
   /usr/local/nginx/sbin/nginx
   #等待一小会再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用机
   sleep 3
   if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
	killall keepalived
   fi
fi


192.168.2.128(主节点)的keepalived.conf配置文件代码:

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_128
}

vrrp_script check_nginx_alive {
   script "/etc/keepalived/check_nginx_alive_or_not.sh"
   interval 10  #每隔10秒运行上一行的脚本
   weight -10 # 如果脚本运行成功,则权重-10
}

vrrp_instance VI_1 {
    # 表示的状态,当前的128服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
		check_nginx_alive # 追踪 nginx脚本
    }
    virtual_ipaddress {
        192.168.2.120
    }
}

双主热备集群架构

192.168.2.128的keepalived.conf配置文件代码:

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_128
}

vrrp_instance VI_1 {
    # 表示的状态,当前的128服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.120
    }
}

vrrp_instance VI_2 {
    # 表示的状态,当前的128服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 52
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.121
    }
}

192.168.2.129的keepalived.conf配置文件代码:

! Configuration File for keepalived

global_defs {
   #路由id:当前安装keepalived节点主机的标识符,全局唯一
   router_id keep_129
}

vrrp_instance VI_1 {
    # 表示的状态,当前的129服务器为nginx的主节点,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 80
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.120
    }
}

vrrp_instance VI_2 {
    # 表示的状态,当前的129服务器为nginx的主节点,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 保证主备节点一致
    virtual_router_id 52
    # 优先级/权重,谁的优先级高,在MASTER挂掉以后,就能成为MASTER
    priority 100
    # 主备之间同步检查的时间间隔,默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点的进入
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.121
    }
}
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux搭建Nginx的步骤如下: 1. 安装Linux操作系统,例如Ubuntu、CentOS等。 2. 安装Nginx,可以使用命令行工具安装,例如在Ubuntu中使用命令sudo apt-get install nginx。 3. 配置Nginx,可以编辑Nginx的配置文件,例如在Ubuntu中配置文件位于/etc/nginx/nginx.conf。 4. 启动Nginx,可以使用命令行工具启动,例如在Ubuntu中使用命令sudo systemctl start nginx。 5. 验证Nginx是否正常工作,可以在浏览器中输入服务器的IP地址或域名,如果能够看到Nginx的欢迎页面,则表示Nginx已经成功搭建。 需要注意的是,Nginx的配置比较复杂,需要根据具体的需求进行调整。同时,Nginx也支持各种插件和模块,可以根据需要进行安装和配置。 ### 回答2: Linux操作系统和Nginx服务器都是当今非常流行的开源软件,许多互联网公司和IT从业者都喜欢使用Linux操作系统和Nginx服务器,因为它们具有高度的性能和稳定性。在这里,我将介绍如何在Linux搭建Nginx服务器。 首先,我们需要安装Linux操作系统。我们可以选择Ubuntu、CentOS、Debian等操作系统。我们可以使用虚拟机或在云服务器上安装Linux操作系统。安装完成后,我们需要更新系统软件库。例如,在Ubuntu上,我们可以使用命令行sudo apt-get update更新。 在CentOS上,我们可以使用命令行yum update更新。 接下来,我们需要安装Nginx服务器。我们可以从Nginx官网下载Nginx的安装包,或者使用软件包管理器来安装Nginx。例如,在Ubuntu上,我们可以使用命令行sudo apt-get install nginx安装Nginx。在CentOS上,我们可以使用命令行yum install nginx安装Nginx。 安装Nginx之后,我们需要对Nginx服务器进行配置。例如,我们需要指定Nginx服务器的监听端口、文档根目录、服务器名等信息。我们可以配置Nginx的配置文件/etc/nginx/nginx.conf。在这个文件中,我们可以找到server块,来进行Nginx服务器的基本配置。 例如,我们可以添加以下代码来指定Nginx监听端口: server { listen 80; server_name example.com; root /var/www/html; } 上面的代码指定了Nginx监听80端口,并将请求转发到/var/www/html下的网页文件。例如,当我们访问http://example.com时,Nginx将会读取/var/www/html下的文件。 最后,我们需要启动Nginx服务器。在Ubuntu上,我们可以使用命令行sudo service nginx start启动Nginx。在CentOS上,我们可以使用命令行systemctl start nginx启动Nginx。 总的来说,在Linux搭建Nginx服务器并不难,我们只需要安装Linux操作系统和Nginx服务器,并进行基本的配置即可。然而,为了保障服务器的稳定性和安全性,我们还需要进行更多的配置和优化。例如,我们可以开启Nginx的gzip压缩、限制访问速率、添加HTTPS支持等。这些配置和优化将会在我们的后续操作中逐渐介绍。 ### 回答3: Linux系统是目前最受欢迎的开源操作系统之一,其开源的特性使得它受到了很多开发者和公司的青睐。Nginx则是一个高性能的Web服务器,被广泛应用于网站和应用的架构设计中。 在Linux系统中搭建Nginx服务器,需要以下几个步骤: 1. 安装Linux系统:首先需要在服务器上安装Linux系统,选择较为稳定的发行版本,如CentOS、Ubuntu等。 2. 安装Nginx软件:通过命令行终端输入`sudo yum install nginx`(CentOS)或`sudo apt-get install nginx`(Ubuntu)即可安装Nginx。 3. 配置Nginx服务器Nginx的默认配置文件位于`/etc/nginx/nginx.conf`中,我们可以根据需要进行修改。例如,可以更改Nginx监听的端口号、网站目录等。 4. 启动Nginx服务器:通过命令行终端输入`sudo service nginx start`即可启动Nginx服务器。也可以输入`sudo nginx -t`命令来测试配置文件是否有错误。 5. 添加网站:通过在`/etc/nginx/conf.d`目录中创建网站配置文件(如`example.com.conf`),可以为Nginx新增站点。配置文件中需要指定网站根目录、访问日志、错误日志等信息。 6. 重新载入Nginx:在修改了Nginx配置文件后,需要通过`sudo nginx -s reload`命令重新载入Nginx服务器。 总的来说,搭建Nginx服务器是一项相对简单的操作。然而,具体的操作还需按照自己的实际情况进行调整,避免因为各种配置不当导致出现问题。在这个过程中,学习使用Linux命令行工具是非常有帮助的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值