【Nginx那些事】nginx配置实例(四)搭建高可用集群

  • nginx 实现高可用
  • 安装keepalived
  • keepalived配置
  • 主Nginx服务器配置
  • 从nginx服务器配置
  • 脚本文件权限设置
  • 启动 keepalived 和 nginx

nginx 实现高可用

思考如果所有服务都基于nginx代理,一旦nginx服务器发生宕机,那么将导致所有代理的服务都不可用。
如果搭建nginx集群,一个nginx服务器宕机,另一个nginx服务器顶上,那么就能实现nginx高可用。

要点

  1. 用虚拟ip绑定所有集群服务器的ip,对外暴露的仅仅是虚拟ip。
  2. 安装keepalived

安装keepalived

yum install keepalived -y

keepalived配置

配置文件在/etc/keepalived/keepalived.conf。默认配置如下

! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.200.16192.168.200.17192.168.200.18}
}virtual_server 192.168.200.100 443 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPreal_server 192.168.201.100 443 {weight 1SSL_GET {url {path /digest ff20ad2481f97b1754ef3e12ecd3a9cc}url {path /mrtg/digest 9b3a0c85a887a256d6939da88aabd8cd}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}virtual_server 10.10.10.2 1358 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPsorry_server 192.168.200.200 1358real_server 192.168.200.2 1358 {weight 1HTTP_GET {url {path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url {path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url {path /testurl3/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.200.3 1358 {weight 1HTTP_GET {url {path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334c}url {path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334c}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}virtual_server 10.10.10.3 1358 {delay_loop 3lb_algo rrlb_kind NATpersistence_timeout 50protocol TCPreal_server 192.168.200.4 1358 {weight 1HTTP_GET {url {path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url {path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url {path /testurl3/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.200.5 1358 {weight 1HTTP_GET {url {path /testurl/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url {path /testurl2/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}url {path /testurl3/test.jspdigest 640205b7b0fc66c1ea91c463fac6334d}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

主Nginx服务器配置

ip: 192.168.227.3

主Nginx服务器的keepalived配置文件修改如下

# 全局配置
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}script_user rootenable_script_securitynotification_email_from Alexandre.Cassen@firewall.locsmtp_ server 192.168.227.3 smtp_connect_timeout 30router_id bq8023   # bq8023 这字段在/etc/hosts文件中看;通过它访问到主机
}# 检测脚本配置
vrrp_script chk_http_ port {# 脚本路径script "/usr/local/src/nginx_check.sh" # 脚本内容见下方interval 2   # (检测脚本执行的间隔)2sweight 2  #权重,如果这个脚本检测为真,服务器权重+2
}vrrp_instance VI_1 {# 标识主/从服务器state MASTER   # 备份服务器上将 MASTER 改为BACKUP# 绑定网卡 通过 ifconfig 查看interface ens33 //网卡名称# 主/从服务器的路由idvirtual_router_id 51 # 主、备机的virtual_router_id必须相同# 优先级priority 100   #主、备机取不同的优先级,主机值较大,备份机值较小advert_int 1 #每隔1s发送一次心跳# 权限校验配置authentication { # 校验方式, 类型是密码,密码1111auth type PASSauth pass 1111}# 虚拟ip配置virtual_ipaddress { # 虛拟ip192.168.227.10 // VRRP H虛拟ip地址}
}

说明:
router_id bq8023,bq8023 这字段在/etc/hosts文件中添加,例如:

cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 bq8023  # 自己添加的

/usr/local/src/nginx_check.sh脚本


#! /bin/bash
# 检测 nginx 运行状态
A=`ps -C nginx -no-header | wc - 1`
if [ $A -eq 0];then/usr/local/nginx/sbin/nginxsleep 2if [`ps -C nginx --no-header| wc -1` -eq 0 ];thensystemctl stop keepalivedfi
fi

从nginx服务器配置

ip: 192.168.227.4
从nginx服务器的keepalived配置文件修改如下

global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}script_user rootenable_script_securitynotification_email_from Alexandre.Cassen@firewall.locsmtp_ server 192.168.227.4smtp_connect_timeout 30router_id LVS_DEVEL  # LVS_DEVEL这字段在/etc/hosts文件中看;通过它访问到主机
}vrrp_script chk_http_ port {script "/usr/local/src/nginx_check.sh"interval 2   # (检测脚本执行的间隔)2sweight 2  #权重,如果这个脚本检测为真,服务器权重+2
}vrrp_instance VI_1 {state BACKUP   # 备份服务器上将 MASTER 改为BACKUPinterface ens33 //网卡名称virtual_router_id 51 # 主、备机的virtual_router_id必须相同priority 90   #主、备机取不同的优先级,主机值较大,备份机值较小advert_int 1   #每隔1s发送一次心跳authentication { # 校验方式, 类型是密码,密码1111auth type PASSauth pass 1111}virtual_ipaddress { # 虛拟ip192.168.227.10 // VRRP H虛拟ip地址}
}

/usr/local/src/nginx_check.sh脚本

#! /bin/bash
A=`ps -C nginx -no-header | wc - 1`
if [ $A -eq 0];then/usr/local/nginx/sbin/nginxsleep 2if [`ps -C nginx --no-header| wc -1` -eq 0 ];thensystemctl stop keepalivedfi
fi

脚本文件权限设置

chmod 755 /usr/local/src/nginx_check.sh

启动 keepalived 和 nginx

分别启动两台服务器的 keepalived 和 nginx

# keepalived启动
systemctl start keepalived.service
# 查看keepalived是否启动
ps -ef | grep keepalivedcd /usr/local/nginx/sbin/
# nginx启动
./nginx

【Nginx那些事】nginx配置实例(四)搭建高可用集群相关推荐

  1. RabbitMQ 高级指南:从配置、使用到高可用集群搭建

    博主说:在项目中,通过 RabbitMQ,咱们可以将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 正文 1 Rab ...

  2. 用Keepalived搭建高可用集群

    一.集群介绍 1.根据功能划分为两大类:高可用和负载均衡 2.高可用:一台工作,另一台冗余,当一台服务器故障宕机时,另一台服务器提供服务.开源软件有heartbeat,keepalived. 3.负载 ...

  3. 12. 搭建高可用集群

    文章目录 12.1 Keepalived+Nginx 高可用集群(主从模式) 12.1.1 集群架构图 12.1.2 具体搭建步骤 12.1.2.1 搭建高可用集群基础环境 12.1.2.2 完成高可 ...

  4. k8s高可用集群_搭建高可用集群(初始化和部署keepalived)---K8S_Google工作笔记0055

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来部署keepalived,搭建高可用集群. 然后我们这里需要master,155, ma ...

  5. k8s高可用集群_搭建高可用集群(实现方式介绍)---K8S_Google工作笔记0054

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们来说搭建高可用集群,为什么要搭建高可用集群. 因为,首先我们说master节点是用来管理其 ...

  6. Kafka基于Zookeeper搭建高可用集群实战

    Kafka基于Zookeeper搭建高可用集群实战 1 前言 1.1 高可用的由来 为何需要Replication? 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Bro ...

  7. 在 Kubernetes 中, 搭建高可用集群

    永久地址:在 Kubernetes 中, 搭建高可用集群(保存网址不迷路

  8. RabbitMQ高级指南:从配置、使用到高可用集群搭建

    本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...

  9. 16、Kubernetes搭建高可用集群

    文章目录 前言 一.高可用集群 1.1 高可用集群技术细节 二.部署高可用集群 2.1 准备环境 2.2 所有master节点部署keepalived 2.2.1 安装相关包和keepalived 2 ...

最新文章

  1. 802.11协议精读5:隐藏终端和暴露终端
  2. MySQL事务的可串行化
  3. mac book pro怎么安装python_Mac安装python细节
  4. redis 报 error NOTAUTH Authentication required
  5. protobuf入门教程(二):消息类型
  6. vscode - 添加背景图片
  7. Showdoc使用——接口文档
  8. SQL基础E-R图画法(二)
  9. apt mysql 5.1_linux下apt安装mysql导致mysql.user table is damaged
  10. 动态数据的国际化、几种主要的国际化标签
  11. unet图片数据增强_kaggle气胸疾病图像分割top5解决方案
  12. 如何在win64位下搭载汇编环境?DOSbox教程之debug怎么使用?
  13. 笔记67 Spring Boot快速入门(七)
  14. Zabbix监控Redis状态
  15. 华为工程师都没有解决的问题,华为交换机acl不能使用易维版显示
  16. 【知识蒸馏】让LSTM重返巅峰!
  17. 【老生谈算法】基于主成分分析PCA的matlab人脸识别系统设计与算法原理(论文+程序源码)——人脸识别算法
  18. 51单片机蜂鸣器演奏《我和我的祖国》
  19. 使用ARM芯片的小型NAS设备的一次存储故障的检修
  20. 有道云笔记linux使用教程,我是这么用有道云笔记的!

热门文章

  1. 机器学习速成课程 | 练习 | Google Development——编程练习:合成特征和离群值
  2. Ethercat解析(十二)之命令行工具的使用
  3. Linux——查看系统的日志的一些实用操作
  4. BubbleSort 优化后的冒泡排序算法
  5. 【C++基础学习】关于C++静态数据成员
  6. 安装django框架:虚拟环境准备 框架安装
  7. Vmware16一打开虚拟机就蓝屏
  8. Laravel + MongoDB 数组字段相关查询
  9. 内网 根据计算机名查IP
  10. JavaScript学习笔记 - 基础排序算法