Nginx系列-7 nginx 搭建高可用集群

Keepalived+Nginx 高可用集群(主从模式)

上述采用nginx方式:

image-20210305171529279

会有问题:

nginx宕机

当nginx宕机后,所有请求均会失效。

解决方法:nginx集群实现高可用

1、什么是nginx高可用

image-20210305171535146
  • 需要两台 nginx 服务器

  • 需要 keepalived软件

  • 需要虚拟 ip

2、配置高可用准备工作

  • 需要两台服务器 192.168.17.129 和 192.168.17.131

  • 在两台服务器安装 nginx

  • 在两台服务器安装 keepalived

3、在两台服务器安装 keepalived

  • 使用 yum 命令进行安装
yum install keepalived --y
  • 安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf

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

  • 修改/etc/keepalived/keepalivec.conf 配置文件
global_defs {
notification_email {#指定keepalived在发生切换时需要发送email到的对象,一行一个
 [email protected]
 [email protected]
 [email protected]
}

notification_email_from [email protected] #指定发件人
smtp_server 192.168.17.129 #指定smtp服务器地址
smtp_connect_timeout 30#指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识 (ifconfig查看)
}
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 {  # 虚拟ip
192.168.17.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
  • 把两台服务器上 nginx 和 keepalived 启动

启动 nginx:

./nginx

启动 keepalived:

systemctl start keepalived.service

5、最终测试

  • 在浏览器地址栏输入虚拟 ip 地址 192.168.17.50
image-20210305171555574
  • 把主服务器(192.168.17.129)nginx 和 keepalived 停止,再输入 192.168.17.50
image-20210305171601837

总结:通过 keepalived软件对外暴露虚拟ip,对内做代理绑定nginx服务器,nginx服务器做转发。

下篇更新第8章 nginx 原理与优化参数配置

感兴趣的话点点关注,我们一起成长进步。

你可能感兴趣的:(Nginx系列-7 nginx 搭建高可用集群)