2021-08-29

news2025/7/17 21:50:35

服务器

主:172.17.0.2 master   

备:172.17.0.3 slave1

lvs虚拟IP:172.17.0.100

 
#nginx下载地址 http://nginx.org/download/
 

本地文件路径

1.dockerfile构建nginx

 
FROM centos:7
ADD nginx-1.6.0.tar.gz /usr/local
COPY nginx_install.sh /usr/local
RUN sh /usr/local/nginx_install.sh
EXPOSE 80
 

2.#安装nginx的shell脚本 nginx_install.sh

 
#! /bin/bash
yum install -y gcc -c++ make pcre pcre-devel zlib-devel
cd /usr/local/nginx-1.16.0
./configure --prefix=/usr/local/nginx && make && make install
 

3.构建镜像

 
#master: 
docker build -t mycentos:master-nginx .
#slave
docker build -t mycentos:slave1-nginx .
 

 4.查看构建的镜像

 
docker images
 

 

 5.启动容器

 
#master
docker run -itd --privileged=true -p 80:80 mycentos:master-nginx /usr/sbin/init
#slave1
docker run -itd --privileged=true -p 81:80 mycentos:slave1-nginx /usr/sbin/init
 

6.安装 keepalived

 
#keepalived 下载地址
http://nginx.org/download/nginx-1.9.10.tar.gz
 

7.复制本地keepalived包到docker容器中

 
#master 容器ID:cf2efc79462d  /usr/local/:复制到容器对应的路径下
    docker cp keepalived-1.2.18.tar.gz cf2efc79462d:/usr/local/

#slave1 容器ID: bf0ef0ead87c  /usr/local/:复制到容器对应的路径下
    docker cp keepalived-1.2.18.tar.gz bf0ef0ead87c:/usr/local/
 

8.分别进入master slave1容器中

 
1.进入master slave1 容器中
#master
docker exec -it cf2efc79462d /bin/bash

#slave1
docker exec -it bf0ef0ead87c /bin/bash


2.master slave1分别执行以下操作
    2.1解压安装:
    tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
    2.2下载插件openssl
    yum install -y openssl openssl-devel
    2.3开始编译keepalived
    cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
    2.4进入keepalived-1.2.18目录 make一下
    make && make install
 

9.keepalived安装成Linux系统服务

 
将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local)
创建文件夹,将keepalived配置文件进行复制:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制keepalived脚本文件:
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
#如果提示文件已经存在先做rm操作 时入sbin目录
rm -rf keepalived
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
 

10.配置keepalived

 
# maser  cat keepalived.conf 
vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2 
    weight -20
}
vrrp_instance VI_1 {
    state MASTER              #指定master
    interface eth0            #网卡信息 进入相应的容器 输入命令ip a 可以查看相应的网卡信息
    virtual_router_id 100     #所有服务器指定一致
    mcast_src_ip 172.17.0.2   #容器Ip地址 输入命令ip a 可以查看相应IP地址
    priority 100              
    nopreempt 
    advert_int 1
    authentication {          
        auth_type PASS     
        auth_pass 1111
    }
    
    track_script {
        chk_nginx 
    }

    virtual_ipaddress {     #设置LVS 虚拟VIP
        172.17.0.100
    }
}


#cat nginx_check.sh  重启nginx脚本
#!/bin/bash
A=`ps -C nginx ?Cno-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx              #启动Nginx命令
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

########################################################################

# slave1  cat keepalived.conf 

vrrp_script chk_nginx {
    script "/etc/keepalived/nginx_check.sh"
    interval 2 
    weight -20
}
vrrp_instance VI_1 {
    state BACKUP              #指定BACKUP
    interface eth0            #网卡信息 进入相应的容器 输入命令ip a 可以查看相应的网卡信息
    virtual_router_id 100     #所有服务器指定一致
    mcast_src_ip 172.17.0.3   #容器Ip地址 输入命令ip a 可以查看相应IP地址
    priority 100              
    nopreempt 
    advert_int 1
    authentication {          
        auth_type PASS     
        auth_pass 1111
    }
    
    track_script {
        chk_nginx 
    }

    virtual_ipaddress {     #设置LVS 虚拟VIP
        172.17.0.100
    }
}

#cat nginx_check.sh  重启nginx脚本
#!/bin/bash
A=`ps -C nginx ?Cno-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx              #启动Nginx命令
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi


##############################################################
#分别将这些宿主机的配置文件复制到相应的docker容器中
#master
docker cp keepalived.conf cf2efc79462d:/etc/keepalived
docker cp nginx_check.sh cf2efc79462d:/etc/keepalived

#slave1
docker cp keepalived.conf bf0ef0ead87c:/etc/keepalived
docker cp nginx_check.sh bf0ef0ead87c:/etc/keepalived

 

11.分别启动master,slave1 中keepalived

 
#启动
service keepalived start
#关闭
service keepalived stop
 

12进入容器中nginx中修改 /nginx/html/index.html

进入master 容器 ip a

进入slave1 容器 ip a 

 

13测试

 
#进入master slave1容器中输入
curl 172.17.0.100
 

 master:

 slave1:

 正常情况下只会访问master服务器 -- master 挂掉的情况下才会访问slave1 服务器

master容器中执行

 
#模拟挂掉
service keepalived stop
 

 请求转移到slave1 服务器中 (curl 172.17.0.100)

slave1 容中执行 ip a

重启master

 
#模拟重启
service keepalived start
 

 进入master 输入 ip a

 输入curl 172.17.0.100

 slave1容中 输入ip a

 slave1容器中输入 curl 172.17.0.100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363053.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

毕业设计(1)-AFLGO的安装

AFLGO是一个模糊测试工具,在CSDN上的安装教程不多,自己在安装过程中也出现了很多教程之外的错误,最后反复安装了2天终于安装成功这里记录一下安装工程中的错误 使用的平台:Ubuntu18.04 配置: 内存:6G&…

StreamAPI

StreamAPI 最近开发用上了 Java8的StreamAPI,(咋现在才用?嗯哼,项目需要)自己也不怎么会,来总结一波吧! 别认为好抽象!!!干他就完事 一.StreamAPI介绍 就是用来处理集合的数据 其实到后面会发现和SQL的语句是差不多的~哈哈?你不信?往下面看 Stream:英文翻译叫做流 举个粟子…

华为OD机试 - 最多等和不相交连续子序列(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

老学长的浙大MPA现场复试经验分享

作为一名在浙大MPA项目已经毕业的考生来说,很荣幸受到杭州达立易考周老师的邀请,给大家分享下我的复试经验,因为听周老师说是这几年浙大MPA因疫情情况,已经连续几年都是线上个人复试了,而今年疫情社会面较为平稳的情况…

【LoRa模块】关键参数记录

记录lora以及lorawa关键射频参数 这里写目录标题1. LoRa LoRaWAN LPWAN 三者区分2. LoRaWAN网路架构的特点3.关键参数4.参数定义1. LoRa LoRaWAN LPWAN 三者区分 2. LoRaWAN网路架构的特点 终端点的通讯是双向的 (bi-directional)LoRaWAN 数据速率可以从 0.3 kbps 到 50 kbps扩…

7 个 JavaScript Web API 来构建你不知道的未来网站

随着技术的日新月异,为开发人员提供了令人难以置信的新工具和API。但据了解,在100 多个 API中,只有5%被开发人员积极使用。让我们来看看一些有用的Web API,它们可以帮助您将网站推向月球!🌕🚀1.…

spring5.x-IOC模块源码学习

上文:spring5.x介绍及搭配spring源码阅读环境IOC介绍spring的IOC和DI演示案例com.hong.model.Userpackage com.hong.model;import org.springframework.stereotype.Component;import java.io.Serializable;/** * ClassName User * Description 用户 * Author csh * …

【Java】Spring的创建和使用

Spring的创建和使用 Spring就是一个包含众多工具方法的IOC容器。既然是容器,那么就具备两个最主要的功能: 将对象存储到容器中从容器中将对象取出来 在Java语言当中对象也叫作Bean。 1. 创建Spring项目 创建一个普通maven项目添加Spring框架支持(spri…

Kotlin-面向对象

本片博客主要写创建对象,创建接口,创建抽象类,data关键字的作用 创建对象 如何声明一个对象,使用class关键字 格式为: class 对象名字(对象属性名:属性类型…){} 如果对象没有函数…

python自学之《21天学通Python》(12)——第15章 线程和进程

现代操作系统大多都是多任务的,可以同时执行多个程序。进程是应用程序正在执行的实体,当程序执行时,也就创建了一个主线程。进程在创建和执行时需要一定的资源,比如内存、文件、I/O设备等。大多现代操作系统中支持多线程和进程。线…

JAVA服务端实现页面截屏(附代码)

JAVA服务端实现页面截屏适配需求方案一、使用JxBrowser使用步骤:方案二、JavaFX WebView使用步骤:方案三、Headless Chrome使用步骤:综上方案对比记录我的一个失败方案参考适配需求 有正确完整的地址url;通过浏览器能打开该url对…

Redis缓存一致性问题(缓存更新策略)

Redis缓存的一致性1. 缓存1.1 缓存的作用:1.2 缓存的成本:2. 缓存模型3. 缓存一致性问题3.1 引入3.2 解决(1) 先更新数据库,再手动删除缓存(2) 使用事务保证原子性(3) 以Redis中的TTL为兜底3.3 案例:商铺信息查询和更新(1) 查询商…

5.12 BGP选路原则综合实验

配置BGP的选路原则 1. 实验目的 熟悉BGP的选路的应用场景掌握BGP的选路的配置方法2. 实验拓扑 实验拓扑如图5-11所示: 图5-11:配置BGP的选路原则 3. 实验步骤 (1)配置IP地址 R1的配置

Spring中自定义Session管理,Spring Session源码解析

系列文章:Spring Boot学习大纲,可以留言自己想了解的技术点 目录 系列文章:Spring Boot学习大纲,可以留言自己想了解的技术点 1、session是什么? 1>session在哪里? 2>服务器怎么知道每次说话的是…

Python + Selenium,分分钟搭建 Web 自动化测试框架!

在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的…

【Datawhale图机器学习】DeepWalk和Node2Vec

DeepWalk:用于图节点嵌入的在线机器学习算法 论文介绍 DeepWalk是基于随机游走的图节点嵌入算法。首次将深度学习和自然语言处理思想用于图机器学习,将随机游走序列与句子类比,节点与单词类比,构建Word2Vec的Skip-Gram无监督&am…

了解Axios及其运用方式

Axios简介 axios框架全称(ajax – I/O – system): 基于promise用于浏览器和node.js的http客户端,因此可以使用Promise API 一、axios是干啥的 说到axios我们就不得不说下Ajax。在旧浏览器页面在向服务器请求数据时,…

计算机网络基础知识

目录 通信基础 前言 广播域与冲突域 计算机之间的连接方式 网线直连(交叉线) 同轴电缆 集线器 网桥 前言 举例(计算机6向计算机7相互通信) 交换机 交换机原理 路由器 路由器与其他设备区别: 注意&#…

Docker之路(3.docker底层原理、和虚拟机VM对比区别)

1.docker run 流程图 2. docker 底层原理 2.1 docker 是怎么工作的? Docker 是一个 Client-Server 结构的系统,Docker的守护进程运行在主机上, 通过Socket从客户端访问! DockerServer接收到Docker-Client的指令,就会执…

【历史上的今天】2 月 22 日:Red Hat Enterprise Linux 问世;BASIC 语言作者出生;计算机协会创始人诞生

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 2 月 22 日,在 1857 年的今天,德国物理学家海因里希赫兹(Heinrich Hertz)出生。赫兹于 1887 年首先用实验证实了…