docker-compose方式部署高可用多节点keepalived+nginx集群

news/2024/11/29 22:43:06/

1.前言

一次构建,随处运行,这是docker的理念

无论你是Ubuntu,还是centos8,还是麒麟,还是centos6,这些都不重要,重要的是我们需要一个docker的环境。有了docker的运行环境,那么docker的理念就能体现下去

keepalived+nginx高负载均衡集群是常见的组合,是一个标准负载均衡方式。

在docker环境下可以很方便的构建统一镜像,运行服务,实现keepalived多节点的高可用,nginx的负载均衡和反向代理功能。

其中keepalived轮询检查nginx是否存活,动态切换虚拟IP地址

2.构建镜像

2.1.配置nginx下载源

新建nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key

2.2.生成nginx检测脚本

新建check_nginx.sh

#!/bin/bash
A=$(ps -ef  | grep nginx: | grep -v  grep |  wc  -l)
if [ $A -eq 0 ];thennginxecho  "restart nginx, sleep 2 s"sleep  2num=$(ps -ef  | grep  nginx:  |  grep -v grep | wc  -l)if [ $num -eq  0  ];thenps -ef | grep keepalived  |  grep  -v grep  | awk '{print $2}'| xargs kill -9echo  "start nginx failed,kill keepalived"fi
elseecho  "nginx not  dead"
fi

2.3.生成Dockfile文件

新建Dockerfile

适当的优化,RUN命令通过&&合并了,并在最后清除缓存层。

避免build的镜像过大,降低build的效率

FROM centos:7
ENV TZ "Asia/Shanghai"
ADD nginx.repo /etc/yum.repos.d/
ADD check_nginx.sh /etc/keepalived/
RUN chmod +x /etc/keepalived/check_nginx.sh && \yum install -y iproute && \yum install -y net-tools && \yum install -y yum-utils && \yum install -y keepalived && \yum install -y nginx && \yum clean all

2.4.构建命令

docker build -t centos-base:7 .

3.编排说明


http://www.ppmy.cn/news/1051455.html

相关文章

卷积神经网络实现天气图像分类 - P3

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:Pytorch实战 | 第P3周:彩色图片识别:天气识别🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源&#xff…

Excel自动化办公——Openpyxl的基本使用

Excel自动化办公——Openpyxl的基本使用 个人感觉,相比Pandas,openpyxl对Excel的操作更为细致,Pandas则更适用于统计计算; 01 基本环境02 Excel数据读取操作03 案例04 向Excel写入数据05 表数据定向修改06 单元格样式制定07 单元…

VisualStudio创建项目模板教程

简介 Visual Studio 项目模板是预先定义的项目结构和设置,可以帮助开发者快速启动新的项目。项目模板中可以包含预配置的文件、资源、设置和代码结构,这样开发者在创建新的项目时就不必从零开始。 以下是Visual Studio项目模板的一些核心点&#xff1a…

【力扣】746. 使用最小花费爬楼梯 <动态规划>

【力扣】746. 使用最小花费爬楼梯 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶…

ffmpeg简介

1.什么是ffmpeg ffmpeg即使一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口。 ffmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议…

Android 显示、隐藏状态栏和导航栏

控制状态栏显示&#xff0c;Activity的主题中配置全屏属性 <item name"android:windowFullscreen">true</item> 控制状态栏显示&#xff0c;在setContentView之前设置全屏的flag 复制代码 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULL…

mac苹果电脑怎么运行Windows软件?怎么安装Win虚拟机?

近年来&#xff0c;苹果电脑的用户群体不断扩大&#xff0c;许多用户对于苹果电脑是否可以运行Windows软件产生了疑问。苹果电脑和Windows操作系统有着明显的区别&#xff0c;是否能够在苹果电脑上运行Windows软件。下面我们就来看苹果电脑可以运行Windows软件吗&#xff0c;苹…

二级MySQL(四)——数据表的增删改查

首先认识数据类型&#xff1a; VERCHAR&#xff08;n&#xff09;最长长度为n的&#xff0c;可变长度的&#xff0c;字符串类型 CHAR&#xff08;n&#xff09;固定长度的字符串类型 TIME&#xff1a;时间内类型 DTAE&#xff1a;日期类型 INT&#xff1a;普通大小的整数 …