ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx代理和并发和Keepalived高可用案例

2022-01-29 15:33:45  阅读:208  来源: 互联网

标签:并发 Keepalived keepalived auth server nginx virtual eth0


这里写自定义目录标题

负载均衡,这里有个地方没有写=5,注意下图

在这里插入图片描述

在这里插入图片描述

安装 telnet
在这里插入图片描述
重启ng,并配置ip
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
地址hash
在这里插入图片描述
在这里插入图片描述
最大链接数
在这里插入图片描述
携带header
在这里插入图片描述
在这里插入图片描述
带主机名和ip
在这里插入图片描述
域名的拆分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
include包含文件
在这里插入图片描述
proxy.conf代理设置
在这里插入图片描述
在这里插入图片描述
动静分离
在这里插入图片描述
通过扩展名实现动静分离,也阔以通过if判断
在这里插入图片描述
在这里插入图片描述
通过useragent进行判断
在这里插入图片描述

在这里插入图片描述
健康检查
在这里插入图片描述

高可用 Keepalived

高可用:两台业务系统启动着相同的服务,如果有一台故障,另一台自动接管,我们将将这个称之为高可用;
在这里插入图片描述

Keepalived 会生成一个虚拟IP,此虚拟IP与多台真实的服务器的IP绑定,当用户发来请求到虚拟IP时,请求先路由到主服务器,当主服务器宕机后,请求会路由到备用服务器,以达到高可用的目的。
在这里插入图片描述
Keepalived工作方式:抢占式、非抢占式
@1. yum安装:

yum install keepalived  -y

日志存放位置:/var/log/messages

@2. 官网
可以到Keepalived官网(https://www.keepalived.org)下载

tar -zxvf keepalived-2.2.4.tar.gz

@1. 安装依赖包
yum -y install libnl libnl-devel

yum install -y openssl openssl-devel

@2. 执行配置命令,进入目录执行
./configure --prefix=/usr/local/keepalived --sysconf=/etc

@3. 执行编译并安装命令
make && make install

@4. 安装成功后,在 /etc/keepalived 目录下,会看到 keepalived.conf 文件。

二. 方式1的配置

进入 /etc/keepalived 目录下,修改 keepalived.conf 文件。
A服务器配置如下:

! Configuration File for keepalived

global_defs {
   
   # 全局唯一的主机标识
   router_id server_a
   
}

vrrp_instance VI_1 {

    # 标识是主节点还是备用节点,值为 MASTER 或 BACKUP
    state MASTER
    # 绑定的网卡
    interface ens33
    # 虚拟路由id,保证主备节点是一致的
    virtual_router_id 51
    # 权重
    priority 100
    # 同步检查时间,间隔默认1秒
    advert_int 1
    # 认证授权的密码,所有主备需要一样
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP
    virtual_ipaddress {
        192.168.1.88
    }
}
B服务器配置如下:


! Configuration File for keepalived

global_defs {
   
   router_id server_b
   
}

vrrp_instance VI_1 {
    
    # 设置为备机
    state BACKUP
    interface ens33
    virtual_router_id 51
    # 权重设置的要比主机低
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP需要主备设置成一样
    virtual_ipaddress {
        192.168.1.88
    }
}
  1. 给出虚拟ip,并建立shell脚本,一定要给权限,一定要给权限在这里插入图片描述
    在这里插入图片描述

5、启动Keepalived

进入 /usr/local/keepalived/sbin 目录
./keepalived
或者
用脚本启动nginx   以及keepalived:

systemctl start keepalived.service

在这里插入图片描述
查看日志:
在这里插入图片描述
启动脚本, 已经帮我把nginx启动了。查看网卡生成的虚拟ip地址:192.168.116.15:
在这里插入图片描述
验证服务
在这里插入图片描述
在这里插入图片描述

6、停止A服务器,看虚拟IP是否路由到B服务器
经试验可知,A服务器关闭后,虚拟IP便路由到了B服务器。
在这里插入图片描述
最后修改nginx的代理指向这个虚拟IP即可

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;                           
    upstream server_pools {
      server 10.0.0.7:80;
      server 10.0.0.8:80;
    }
    server {
        listen 192.168.1.15:80;
        server_name www.etiantian.org;
        location / {
            proxy_pass http://server_pools;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    } 

二. 方式2的配置

1、keepaliaved 抢占式配置

master配置

在这里插入图片描述

backup配置

在这里插入图片描述

2、Keepalived非抢占式配置:

非抢占式不再有主从之分,全部都为BACKUP,并且配置文件中添加nopreempt,用来标识为非抢占式;
第一台配置文件设置
在这里插入图片描述
第二台配置文件设置
在这里插入图片描述

3、nginx+keepalived

实现思路:将keepalived 中的vip作为nginx负载均衡的监听地址,并且域名绑定的也是vip的地址。说明:Nginx 负载均衡实现高可用,需要借助Keepalived地址漂移功能。
在这里插入图片描述
两台负载均衡配置:
在这里插入图片描述
在这里插入图片描述

4、keepalived脑裂现象

由于某些原因,导致两台keepalived高可用服务器在指定时间内,无法检测到对方存活心跳信息,从而导致互相抢占对方的资源和服务所有权,然而此时两台高可用服务器有都还存活。

可能出现的原因:

  • 1、服务器网线松动等网络故障;
  • 2、服务器硬件故障发生损坏现象而崩溃;
  • 3、主备都开启了firewalld 防火墙。
  • 4、在Keepalived+nginx 架构中,当Nginx宕机,会导致用户请求失败,但是keepalived不会进行切换,

! 所以需要编写一个检测nginx的存活状态的脚本,如果nginx不存活,则kill掉宕掉的nginx主机上面的keepalived。(所有的keepalived都要配置)
在这里插入图片描述
脚本如下:
在这里插入图片描述
配置文件如下:
在这里插入图片描述

多实例的配置

在这里插入图片描述

编写监控脚本,check_www.sh

vim check_www.sh



#!/bin/bash

while true
do
if [ `ps -ef |grep nginx |grep -v grep |wc -l` -lt 2 ]
then
   /etc/init.d/keepalived stop
   exit
fi
done


chomod +x check_www.sh

2.7.1 lb01的keepalived配置文件

[root@lb01 scripts]# cat  /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id lb01
}

vrrp_script check {
   script "/server/scripts/check_www.sh"
   interval 2 
   weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.3/24 dev eth0 label eth0:1
    }
    track_script {
       check
    }
}
vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 52
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.0.0.4/24 dev eth0 label eth0:2
    }
}

2.7.2 修改lb02的keepalived配置文件

[root@lb02 conf]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   router_id lb02
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.3 dev eth0 label eth0:1
    }
}
vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 52
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.4 dev eth0 label eth0:2
    }
}

修改nginx配置文件,让bbs 与www分别监听不同的ip地址

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;                           
    upstream server_pools {
      server 10.0.0.7:80;
      server 10.0.0.8:80;
      server 10.0.0.9:80;
    }
    server {
        listen 10.0.0.3:80;
        server_name www.etiantian.org;
        location / {
            proxy_pass http://server_pools;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    } 
    server {
        listen 10.0.0.4:80;
        server_name bbs.etiantian.org;
        location / {
            proxy_pass http://server_pools;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
        }
    } 
}

在这里插入图片描述



标签:并发,Keepalived,keepalived,auth,server,nginx,virtual,eth0
来源: https://blog.csdn.net/feiyu361/article/details/122741459

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有