一、高可用原理图:就是配置多个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。