6. Nginx配置示例-高可用集群

一、高可用原理图:就是配置多个nginx,防止其中某个nginx宕机,有备无患。keepalived用来防止单点故障,后面主要通过修改keepalived的配置文件来完成高可用。

 二、配置

1.在两个服务器(192.168.17.129、192.168.17.131)上安装两台Nginx,参考前面Nginx安装章节

2.在两个服务器上分别安装keepalived

1 yum install leepalived -y

 安装之后,在etc里面生成目录keepalived,有配置文件keepalived.conf

三、完成高可用配置(主从配置)

1. 修改/etc/keepalived/keepalived.conf

 1 global_defs { 
 2      notification_email { 
 3      acassen@firewall.loc 
 4      failover@firewall.loc 
 5      sysadmin@firewall.loc 
 6  } 
 7      notification_email_from Alexandre.Cassen@firewall.loc 
 8      smtp_server 192.168.17.129 
 9      smtp_connect_timeout 30 
10      router_id LVS_DEVEL 
11 }
12 
13 vrrp_script chk_http_port { 
14      script "/usr/local/src/nginx_check.sh" 
15      interval 2 #(检测脚本执行的间隔) 
16      weight 2
17 }
18 
19 
20 vrrp_instance VI_1 { 
21      state BACKUP # 备份服务器上将 MASTER 改为 BACKUP 
22      interface ens33 //网卡 
23      virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 
24      priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 
25      advert_int 1 
26      authentication { 
27      auth_type PASS 
28      auth_pass 1111 
29  } 
30      virtual_ipaddress { 
31          192.168.17.50 // VRRP H 虚拟地址 
32      } 
33 }

2. 在/usr/local/src添加检测脚本

1 #!/bin/bash 
2 A=`ps -C nginx –no-header |wc -l` 
3 if [ $A -eq 0 ];then 
4      /usr/local/nginx/sbin/nginx 
5      sleep 2 
6      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then 
7          killall keepalived 
8      fi 
9 fi

3. 启动Nginx、keepalived

./nginx

systemctl start keepalived.service

四、测试

1.在访问虚拟ip地址 192.168.17.50

 

 

 2.把主服务器上的nginx和keepalived停止,再次输入192.168.17.50

 

 五、Nginx原理

1. master和worker

  master进行管理worker,worker实际处理请求。

  查看nginx进程

 

  框架

 

 2. worker如何工作

 

 3. 一个master和多个worker好处

 1)可以使用nginx s reload 热部署,利用nginx进行热部署操作

 2)每个woker是独立的进程,如果有其中的一个woker出现问题,其他woker独立的,继续进行争抢,实现请求过程,不会造成服务中断

4. worker数量设置为多少合适

  worker数和服务器的cpu数相等是最为适宜的

5. 连接数worker_connection

 第一个:发送请求,占用了woker的几个连接数?

 答案:2或者4个(不与后台交互就是2个,一来一回。如果和后台交互就是4个,客户端=nginx=tomcat)

 第二个:nginx有一个master,有四个woker,每个woker支持最大的连接数1024,支持的最大并发数是多少?

   普通的静态访问最大并发数是:worker_connections * worker_processes /2,  

  而如果是HTTP作为反向代理来说,最大并发数量应该是worker_connections *worker_processes/4

原文地址:https://www.cnblogs.com/qmillet/p/12121802.html