当前位置: 首页 > news >正文

Nginx — 高可用部署(Keepalived+Nginx)

Keepalived+Nginx高可用简介

Nginx 高可用部署通常借助 Keepalived 实现,Keepalived 能通过 VRRP(虚拟路由冗余协议)让多个 Nginx 服务器组成一个热备集群,当主服务器故障时自动切换到备用服务器,保障服务不间断。

一、环境准备

角色IP地址
主服务器(Master)192.168.179.130
备用服务器(Backup)192.168.179.131
虚拟 IP(VIP) 192.168.179.135
Keepalived版本1.4.5

二、安装Keepalived服务

1、在节点Master上安装Keepalived

#步骤一:安装编译需要的软件包
[root@master ~]# yum install -y pcre-devel openssl-devel popt-devel  #安装依赖包
 
#步骤二:安装keepalived服务
tar -zxvf  keepalived-1.4.5.tar.gz
cd keepalived-1.4.5/  && ./configure --prefix=/opt/sumscope/keepalived --sysconf=/etc
make && make install
cp /opt/sumscope/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/

chkconfig --add keepalived
chkconfig keepalived on
cp /opt/sumscope/keepalived-1.4.5/keepalived/keepalived  /usr/sbin/
 
 
#步骤三:配置keepalived配置文件
########################################################配置文件###############################################
[root@master ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
   router_id keep1;                                         #keep1是本节点的标识,一般为hostname
   script_user root                                         #使用root执行            
   enable_script_security
}
 
vrrp_script check_mysql {
    script "/etc/keepalived/check_nginx.sh"
                 #检测Nginx状态的脚本路径
    interval 2                                              #检测间隔时间
    weight -20                                              #如果如果上述条件成立权重-20
    fall 2                                                  #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
    rise 1                                                  #检测1次成功就算成功。但不修改优先级
}
vrrp_instance VI_1 {
    state MASTER                                            #主节点为MASTER,从节点为BACKUP
    interface ens33                                         #本机网卡名称
    virtual_router_id 100                                   #虚拟路由的ID号,两个节点设置的参数必须一样,相同的VRID为一组,它将决定多播的地址。
    mcast_src_ip 192.168.179.130                            #本机的IP地址
    priority 100                                            #节点的优先级(0~254之间),MASTER比BACKUP高
    nopreempt                                               #优先级设置,异常恢复后再次抢占的问题。
    advert_int 1                                            #组播信息发送间隔,两个的参数必须一样,默认为1s。
    authentication {
      auth_type PASS
      auth_pass p                                           #按照实际生产的需求来(一般为root密码)
    }
    track_script {
      check_mysql
    }
    virtual_ipaddress {
      192.168.179.135                                        #虚拟IP地址,两台主机的必须一致。
   }
}
########################################################配置文件###############################################
 
 
#步骤四:配置keepalived检测脚本内容
########################################################Nginx检测脚本内容###############################################
[root@master ~]# vim /etc/keepalived/check_nginx.sh    #检测Nginx服务断开就杀掉keepalived进程,使VIP漂移
 #!/bin/bash                     
 counter=$(netstat -na|grep "LISTEN"|grep ":443 "|wc -l)
 if [ "${counter}" -eq 0 ]; then
      service nginx stop
 fi
 ########################################################Nginx检测脚本内容###############################################
 
 #步骤五:对检测脚本添加执行权限、启动keepalived服务
 [root@master ~]# chmod +x /etc/keepalived/check_nginx.sh
 [root@master ~]# /etc/init.d/keepalived start

2、在节点Backup上安装Keepalived

安装方法与Master上的安装方法一致,但是配置文件需要修改

#步骤一:配置keepalived配置文件
########################################################配置文件###############################################
[root@slave ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
 
global_defs {
   router_id keep2;
   script_user root
   enable_script_security
}
 
vrrp_script check_mysql { 
    script "/etc/keepalived/check_nginx.sh"     #检测脚本所在的位置
    interval 2
    weight -20
    fall 2
    rise 1
}
vrrp_instance VI_1 {
    state BACKUP                        #修改状态名称
    interface ens33                     #修改网卡名称
    virtual_router_id 100
    mcast_src_ip 192.168.179.131        #自己的IP地址
    priority 80                         #作为备节点权重要比主节点小
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass p
    }
    track_script {
      check_mysql                       
    }
    virtual_ipaddress {
      192.168.179.135                   #虚拟IP地址
   }
}
########################################################配置文件###############################################
 
 
#步骤二:配置keepalived检测脚本内容用于检测Nginx的状态
########################################################Nginx检测脚本内容###############################################
[root@master ~]# vim /etc/keepalived/check_nginx.sh    #检测Nginx服务断开就杀掉keepalived进程,使VIP漂移
 #!/bin/bash                     
 counter=$(netstat -na|grep "LISTEN"|grep ":443 "|wc -l)
 if [ "${counter}" -eq 0 ]; then
       service nginx stop
 fi
 ########################################################Nginx检测脚本内容###############################################
 
 #步骤三:对检测脚本添加执行权限、启动keepalived服务
 [root@master ~]# chmod +x /etc/keepalived/check_nginx.sh
 [root@master ~]# /etc/init.d/keepalived start   

注意:因为keepalived中配置Nginx状态检测脚本,keepalived在启动时会执行检测脚本,所以等Nginx服务启动成功后再启动keepalived服务,否则服务将无法启动keepalived。

3、启动keepalived服务验证VIP是挂起

 

三、安装Nginx

详见上篇文章:Nginx — Nginx安装-CSDN博客

四:测试

1、配置nginx访问不同的主机返回不同的结果

配置如下:配置https访问

当虚拟IP在MASTER主机上时访问nginx的8888端口返回:MASTER

当虚拟IP在BACKUP主机上时访问nginx的8888端口返回:BACKUP

2、浏览器上进行访问测试

浏览器输入: https://192.168.72.135:8888/

2.1、正常情况下访问虚拟IP返回的结果

 

2.2、模拟主节点故障

2.2.1、在主节点和备节点上观察VIP漂移的情况

 2.2.2、浏览器访问看是否实现了故障自动迁移

访问VIP已经成功访问到备节点的资源!! 

相关文章:

  • 解决 Android AGP 最新版本中 BuildConfig 报错问题
  • string的基本使用
  • 机器学习课程
  • 解决pyinstaller GUI打包时无法打包图片问题
  • 解构需求管理:全流程与多维度策略
  • wait和notify : 避免线程饿死(以及votile内存可见性和指令重排序问题)
  • 保存中断上下文
  • 更高的效率——MyBatis-plus
  • uniapp 获取dom信息(封装获取元素信息工具函数)
  • 多线程的三种实现方式
  • 基于单片机的智能奶茶机(论文 +源码)
  • 【ESP32】ESP32与MQTT通信:实现传感器数据监测与设备控制
  • GreenPlum学习
  • rsync备份(理论篇)
  • Keepalive+LVS+Nginx+NFS高可用架构
  • AI提示词(Prompt)设计优化方案 | 高效使用 AI 工具
  • 企业文档怎么保证安全传输?
  • jQuery Mobile 方向改变事件详解
  • Codeforces Round 1014 (Div. 2)(A-D)
  • pandas【9】数据合并concat/_append
  • 自助外贸英文网站建设/站长工具端口
  • 自己做电影网站需要的成本/百度推广客户端怎么登陆
  • 罗庄区建设局网站/青岛seo杭州厂商
  • 怎么把自己的网站放到百度上/关键词首页排名代做
  • 网站域名到期查询/营销软件代理推广
  • 如何用书签 做网站接口/爱站网长尾关键词挖掘工具