Docker搭建Nginx+keepalived高可用负载均衡服务器

这篇具有很好参考价值的文章主要介绍了Docker搭建Nginx+keepalived高可用负载均衡服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景
1.nginx高可用

在生产环境下,Nginx作为流量的入口,如果Nginx不能正常工作或服务器宕机,将导致整个微服务架构的不可用。所以负责负载均衡、反向代理的服务(Nginx)为了提高处理性能,高可用,也需要集群部署。本期咋们采用 keepalived 和 Nginx实现高可用。

2.KeepAlived

KeepAlived是Linux下的基于VRRP备份路由的高可靠性中间件。如果一台服务器宕机,KeepAlived会检测到并将发生故障的机器从集群中摘除,同时使用其他的服务器代替该故障机器的工作,当服务器重新正常工作后KeepAlived就会自动将该服务器加入到工作集群中,以上的工作都是KeepAlived自动完成无需人工介入。

3.VRRP协议

VRRP协议英文全称:Virtual Router Redundancy Protocol,即”虚拟路由冗余协议“。将多台提供相同功能的路由器组成路由器组,包含一个master和多个backup。提供虚拟IP,占有这个虚拟IP的master负责ARP的响应和转发IP数据包。master负责发布组广播消息,若master发送的广播长时间没有被backup接收到就会触发选举backup当新master。

4.Nginx+keepalived 双机主从模式

使用两台Nginx服务器,一台主服务器和一台热备服务器,正常情况下,主服务器绑定一个公网虚拟IP,提供负载均衡服务,热备服务器处于空闲状态;当主服务器发生故障时,热备服务器接管主服务器的公网虚拟IP,提供负载均衡服务;但是热备服务器在主机器不出现故障的时候,永远处于浪费状态,对于服务器不多的网站,该方案不经济实惠。

5.Nginx+keepalived 双机主主模式

使用两台Nginx服务器,互为主备,且都处于活动状态,同时各自绑定一个公网虚拟IP,提供负载均衡服务;当其中一台发生故障时,另一台接管发生故障服务器的公网虚拟IP(这时由非故障机器一台负担所有的请求)。该方案解决了双击主从的资源浪费问题,但是有个性能瓶颈的问题在这种模式会出现。就是单台机器上的负载会瞬时过大。那如何解决这个问题呢,就出现了多点集群模式。

6.Nginx+keepalived 多点模式

以上两种方式都有各自的有缺点,多点集群模式应运而生。多点集群可以理解为双机热备在技术上的提升。多机服务器可以组成一个集群。根据应用的实际情况,可以灵活地在这些服务器上进行部署,同时可以灵活地设置接管策略。比如,可以由一台服务器作为其他所有服务器的备机,也可以设置多重的接管关系,等等。这样,就可以充分地利用服务器的资源,同时保证系统的高可用性。

二、docker部署双机主从模式
1.创建网络
# 创建bridge
docker network create -d bridge --subnet 172.70.0.0/16 --gateway 172.70.0.1 nginx-network
docker network ls
# 查看信息
docker network ls
docker network inspect minio-network
# 删除
docker network rm networkId
2.创建容器
# master
docker run -it --name centos-master --privileged -v /home/centos/master:/mnt/software -p 10010:80 --net=nginx-network centos:7
# salve
docker run -it --name centos-salve --privileged -v /home/centos/salve:/mnt/software -p 10020:80 --net=nginx-network centos:7
3.安装准备
# 切换目录
cd /etc/yum.repos.d/
# 删除yum源
rm -rf CentOS*
# 复制yum源
docker cp /etc/yum.repos.d/CentOS-Base.repo 容器id:/etc/yum.repos.d/CentOS-Base.repo
# 安装工具
yum -y update
yum install epel-release
yum -y install net-tools
yum -y install vim
# 清除缓存
yum clean all
# 生成缓存
yum makecache
4.安装nginx
yum -y install nginx
# 启动
nginx
# 停止
nginx -s quit
# 刷新配置
nginx -s reload
5.安装keepalived
yum -y install keepalived 
# 启动
keepalived -l -f /etc/keepalived/keepalived.conf
# 停止
pkill keepalived
# 查看
ps -ef | grep keepalived
keepalived配置
  1. keepalived master配置

    # keepalived.conf
    ! Configuration File for keepalived
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       # 路由id,主备节点不能相同
       router_id LVS_DEVEL_MASTER
       vrrp_skip_check_adv_addr
       #vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
       script_user root
       enable_script_security
    }
    # nginx检查
    vrrp_script chk_nginx {
      script "/etc/keepalived/nginx_check.sh"
      interval 1
      weight 0
    }
    
    vrrp_instance VI_1 {
    	# Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
        state MASTER
        # 指定监测的网卡,可以使用 ifconfig 或 ip a 进行查看
        interface eth0
        # 虚拟路由的id,主备节点需要设置为相同
        virtual_router_id 51
        # 优先级,主节点的优先级需要设置比备份节点高
        priority 100
        # 设置主备之间的检查时间,单位为秒
        advert_int 1
        # 定义验证类型和密码
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 虚拟IP地址,可以设置多个
        virtual_ipaddress {
            172.70.0.10
        }
        # 调用上面自定义的监控脚本
        track_script {
           chk_nginx
        }
    }
    
    
  2. keepalived salve配置

    # keepalived.conf
    ! Configuration File for keepalived
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       # 唯一值
       router_id LVS_DEVEL_SALVE
       vrrp_skip_check_adv_addr
       # vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
       script_user root
       enable_script_security
    }
    
    # nginx检查
    vrrp_script chk_nginx {
      script "/etc/keepalived/nginx_check.sh"
      interval 1
      weight 0
    }
    
    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 {
            172.70.0.10
        }
        track_script {
           chk_nginx
        }
    }
    
  3. nginx检查配置

    # nginx_check.sh
    A=`ps -C nginx --no-header |wc -l`
    if [ $A -eq 0 ];then
     #执行nginx启动命令
     #nginx
     # 启动失败停止keepalived
     if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    	pkill keepalived
     fi
    fi
    
  4. 补充配置文章来源地址https://www.toymoban.com/news/detail-855662.html

    # 文件授权
    chmod +x check_nginx.sh
    chmod +x keepalived.conf
    

到了这里,关于Docker搭建Nginx+keepalived高可用负载均衡服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx+keepalived实现负载均衡和高可用

    环境准备 IP VIP 环境 客户端 192.168.134.174 Master 192.168.134.170 192.168.134.100 需要配置nginx负载均衡 Backup 192.168.134.172 192.168.134.100 需要配置nginx负载均衡 web1服务器 192.168.134.171 web2服务器 192.168.134.173 1、首先安装nginx服务器(此处采用yum安装) 2、修改nginx的配置文件(配置负载均衡)

    2024年02月13日
    浏览(42)
  • nginx+keepalived负载均衡和高可用配置

    nginx用来负载均衡,keepalived是用来实现VIP故障切换。 nginx+keepalived配置中,后端普通服务器不需要lvs实现负载均衡。 在主备节点上测试 配置nginx之前需要将keepalived停止 在keepalived的配置文件中配置vrrp_script进行实时监控。

    2024年02月12日
    浏览(54)
  • 基于nginx+keepalived的负载均衡、高可用web集群

    项目描述: 本项目旨在构建一个高性能、高可用的web集群,使用ansible批量部署项目环境,nginx实现七层负载均衡,NFS实现web服务器机器的数据同源,keepalived搭建双VIP实现高可用,Prometheus+grafana实现对LB负载均衡服务器以及NFS服务器的监控。 项目环境: CentOS 7.9、Nginx 1.25.2、

    2024年02月09日
    浏览(43)
  • web集群学习:nginx+keepalived实现负载均衡高可用性

    目录 项目架构 一,环境介绍 二,项目部署 在Web服务器上配置Web测试页面 nginx负载均衡配置 配置Nginx_Master 通过vrrp_script实现对集群资源的监控(1通过killall命令探测服务运行状态) 通过vrrp_script实现对集群资源的监控(2、开发检测nginx存活的shell脚本) 三,项目测试 四,实

    2024年02月13日
    浏览(53)
  • 虚拟机中使用Nginx + Keepalived 实现高可用 Web 负载均衡笔记

    物理操作系统:Windows10 虚拟机软件:VMWare Workstation 16 Pro 虚拟操作系统统:CentOS7 Nginx:1.24.0 Keepalived:2.2.8 在VMWare Worksattion中安装了2台CentOS7的虚拟机,桥接方式下IP地址分别为:192.168.0.35、192.168.0.36 VIP IP 主机名 Nginx端口 默认主从 192.168.0.100 192.168.0.35 wongoing01 88 MASTER 192.168

    2024年02月11日
    浏览(61)
  • LVS-DR模式+keepalived+nginx+tomcat实现动静分离、负载均衡、高可用实验

    实验条件: test2——20.0.0.20——主服务器——ipvsadm、keepalived服务 test3——20.0.0.30——备服务器——ipvsadm、keepalived服务 nginx5——20.0.0.51——后端真实服务器1(tomcat的代理服务器)——nginx服务 nginx6——20.0.0.61——后端真实服务器2(tomcat的代理服务器)——nginx服务 tomcat——

    2024年02月08日
    浏览(67)
  • lvs DR模式+基于五台服务器部署keepalived + lvs DR模式架构(前端带路由)负载均衡的高可用集群

    lvs DR 模式+基于五台服务器部署keepalived + lvs DR模式架构(前端带路由)负载均衡的高可用集群 DR 模式一: 客户端:172.20.26.167 LVS服务器:172.20.26.198 后端服务器:172.20.26.218 后端服务器:172.20.26.210 两台后端服务器 yum install nginx tcpdump -y echo \\\"this is 26.218 page\\\" /usr/share/nginx/html/index

    2024年02月19日
    浏览(51)
  • 两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)

    注意事项 : 1.切记 percona/percona-xtradb-cluster 的版本要统一 ,否则可能出现各种各样的问题 2. 宿主机要关闭SELINUX 。修改文件 vi /etc/selinux/config ,设置SELINUX为disabled,然后reboot机子  两台主机为: 宿主机1:192.168.10.4 宿主机2:192.168.10.6 主节点(在宿主机1上执行) 子节点1(在宿主

    2023年04月26日
    浏览(53)
  • LVS+KeepAlived高可用负载均衡集群

    高可用集群只需要在调度器上多进行一台或两台(服务器本身的价格比较昂贵,一般备用的服务器的数量会和当前业务创造的价值对等)的设置,就可避免因调度器瘫痪业务中断的风险,所以实现了真正的高可用的效果。 1.普通群集 普通的群集的部署是通过一台度器控制调配

    2024年02月09日
    浏览(80)
  • 【Docker】Docker容器实战部署多个Nginx实现负载均衡和高可用

    前言 Docker下部署多个Nginx进行负载均衡,我这次实操的思路是使用三个Nginx。其中一个Nginx起负载均衡的作用,叫做 nginx-lb ,单独一个配置文件。另外2个Nginx起真正的转发作用,叫做 nginx1 和 nginx2 ,他们共享同一个配置文件,思路图如下。 接下来我们直接进行实操演示。 下载

    2024年01月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包