Nginx集群搭建实践及宕机切换演练
Nginx集群搭建实践及宕机切换演练
Nginx负载均衡基本原理
负载均衡其实就是将流量或者请求转发到多台应用服务器,使服务器性能能够更好地发挥,一方面可以是整个流程更加稳定,即当一台服务器出现故障,另一台可以对其进行替代,不会产生影响。
流程图如下所示:
这里假设服务器1为radware,也就是起到了负载均衡的作用,它可以把流量通过upstream分发到下面两台Nginx服务器上,然后两台Nginx服务器再将流量转发到应用服务器,实现Nginx双活状态。
环境准备及参数配置
首先准备三台服务器
1、144.121.234.1
2、144.121.234.2
3、144.121.234.3
其中第一台服务器作为radware负载均衡,后两台都作为Nginx
在三台服务器中分别安装Nginx10.1,下载网址为:https://nginx.org/download/
这里有nginx的各种版本,下载自己需要的,本文采用的版本为10.1,将下载好的压缩包放到/usr/local中,
解压:tar -zcvf 包名
创建文件夹:mkdir nginx
进入解压的文件夹,编译:./configure --prefix=/usr/local/nginx
安装:make && make install
编译时有可能会遇到问题,缺少依赖包PCRE,一般都是缺少这个,可以参考这篇文章进行必要环境的安装:https://www.runoob.com/linux/nginx-install-setup.html
三台机器都按照同样的步骤安装完毕,可以进入/usr/local/nginx/sbin执行:./nginx -v检查Nginx版本,看是否安装成功,通过./nginx启动Nginx,在通过ps -ef | grep nginx捕获Nginx进程,如果一切都没问题,通过./nginx -s stop命令关闭Nginx,进入下面配置文件的过程,以radware144.121.234.1为例。
Nginx的配置文件里有很多参数,在网上都可以随便找到,因此本文不再赘述,只介绍一下我在搭建环境中使用到的配置参数以及我认为比较重要的参数,当然,有很多功能我也没有深入探究,只用到了流量转发这一模块,首先是全局配置:
这一块的worker_process参数还是比较重要的,是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M-12M内存。建议指定和CPU的数量一致即可
error_log这块采用默认设置就行,但是要理解它的作用,就是日志的输出,日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
下一部分是http_proxy配置:
这一部分的主要就是一些超时时间、空间大小,可以根据自己系统实际情况进行相应调整
最核心的部分,负载均衡设置:
其中server 144.121.234.2:7199,server 144.121.234.3:7199,由于配置的是负载均衡,因此将流量转发到这两台机器的7199端口,
upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。
在上面的设定中,通过upstream指令指定了一个负载均衡器的名称DMP。这个名称可以任意指定,在后面需要的地方直接调用即可。
Nginx的负载均衡模块支持四种调度算法,默认是轮询的方式,即每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响;
Weight:指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下;
max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误;
fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
虚拟主机配置:
这里的servername大家将其设置为自己的机器ip,比如这台就应该是144.121.234.1
监听端口为7299,即通过7299端口访问
server标志定义虚拟主机开始,
listen用于指定虚