2021-08-29
服务器
主: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/bash2.master slave1分别执行以下操作2.1解压安装:tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/2.2下载插件opensslyum install -y openssl openssl-devel2.3开始编译keepalivedcd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived2.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 #指定masterinterface eth0 #网卡信息 进入相应的容器 输入命令ip a 可以查看相应的网卡信息virtual_router_id 100 #所有服务器指定一致mcast_src_ip 172.17.0.2 #容器Ip地址 输入命令ip a 可以查看相应IP地址priority 100 nopreempt advert_int 1authentication { auth_type PASS auth_pass 1111}track_script {chk_nginx }virtual_ipaddress { #设置LVS 虚拟VIP172.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 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
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 #指定BACKUPinterface eth0 #网卡信息 进入相应的容器 输入命令ip a 可以查看相应的网卡信息virtual_router_id 100 #所有服务器指定一致mcast_src_ip 172.17.0.3 #容器Ip地址 输入命令ip a 可以查看相应IP地址priority 100 nopreempt advert_int 1authentication { auth_type PASS auth_pass 1111}track_script {chk_nginx }virtual_ipaddress { #设置LVS 虚拟VIP172.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 2if [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenkillall keepalivedfi
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

相关文章:
2021-08-29
服务器 主: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 …...
第八题、哈夫曼编码大全
题目: 哈夫曼编码大全 描述: 关于哈夫曼树的建立,编码,解码。 输入 第一行输入数字N,代表总共有多少个字符以及权值 第二第三行分别是一行字符串,以及每个字符对应的权值 接下来输入一个数M,表…...
linux集群技术(二)--keepalived(高可用集群)(二)
案例1--keepalived案例2--keepalived Lvs集群1.案例1--keepalived 1.1 环境 初识keepalived,实现web服务器的高可用集群。 Server1: 192.168.26.144 Server2: 192.168.26.169 VIP: 192.168.26.190 1.2 server1 创建etc下的…...
C# 控制台程序的开发和打包为一个exe文件
目录前言一、我的第一个C#控制台程序二、发布为一个exe文件前言 本文通过C#编写一个简单的示例计算器,来演示C#的使用和使用 Visual Studio 打包为一个 exe 文件。 一、我的第一个C#控制台程序 所谓控制台程序,就是没有界面,运行程序后只有…...
Redis实战案例
文章目录1、SpringBoot整合Redis1.1、新建项目1.2、接口编写1.3、集成Redis1.3、测试1.4、序列化问题2、Redis实现分布式缓存2.1、背景介绍2.2、代码编写2.3、缓存改造2.4、小结3、RedisAOP自定义注解,优雅实现分布式缓存3.1、自定义注解3.2、AOP切面类3.3、测试3.4…...
slice和splice区别
slice和splice区别 splice和slice是数组中的两个重要的方法。 slicesplice不会改变原数组改变原数组返回原数组中的部分元素返回原数组中被删除的元素组成的新数组用来选择数组中的元素用于在数组中插入或者删除元素 1.splice的语法 array.splice(index,howmany,item1,…,ite…...
动态规划从入门到精通-蓝桥杯
一、了解动态规划1.简单来说动态规划是一种状态转移与递推2.例题引入——最少硬币问题有多个不同面值的硬币(任意面值); 数量不限; 输入金额S,输出最少硬币组合。 (回顾用贪心求解硬币问题。)贪心法硬币面值1、2、5。支…...
Docker部署Prometheus
文章目录Prometheus相关介绍Docker部署Prometheus说明安装Prometheus搜索镜像拉取镜像配置启动容器进入容器遇到的问题Are you trying to mount a directory onto a file (or vice-versa)?其他可能的错误Prometheus相关介绍 官方介绍,非常的清楚: http…...
JavaScript的执行顺序
前言 在说 JavaScript 的执行顺序之前,我们先回答一下以下几组程序的输出结果 第 1 组 const output (v) > {console.log(v); };setTimeout(() > {console.log(1); }, 0); output(2); console.log(3);// 2 3 1第 2 组 new Promise((resolve) > {conso…...
C++11智能指针std::shared_ptr介绍及使用
介绍 shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting),比如我们把只能指针赋值给另外一个对象,那么对象多了一个智能指针指向它,所以这个时候引用计数…...
华为OD机试 - 数字的排列(Python) | 机试题+算法思路+考点+代码解析 【2023】
数字的排列 题目 小华是个很有对数字很敏感的小朋友, 他觉得数字的不同排列方式有特殊的美感。 某天,小华突发奇想,如果数字多行排列, 第一行1个数, 第二行2个, 第三行3个, 即第n行n个数字,并且奇数行正序排列, 偶数行逆序排列,数字依次累加。 这样排列的数字一定很…...
Android 事件分发机制(4)-常见面试题
目录 1.你了解过Android的事件分发机制吗?请大致介绍一下 2、如果父view中不拦截down事件,拦截move,up事件,在子view中设置了requestDisallowInterceptTouchEvent(true);(请求父view不拦截事件)这个标志后,…...
计算机四级 [操作系统] | 选择题 2 重点标注版
1.某一个单道批处理系统几乎同时依次到达4个作业,这4个作业的预计运行时间分别为8、4、4和4分钟,按照短作业优先的调度算法运行,请问该批作业的平均周转时间为多少 B A. 14分钟 B. 11分钟 C. 20分钟 D. 10分钟 2.下列与进程具有一一对应的关…...
想玩好ChatGPT?不妨看看这篇文章
相信点进来的铁汁,此时已经对 ChatGPT 有所了解,并想上手体验一番 首先大伙儿要注意,不要被骗了。 现在很多商家提供的 ChatGPT 服务,不仅价格奇高,而且据我所知,有些压根不是 ChatGPT 。 想玩最好去官网注册,具体方法大伙自个儿查一查嗷。 怎么用好 ChatGPT 虽然 …...
day31 IO流
文章目录回顾collectionArrayTestListHashSetTsetHashMapTestPropertiesTreeSetTestIO流FileInputStreamTest01 文件流初步FileInputStreamTest02 循环读FileStreamTest03FileInputStreamTes04 需要掌握FiLeInputStreamTest5FileOutputStreamTest01Copy1 文件拷贝FileReaderTes…...
Linux 防火墙配置(iptables和firewalld)
目录 防火墙基本概念 Iptables讲解 Iptables表 Iptables规则链 Iptables控制类型 Iptables命令配置 firewalld讲解 Firewalld区域概念 Firewalld两种配置方法 firewall-cmd命令行基础配置 firewall-config图形化配置 防火墙基本概念 防火墙就是根据系统管理员设定的…...
深度学习基础(一)
记得17年第一次阅读深度学习相关文献及代码觉得不是很顺畅,做客户端开发时间久了,思维惯性往往觉得比较迷茫。 而且文章中涉及的数学公式及各种符号又觉得很迷惑,虽然文章读下来了,代码也调试过了,意识里并没有轻松的…...
Maven 常用命令
mvn archetype: create :创建Maven 项目mvn compile :编译源代码。mvn deploy:发布项目。mvn test-compile :编译测试源代码mvn test:运行应用程序中的单元测试mvn site:生成项目相关信息的网站mvn clean:清除项目目录中的生成结果mvn package:根据项目生成的iar/war等mvn inst…...
2023年100道最新Android面试题,常见面试题及答案汇总
除了需要掌握牢固的专业技术之外,还需要刷更多的面试去在众多的面试者中杀出重围。小编特意整理了100道Android面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧拿去吧~~文末有答案Q1.组件化和arouter原理Q2.自定义view&…...
[JavaEE系列] 详解面试中HTTP协议HTTPS协议
文章目录HTTP不安全HTTPS中的加密算法对称加密非对称加密混合加密HTTPS中的摘要算法HTTPS中的数字证书SSL /TLS握手TCP建立连接(三次握手)三次握手中常见的面试题:TCP断开连接(四次挥手)四次挥手中常见的面试题&#x…...
如何用网盘直链下载助手突破限制提升效率:5个实用技巧
如何用网盘直链下载助手突破限制提升效率:5个实用技巧 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...
解锁JSON Viewer 3大效率黑科技:从数据解析到开发提效的全流程解决方案
解锁JSON Viewer 3大效率黑科技:从数据解析到开发提效的全流程解决方案 【免费下载链接】json-viewer It is a Chrome extension for printing JSON and JSONP. 项目地址: https://gitcode.com/gh_mirrors/js/json-viewer JSON Viewer是一款专为开发者打造的…...
Wan2.1视频生成小白必看:避开这些坑,让你的视频生成一次成功
Wan2.1视频生成小白必看:避开这些坑,让你的视频生成一次成功 1. 为什么你的视频生成总是失败? 很多新手第一次使用Wan2.1视频生成模型时,都会遇到各种问题:生成的视频模糊不清、内容与描述不符、甚至直接失败。这通常…...
金仓数据库KingbaseES KSQL命令行工具实战指南:从基础操作到高级调优
1. KSQL命令行工具入门指南 第一次接触金仓数据库的KSQL命令行工具时,我完全被它强大的功能震撼到了。作为DBA日常运维的瑞士军刀,KSQL不仅能完成基本的数据库操作,还能进行深度性能分析和调优。记得刚开始使用时,我还在纠结要不要…...
Scarab:重构空洞骑士模组管理体验的技术实践
Scarab:重构空洞骑士模组管理体验的技术实践 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 问题溯源:模组管理的隐性成本与技术瓶颈 量化手动管理的效…...
突破网盘限制:高效下载的终极解决方案——网盘直链下载助手完全指南
突破网盘限制:高效下载的终极解决方案——网盘直链下载助手完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…...
springboot+vue基于web的在线学习资源推荐的设计与实现
目录功能模块分析推荐系统功能交互功能设计后台管理功能技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作功能模块分析 用户管理模块 用户注册与登录:支持邮箱/手机号注册,提供密码找回功能…...
一键部署后的第一步:LiuJuan20260223Zimage API调用详解与调试
一键部署后的第一步:LiuJuan20260223Zimage API调用详解与调试 刚在星图GPU平台上一键部署好LiuJuan20260223Zimage镜像,看着运行状态显示“正常”,是不是感觉离用上强大的AI能力只差临门一脚了?别急,这最后一步——学…...
Qwen3-TTS快速部署指南:Web界面操作,无需代码基础
Qwen3-TTS快速部署指南:Web界面操作,无需代码基础 1. 引言:语音合成的零门槛体验 你是否曾经想过为自己的项目添加语音功能,却被复杂的代码和配置吓退?现在,借助Qwen3-TTS-12Hz-1.7B-Base镜像,…...
第二章 从ROM到app_main:深入剖析ESP32 FreeRTOS双核启动的代码级实现
1. ESP32双核启动全景图:从硬件复位到RTOS就绪 第一次拿到ESP32开发板时,你可能和我一样好奇:按下复位键后,这个小小的芯片内部究竟发生了什么?为什么我们的app_main函数能自动运行?今天我们就用"显微…...
