《nginx》四nginx的负载均衡+keepalived实现nginx的高可用(代码片段)

mqy1023 mqy1023     2022-12-03     477

关键词:

nginx 在系统中的作用是给系统提供一些负载均衡和动态代理的作用。通过不同轮询到不同服务,即使一台服务器挂掉,也能将请求转发到其他服务器上。

但如果 nginx 挂掉,那此时整个系统就没有入口了,所以,我们需要对 Nginx 做高可用配置。

这里准备两台 Nginx 服务器。

具体的思路是,将两台 Nginx 服务器都设置成一个 虚拟 IP,当 主 Nginx 服务器挂掉之后,当我们再次访问的时候,实际上就是访问我们的 从Nginx服务器来做负载均衡了,整个 IP 切换过程对于用户来说是没有感觉的,这种 工作 IP 地址变化的过程,被称为 IP漂移。
这个 虚拟IP 是由第三方软件提供的,它就是 keepalived 。

Keepalived 提供了两种模式:

  • 1、master->backup模式 : 一旦主库宕机,虚拟ip会自动漂移到从库,当主库修复后,keepalived启动后,还会把虚拟ip抢占过来, 即使设置了非抢占模式(nopreempt)抢占ip的动作也会发生。

  • 2、backup->backup模式 : 一旦主库宕机,虚拟ip会自动漂移到从库上,当原主库恢复和keepalived服务启动后,并不会抢占新主的虚拟ip, 即使是优先级高于从库的优先级别,也不会发生抢占。为了减少ip漂移次数,通常是把修复好的主库当做新的备库。

一、资源配置

  • 1、服务器A:192.168.0.221: nginx + keepalived

  • 2、服务器B:192.168.0.222: nginx + keepalived

  • 3、服务器C:192.168.0.223: tomcat

  • 4、服务器D:192.168.0.224: tomcat

  • 5、【非实际云主机资源】虚拟ip(VIP):192.168.0.200,对外提供服务的ip,也可称作浮动ip

二、服务器A和B的配置和使用

  • 1、主机/etc/keepalived/keepalived.conf
#主机
#检测脚本
vrrp_script chk_http_port 
    script "/usr/local/src/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2                            #权重

#vrrp 实例定义部分
vrrp_instance VI_1 
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 66    # 虚拟路由编号,主从要一致
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication 
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    
    track_script 
        chk_http_port            #(调用检测脚本)
    
    virtual_ipaddress 
        192.168.0.200            # 定义虚拟ip(VIP),可多设,每行一个
    

  • 2、备机/etc/keepalived/keepalived.conf
# 备机
#检测脚本
vrrp_script chk_http_port 
    script "/usr/local/src/check_nginx.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                          #(检测脚本执行的间隔)
    weight 2                            #权重

#vrrp 实例定义部分
vrrp_instance VI_1 
    state BACKUP                        # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33                      # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 66                # 虚拟路由编号,主从要一致
    priority 99                         # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1                        # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication 
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    
    track_script 
        chk_http_port                   #(调用检测脚本)
    
    virtual_ipaddress 
        192.168.0.200                   # 定义虚拟ip(VIP),可多设,每行一个
    

  • 3、检测脚本(chmod 775 check_nginx.sh)
#!/bin/bash
#检测nginx是否启动了
A=`ps -C nginx --no-header |wc -l`        
if [ $A -eq 0 ];then    #如果nginx没有启动就启动nginx                        
      systemctl start nginx                #重启nginx
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived                    
      fi
fi
  • 4、启动Nginx和keepalived(systemctl start keepalived.service)

注意:有个坑,如果发现你的 nginx 关闭之后脚本不执行的原因

  • a、可能是防火墙的问题
  • b、可用先看下配置中的参数路径,查看脚本可执行权限
  • c、需要关闭selinux,然后重新启动
    #关闭:
    setenforce 0      
    
    #永久关闭:
    sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
    

haproxy+keepalive负载均衡环境部署(主主模式)

...------------------------------------一般我们运维工作中,常用的负载均衡工具就是nginx、haproxy、lvs,常常还会结合keepalive做健康检查,实现故障转移的高可用功能。nginx是7层负载均衡haproxy比较灵活,4层负载均衡和7层负载均衡都可以做... 查看详情

实现keepalive+haproxy+nginx七层负载均衡+动静分离

 试验环境:系统统一使用 CentOS7.6192.168.2.6  KeepAlived+Haproxy192.168.2.10 KeepAlived+Haproxy192.168.2.4  Nginx   静态服务器1192.168.2.7  Nginx   静态服务器2192.168.2.11 Nginx+php  动态服务器192.168.2.12 N 查看详情

创作赢红包nginx四——nginx实现负载均衡的多种策略(代码片段)

...文章目录【Nginx一】——Nginx介绍(正向代理反向代理负载均衡动静分离)【Nginx二】——Nginx常用命令配置文件Nginx如何处理请求【Nginx三】——Nginx实现反向代理Nginx实现负载均衡系列文章目录前言一、Nginx的负载均衡是... 查看详情

lvs(dr)+keepalive实现负载均衡

环境:MASTER:192.168.10.34(LVS+KEEPALIVE)SLAVE:192.168.10.33(LVS+KEEPALIVE)WEB1:192.168.10.35 (NGINX)WEB2:192.168.10.38 (NGINX)VIP:192.168.10.201一.服务端:安装lvs、keepalive服务yum-yinstallkeepaliveipvs 查看详情

nginx---负载均衡和缓存(代码片段)

Nginx---负载均衡负载均衡概念负载均衡的原理及处理流程负载均衡的作用负载均衡常用的处理方式方式一:用户手动选择方式二:DNS轮询方式方式三:四/七层负载均衡Nginx七层负载均衡Nginx七层负载均衡的指令upstream指令server指令Nginx... 查看详情

nginx——nginx作为负载均衡服务(负载均衡与nginx)

目录一、负载均衡的理解二、OSI模型的理解三、负载均衡主要分类(按地域划分)1、全局负载均衡(GSLB,GlobalServerLoadBalance)2、服务器负载均衡(SLB,ServerLoadBalancing)四、负载均衡主要分类(按OSI... 查看详情

《nginx》四nginx的负载均衡+keepalived实现nginx的高可用(代码片段)

nginx在系统中的作用是给系统提供一些负载均衡和动态代理的作用。通过不同轮询到不同服务,即使一台服务器挂掉,也能将请求转发到其他服务器上。但如果nginx挂掉,那此时整个系统就没有入口了,所以,... 查看详情

《nginx》四nginx的负载均衡+keepalived实现nginx的高可用(代码片段)

nginx在系统中的作用是给系统提供一些负载均衡和动态代理的作用。通过不同轮询到不同服务,即使一台服务器挂掉,也能将请求转发到其他服务器上。但如果nginx挂掉,那此时整个系统就没有入口了,所以,... 查看详情

四nginx负载均衡实例(代码片段)

一、负载均衡概念单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就... 查看详情

nginx做负载均衡时,nginx宕机怎么办

...求到达时,被转发到了这个tomcat。参考技术A如果用nginx做负载均衡的话就怕转发的机器挂了,如果转发的机器挂了就都挂了。可以对转发的机器做监听,或者用keepalived,具体可以去查查相关资料 参考技术Bnginx+keepalive 查看详情

nginx负载均衡(代码片段)

Nginx负载均衡简介四层负载均衡七层负载均衡Nginx负载均衡实现原理示例a、用一台服务器来实现负载均衡,配置如下:b、另外三台真实服务器的配置如下:c、分别在三台真实服务器(当然我这里是在一台服务器中... 查看详情

nginx负载均衡(代码片段)

Nginx负载均衡简介四层负载均衡七层负载均衡Nginx负载均衡实现原理示例a、用一台服务器来实现负载均衡,配置如下:b、另外三台真实服务器的配置如下:c、分别在三台真实服务器(当然我这里是在一台服务器中... 查看详情

nginx四层负载均衡

一、四层负载均衡原理Nginx四层负载均衡就是实现通过访问某个ip的端口转发至对应的服务器上,如图当访问10.0.0.5的5555端口就会跳转至web服务器172.1.16.7的22号端口,当访问10.0.0.5的6666端口就会转发到mysql服务器的3306端口,高效... 查看详情

nginx架构四之七层负载均衡(代码片段)

负载均衡概念负载均衡(Loadbalancing)在不同的领域有不同的概念。其基本概念是为了减轻某个或某些实体的负载,将任务通过某种策略分配到多个实体上去,实现负载在不同实体间的平衡。七层负载均衡七层就是... 查看详情

nginx——nginx作为负载均衡服务(负载均衡策略url_hash策略)(代码片段)

目录一、nginx作为负载均衡服务的调度算法二、lz虚拟机说明三、url_hash配置语法四、url_hash调度算法演示1、配置192.168.3.11虚拟机(即模拟三台虚拟机应用服务器)2、配置192.168.3.10虚拟机(即负载均衡服务器)一、... 查看详情

nginx——nginx作为负载均衡服务(负载均衡策略ip_hash方式)(代码片段)

目录一、nginx作为负载均衡服务的调度算法二、lz虚拟机说明三、ip_hash调度算法演示1、配置192.168.3.11虚拟机(即模拟三台虚拟机应用服务器)2、配置192.168.3.10虚拟机(即负载均衡服务器)四、ip_hash调度算法缺点... 查看详情

nginx根据域名二级目录进行转发实现负载均衡

目前需求如下只有一个域名要求根据不同的路径转发到不同服务器实现如下(本地) worker_processes1;eventsworker_connections1024;httpincludemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;#81~83端口模拟w 查看详情

lvs+keepalive

一、常用的负载均衡软件:Nginx 应用层负载LVS   网络层负载HAProxy 应用层负载常用的负载均衡硬件:F5、Netscale二、LVS的四种工作模式1)VS/NAT模式(Networkaddresstranslation)通过NAT转换表进行负载,收包和回包都需... 查看详情