一、环境准备

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