一、环境准备
1、两台机器192.168.87.130,192.168.87.131
2、两台机器分别安装keepalived和nginx
3、需要虚拟ip

二、安装
1、安装keepalived
yum install keepalived -y
2、高可用配置(主从)
主机:修改/etc/keepalived/keepalived.conf配置文件
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.87.130 smtp_connect_timeout 30 router_id node130 #主机名字 } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 # 权重 } vrrp_instance VI_1 { state MASTER # 备份服务器上将 MASTER 改为 BACKUP interface ens33 # 网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.87.50 # VRRP H 虚拟地址 } }
/usr/local/src/nginx_check.sh
#!/bin/bash A=`ps -C nginx --no-header |wc -l` if [ $A -eq 0 ];then /usr/local/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then killall keepalived fi fi
从机keepalived.conf
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.87.131 smtp_connect_timeout 30 router_id node131 } vrrp_script chk_http_port { script "/usr/local/src/nginx_check.sh" interval 2 #(检测脚本执行的间隔) weight 2 # 权重 } vrrp_instance VI_1 { state BACKUP # 备份服务器上将 MASTER 改为 BACKUP interface ens33 # 网卡 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同 priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.87.50 # VRRP H 虚拟地址 } }
3、启动nginx、keepalived
分别启动主从nginx、keepalived
systemctl start keepalived.service #启动keepalived
systemctl stop keepalived.service #停止keepalived
systemctl restart keepalived.service #重启keepalived
浏览器输入http://192.168.87.50/测试

把主机keepalived和nginx停止,同样访问http://192.168.87.50/可看到一样效果,从机变为了主机
三、Nginx原理
当启动 nginx ,有一个 master 和 一个 worker

1、mater 和 worker
Nginx 有一个 master 和 多个 worker。master 就相当于主管,worker 就是打工人 。

2、worker 如何进行工作的
当客户端发送请求过来,会先通知 master ,然后由 mater 通知所有 worker 进行 争抢,然后由 woker 去完成静态资源加载或者反向代理。
3、一个 master 和多个 woker 有好处
(1)可以使用 nginx –s reload 热部署,利用 nginx 进行热部署操作 。
(2)每个 woker 是独立的进程,如果有其中的一个 woker 出现问题,其他 woker 独立的,继续进行争抢,实现请求过程,不会造成服务中断 。
4、设置多少个 woker 合适
worker 数和服务器的 cpu 数相等是最为适宜的 。
5、连接数 worker_connection
第一个:发送请求,占用了 woker 的几个连接数?答案:2 或者 4 个

第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的最大并发数是多少?
普通的静态访问最大并发数是: worker_connections * worker_processes /2
而如果是 HTTP 作 为反向代理来说,最大并发数量应该是worker_connections * worker_processes/4