# Nginx集群部署
# 当我们的用户同时访问量达到一定量的时候,一台服务器是不够用的
# 这个时候我们需要解决这个问题肯定是要添加新的服务器去处理用户访问
# 多台服务器处理用户访问就需要我们集群部署
# 通过Nginx反向代理是实现服务器集群部署的一种方法 # 一台服务器不够用的时候我们有很多方案可以去优化它
# 方案一:将不同的数据分布到不同的服务器上处理,通过反向代理将他们整合起来
# 方案二:多台服务器去处理同样的业务,通过反向代理负载均衡去控制用户访问由哪个服务器去处理,这样哪怕用户再多,只要一直增加服务器就能保证用户访问速度在一定范围。
# 方案三:将动态数据和静态页面分布到不同的服务器去处理。
# 不管哪种方案,你部署的时候一定要考虑部分服务器当机当机情况。 # Nginx高可用解决方案
# 也就是当Nginx代理服务器当机了,我们怎么去处理该问题
# Keepalived:Keepalived软件由C编写的,最初是专为LVS负载均衡设计的,Keepalived主要是通过VRRP协议实现高可用功能。
# VRRP介绍:
# VRRP协议是将多台路由器虚拟成一台路由器,它会有自己的ip,当客户访问虚拟路由器IP的时候,再由虚拟路由器分发到一台路由器去处理,
# 多台路由器具体由路由器设置的级别来决定用哪台路由器去处理,级别最高的为master主路由器,其他路由器都为backup备份路由器。
# 虚拟路由器只会将用户访问分发给master路由器去处理。
# 当master路由器当机后,多个backup路由器级别最高的那个成为master路由器。
# master路由器和backup路由器之间的关系:master路由器采用心跳机制发送状态码给Backup路由器以确保Backup路由器知道master路由器在正常运行;心跳机制停止后,Backup路由器就会竞争成为master路由器。 # Keepalived的安装
# 1.下载Keepalived源码包,官网地址:https://keepalived.org/
# 2.将压缩包上传到服务器
# 3.创建Keepalived目录
# 4.解压Keepalived-2.0.20.tar.gz
tar -zxf Keepalived-2.0.20.tar.gz -c Keepalived/
# 5.对keepalived进行配置,编译和安装。sysconf配置文件存放路劲。prefix安装路劲。
cd keepalived/keepalived-2.0.20
./configure --sysconf=/etc --prefix=/usr/local
make && make install
# 安装完成后会生成/etc/keepalived/keepalived.conf配置文件
# 和/usr/local/sbin/leepalived系统脚本文件用来启动和关闭keepalived
# Keepalived.conf配置文件介绍
# Keepalived配置分为三部分,第一部分是global全局配置、第二部分是VRRP相关配置、第三部分是LVS相关配置
# 现在主要是使用keepalived实现高可用部署,没有用到LVS。
# global全局部分
global_defs {
# 通知邮件,当keepalived发生切换时需要发送email给具体邮箱地址
notification_email {
abc@abc.com
77325496***@qq.com
}
# 设置发件人的邮箱信息
notification_email_from zzz@abc.com
# 指定smtp服务地址
smtp_server 192.168.1.1
# 指定smpt服务链接超时时间
smtp_connect_timeout 30
# 运行keepalived服务器的一个标识(填写主机名就行),可以作用发送邮件的主题信息
router_id LVS_DEVEL # 检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思时,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查)。默认不跳过检查。
vrrp_skip_check_adv_addr
# 严格遵守VRRP协议
vrrp_strict
# 在一个接口发送的两个免费ARP之间的延迟。可以精确到毫秒级。默认是0
vrrp_garp_interval 0
# 在一个网卡上每组na消息之间的延迟时间,默认为0
vrrp_gna_interval 0
} # vrrp实例部分VI_1是实例的名称
vrrp_instance VI_1{
# 设置当前实例时master还是backup路由器
state MASTER
# 用哪个网卡来发送消息包
interface eth0
# VI_1实例的唯一标识值 0-255之间任意值
virtual_router_id 51
# 优先级,数值越高级别越高
priority 100
# 定时向外发送arrp通告信息,主要用于心跳机制。1秒
advert_int 1 # 认证相关
authentication {
# 认证类型
auth_type PASS
# 认证密码
auth_pass 1111
}
# 配置虚拟IP地址,可以配置多个供用户访问
virtual_ipaddress {
192.168.1.1
192.168.1.2
}
} # 如何配置Keepalived当机自动重启
# 1.在Keepalived.conf全局位置增加配置
vrrp_script 脚本名称
{
script "脚本位置"
interval 3 # 执行间隔
weight -20 # 动态调整vrrp_instance的优先级。master路由的优先级调低了也是优先master路由。所以要想master路由也参与该机制,就别设置master路由,只要将所有的路由都设置为backup路由就行。
}
# 2.编写脚本
ck_nginx.sh
#!/bin/bash
num =`ps -C nginx --no-header | wc -l`
if [ $num -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
# ps指令中的参数
# -C(command):指定命令的所有进程
# --no-header 排除标题 # 例子:
# 这里是加载声明脚本
vrrp_script ck_nginx {
script "/etc/keepalived/ck_nginx.sh"
interval 2
weight -20
}
vrrp_instance VI_1{
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1 authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.1
192.168.1.2
}
track_script{
# 这里可以指定多个脚本
ck_nginx
ck_nginx
}
} # 配置两个Keepalived
# virtual_router_id、authentication、virtual_ipaddress要一样
# 启动服务
./keepalived

Nginx 集群部署(Keepalived)的更多相关文章

  1. NetCore在Centos7上部署和Nginx集群部署访问

    NetCore在Linux上部署 工具:WMWare虚拟机,Wmware12,CentOS7ISO镜像,VS2017 1.安装虚拟机,过程略,网上一搜一大把 2.用VS2017建一个NetCore的W ...

  2. Nginx+Tomcat集群部署

    为了获取更好的性能,我们常常需要将tomcat进行集群部署.下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞. 应用场景环 ...

  3. 利用nginx进行集群部署

    现在一般的服务器都是集群的情况了,所以准备搞集群部署下. nginx用的是第三方的openrestynginx.首先安装nginx,我的系统是UBuntu,安装方法也很简单,见官网. 自己采用了默认安 ...

  4. Nginx+Tomcat+Memcached 实现集群部署时Session共享

    Nginx+Tomcat+Memcached 实现集群部署时Session共享 一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Sessi ...

  5. 基于k8s集群部署prometheus监控ingress nginx

    目录 基于k8s集群部署prometheus监控ingress nginx 1.背景和环境概述 2.修改prometheus配置 3.检查是否生效 4.配置grafana图形 基于k8s集群部署pro ...

  6. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

  7. 庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群

    庐山真面目之十微服务架构 Net Core 基于 Docker 容器部署 Nginx 集群 一.简介      前面的两篇文章,我们已经介绍了Net Core项目基于Docker容器部署在Linux服 ...

  8. Haproxy配合Nginx搭建Web集群部署

    Haproxy配合Nginx搭建Web集群部署实验 1.Haproxy介绍 2.Haproxy搭建 Web 群集 1.Haproxy介绍: a)常见的Web集群调度器: 目前常见的Web集群调度器分为 ...

  9. 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享

    一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...

随机推荐

  1. 49. Group Anagrams - LeetCode

    Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List&l ...

  2. 312. Burst Balloons - LeetCode

    Question https://leetcode.com/problems/burst-balloons/description/ Solution 题目大意是,有4个气球,每个气球上有个数字,现在 ...

  3. socket套接字补充、操作系统发展史、进程

    目录 socket套接字之UDP协议 操作系统的发展史 手工操作 批处理系统 联机批处理系统 脱机批处理系统 多道技术 进程理论 并发与并行 同步与异步 阻塞与非阻塞 同步异步与阻塞非阻塞总结 soc ...

  4. Primal_Dual 原始对偶

    不是费用流都需要用 SPFA 吗. 众所周知,SPFA 去世了,然后网络流显然有负边.于是我们可以像 Johnson 全源最短路一样,给边加上势能,具体实现看我之前的 博客 啦. 然后对于每一次跑 D ...

  5. 图的连通性--Tarjan算法

    一些概念 无向图: 连通图:在无向图中,任意两点都直接或间接连通,则称该图为连通图.(或者说:任意两点之间都存在可到达的路径) 连通分量: G的 最大连通子图 称为G的连通分量. 有向图 (ps.区别 ...

  6. Java并发3

    轻量级锁:如果一个有多个线程访问,但多线程访问的时间是错开的,没有竞争,那么可以使用轻量级锁来优化: monitor:重量级锁: 正常我们使用synchronized时,没有竞争则是轻量级锁,当遇到竞 ...

  7. KALI2020忘记用户名和密码

    时隔半年,打开kali发现忘记了自己精心研制的用户名密码......... 第一步 在开机的时候就按e键进入如下界面 第二步 用键盘上的上下箭头↑↓进行屏幕滚动,滑到最后一行发现修改目标 倒数第四行: ...

  8. vue传值的几种方式

    props:适用于 父组件 ==> 子组件 通信 由父组件传值子组件在props中接收即可: (由父组件给子组件传递 函数类型 的props可实现 子组件 ==> 父组件 传递数据,较为繁 ...

  9. 离线环境使用NuGet

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月13日. 在Visual Studio中直接使用GUI的方式操作NuGet包非常的方便.如果喜欢命令行,也可以使用包管理控制台或者 ...

  10. 《ECMAScript 6 入门》【二、变量的解构赋值】(持续更新中……)

    前言: 让我们看下es6的新语法解构,跟模式匹配类似.一.数组的解构赋值 举个例子给多个变量赋值的写法: var a =1;var b =2;var c =3; 需要写多个变量特别麻烦,我们先使用以前 ...