文章目录

  • 17. Nginx 高可用
    • 17.1 Keeplived+Nginx高可用集群(主从模式)
      • 17.1.1 准备测试机器
      • 17.1.2 安装 keepalived
      • 17.1.3 修改主机(master)配置文件
      • 17.1.4 修改备机(backup)配置文件
      • 17.1.5 启动 keepalived
      • 17.1.6 修改 nginx 配置文件
      • 17.1.7 测试
    • 17.2 Keeplived+Nginx 高可用集群(双主模式)

17. Nginx 高可用

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

试验场景说明:1)在两台服务器上分别安装 nginx 和 keepalived 2)本次主要配置 nginx 高可用(主从模式),只考虑 nginx 存活及访问问题3)实际访问时使用 keepalived 虚拟 IP进行访问
17.1.1 准备测试机器
主机 ip 环境
Nginx01 (maste) 192.168.169.151 CentOS Linux release 7.9.2009 (Core)
keepalived-1.3.5
nginx/1.8.1
Nginx02 (back) 192.168.169.152 CentOS Linux release 7.9.2009 (Core)
keepalived-1.3.5
nginx/1.8.1
web 192.168.169.150 tomcat
17.1.2 安装 keepalived
# 分别在两台 nginx 服务器上安装 keepalived
yum -y install keepalived
17.1.3 修改主机(master)配置文件
  • 主机配置文件
# 修改 Keepalived 配置文件,将原本的 keepalived.conf 文件备份,新建 keepalived.conf 文件加入如下内容
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
vim /etc/keepalived/keepalived.conf
# 注意:这个是 master(主机) 的配置文件
! Configuration File for keepalived     # 这一行为注释
global_defs { router_id nginx01 # router_id 机器标识,通常使用 hostname,相对具有唯一性,和备机区分开,不能使用同一个标识
}vrrp_script chk_nginx {        # 定义一个检测脚本,在global_defs之外配置script "/etc/keepalived/check_nginx.sh" # 自己写的监测脚本interval 2    # 每2s监测一次weight 10      # 该参数用于指定当监测失效时,该设备的优先级会减少的值,该值为负表示减少fall 2        # 尝试两次都成功才成功rise 2        # 尝试两次都失败才失败
}vrrp_instance VI_1 {       # 定义一个vrrp_install实例,名称为VI_1state MASTER         # 表示该实例的角色状态,有MASTER和BACKUP两种主备状态interface ens33         # 对外提供服务的网络接口,注意修改为自己的网卡名称,如 ens33,eth0,eth1virtual_router_id 51  # 虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致priority 150           # priority表示实例优先级,数字越大,优先级越高。master 的优先级必须大于 backupadvert_int 1           # 设定 master 与 backup 负载均衡器之间同步检查的时间间隔,默认是秒authentication {       # 权限认证配置auth_type PASS      # 主要有 PASS 和 AH 两种auth_pass 1111        # 验证密码,同一个 vrrp_instance 下 MASTER 和 BACKUP 密码必须相同}virtual_ipaddress {192.168.169.200     # 虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中访问 zabbix server 需要和域名绑定的ip}track_script {     # 调用自定义的脚本chk_nginx}notify_master /etc/keepalived/to_master.sh      # 指定当切换到 master 时,执行的脚本,即切换到 master 时要将 backup 的 server 关掉}
  • 主机切换脚本
# 指定当切换到 master 时,执行的脚本,即切换到 master 时要将 backup 的 server 关掉
#!/bin/bashsshpass -p 0 ssh -o StrictHostKeyChecking=no root@192.168.169.152 "nginx -s stop"nginx
  • Nginx 服务检查脚本
#! /bin/bash
# 当 nginx 服务 down 掉之后,通过 keepalived 检查,确认没有服务重新启动 nginx
nginx_server=`ps -C nginx --no-header | wc -l`if [ $nginx_server -gt 0 ];thenexit 1
elsenginx
fi
17.1.4 修改备机(backup)配置文件
  • 备机配置文件
# 注意:这个是 master(备机) 的配置文件
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bakvim /etc/keepalived/keepalived.conf! Configuration File for keepalived        # 这一行为注释
global_defs { router_id nginx02 # router_id 机器标识,通常使用 hostname,相对具有唯一性,和主机区分开,不能使用同一个标识
}vrrp_script chk_nginx {        # 定义一个检测脚本,在global_defs之外配置script "/etc/keepalived/check_nginx.sh" # 自己写的监测脚本interval 2    # 每2s监测一次weight 10      # 该参数用于指定当监测失效时,该设备的优先级会减少的值,该值为负表示减少fall 2        # 尝试两次都成功才成功rise 2        # 尝试两次都失败才失败
}vrrp_instance VI_1 {       # 定义一个vrrp_install实例,名称为VI_1state BACKUP         # 表示该实例的角色状态,有MASTER和BACKUP两种主备状态interface ens33         # 对外提供服务的网络接口,注意修改为自己的网卡名称,如 ens33,eth0,eth1virtual_router_id 51  # 虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致priority 149           # priority表示实例优先级,数字越大,优先级越高。master 的优先级必须大于 backupadvert_int 1           # 设定 master 与 backup 负载均衡器之间同步检查的时间间隔,默认是秒authentication {       # 权限认证配置auth_type PASS      # 主要有 PASS 和 AH 两种auth_pass 1111        # 验证密码,同一个 vrrp_instance 下 MASTER 和 BACKUP 密码必须相同}virtual_ipaddress {192.168.169.200     # 虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中访问 zabbix server 需要和域名绑定的ip}track_script {     # 调用自定义的脚本chk_nginx}notify_master /etc/keepalived/to_backup.sh      # 指定当切换到 backup 时,执行的脚本,切换到 backup 时将 master 的 server 关掉
}
  • 备机切换脚本
# 指定当切换到 backup 时,执行的脚本,切换到 backup 时将 master 的 server 关掉
#!/bin/bashsshpass -p 0 ssh -o StrictHostKeyChecking=no root@192.168.169.151 "nginx -s stop"nginx
  • Nginx 服务检查脚本
#! /bin/bash
# 当 zabbix server 服务 down 掉之后,通过 keepalived 检查,确认没有服务重新启动 zabbix server
nginx_server=`ps -C nginx --no-header | wc -l`if [ $nginx_server -gt 0 ];thenexit 1
elsenginx
fi
17.1.5 启动 keepalived
# 启动 keepalived
systemctl start keepalived.service
systemctl enable keepalived.service
# master 查看虚拟 IP 地址
ip a

# backup 查看虚拟 IP 地址,此时 nginx01 是 master 所以 VIP 在 nginx01上
ip a

17.1.6 修改 nginx 配置文件
  • 主备机器都添加如下配置
server {listen       80;server_name  192.168.169.200;    # 这里是使用虚拟 IP 访问location / {proxy_pass  http://192.168.169.150:8080;}}
17.1.7 测试

浏览器访问:192.168.169.200

此时虚拟 IP 是在 master 192.168.169.151 上

将 192.168.169.151 关机测试虚拟 IP 跳转到 192.168.169.152 继续提供服务

浏览器访问:192.168.169.200

此时虚拟 IP 是在 backup192.168.169.152 上

17.2 Keeplived+Nginx 高可用集群(双主模式)

17. Nginx + keepalived 高可用相关推荐

  1. Nginx+keepalived高可用配置实战

    1.整体架构图如下 2.环境准备 今天所配置的是keepalived+nginx 的负载均衡 下载keepalived软件 [root@LB01 tools]# wget http://www.kee ...

  2. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  3. nginx+keepalived高可用web架构

    nginx+keepalived高可用web架构 1.下载所需的软件包 (1).keepalived软件包keepalived-1.1.20.tar.gz (2).nginx软件包nginx-1.1. ...

  4. keep老是显示服务器开小差,nginx+keepalived高可用服务器宕机解决方案

    原标题:nginx+keepalived高可用服务器宕机解决方案 1.基本服务器宕机的主从切换配置 两台nginx服务器,分别安装keepalived,配置/etc/keepalived/keepal ...

  5. (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建

    前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...

  6. Nginx+keepalived 高可用双机热备(主从模式/双主模式)

    基础介绍 负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行. 关于负载均衡介绍,可以参考:l ...

  7. nginx keepalived高可用集群主从模式

    hostname ip 说明 proxy-01 172.0.5.108 keepalived主节点nginx主负载均衡 proxy-02 172.0.5.39 keepalived备节点nginx辅负 ...

  8. nginx+keepalived 高可用兼负载均衡集群

    Nginx是一个高性能的web服务器,同时也是一个优秀的反向代理服务器,本文利用两台Dell R720 构建一个高可用兼负载均衡的Linux web集群. 原理 通过nginx分别搭建两个web服务器 ...

  9. linux下配置nginx+keepalived高可用的各种问题以及解决办法

    本人的环境Centos 7 + nginx 1.12.2 + keepalived 1.3.5 nginx 主机 192.168.26.26 备机 192.168.26.126 安装: 在俩台服务器上 ...

最新文章

  1. MAC OS X的ACL扩展权限设置
  2. google breakpad native crash分析工具
  3. python获取系统时间月份_python 取数组绝对值python获取当前日期
  4. CCS初学调试以及RTDX
  5. JavaScript实现floatAsBinaryString浮点转为二进制字符串算法(附完整源码)
  6. 物联网在水位监测中的应用
  7. STL之deque和其他容器
  8. 树:二叉树的层序遍历算法(超简洁实现及详细分析)
  9. linux sleeping进程多_Linux下找出吃内存的方法总结
  10. 链队列出入队列c语言程序,链队列简单操作(c语言)
  11. lv55 达成,现金600G
  12. docker容器中的网络原理(单机模式下的容器网络)
  13. QLV格式的视频怎么在线转化成MP4
  14. 西门子step7安装注册表删除_不用重装系统就能完全卸载西门子PLC编程软件STEP 7...
  15. jni 调用java类方法_AndroidJNI 通过C++调用JAVA
  16. python+django+mysql电影院选座订票系统毕业设计毕设开题报告
  17. React Fullpage
  18. Android的surface的三种工作方式
  19. QGIS 加载XYZ Tiles
  20. 《软件测试---你必须掌握的100个问题》

热门文章

  1. 另起炉灶?认证为锤子科技的坚果OS官微现身
  2. 沉船会有什么_深海探险公司OceanGate与NASA合作制造潜艇,探访泰塔尼克号沉船...
  3. 数字孪生、动漫IP、虚拟偶像来袭!海心沙元宇宙音乐会这些亮点不容错过
  4. MySQL CAST与CONVERT 函数的用法:产生另一个类型的值
  5. 配置ARM虚拟机_使用qemu建立mini2440的模拟仿真环境
  6. 区块链- Merkle树
  7. ENSP-----VGMP与HRP协议---防火墙的双机热备
  8. CentOS 如何在线乔迁 AlmaLinux 或 Rocky Linux ,且避免数据中心停机
  9. 35个你自己来设计海报的Photoshop教程
  10. ntfs格式uefi启动u盘