===============================================

2018/11/5_第1次修改                       ccb_warlock

===============================================

 由于希望引入docker的健康检查,即对不健康容器的策略(如果容器进入 unhealthy 状态,它会停止容器并且重新启动一个新容器来取代它),故根据官方给出的脚本进行修改后构建出带健康检查的redis镜像。
 

这里简单提下为什么要花力气去构建带健康检查的镜像:docker的容器有2个自我检查的机制,一个是进程的检查,就是服务的进程运行是否正常;另一层就是业务的检查,就是在进程运行的情况下,业务是否正常提供服务。

以redis举例,正常情况配置正确,资源给够的情况,redis进程可以正常运行,但是由于连接redis的程序连接过多(达到了redis的连接数上线,一般单redis是1W不到点,redis服务就开始拒绝新的连接)。像这种情况进程的检查是捕获不到异常的,那就得配合健康检查增加一个维度判断redis是否正常。


 一、准备工作

redis官方版本:4.0.11(虽然现在刚出了5.X,但是新东西很多都还未知,故保守在生产环境还是设计使用4.X)

示例redis的密码为:123456

存放密码的环境变量:redisPWD


 二、构建带有健康检查的新镜像

 2.1  创建构建目录
mkdir -p /opt/build/redis

# 进入目录

cd /opt/build/redis

 2.2 编辑healthcheck脚本

vi healthcheck

# 将下面的内容添加到healthcheck文件内,wq保存。

#!/bin/bash
set -eo pipefail
host="$(hostname -i || echo '127.0.0.1')"
if ping="$(redis-cli -h "$host" ping)" && [ "$ping" = 'PONG' ]; then
exit 0
elif ping="$(redis-cli -h "$host" -a "$redisPWD" ping)" && [ "$ping" = 'PONG' ]; then
exit 0
fi
exit 1
 2.3 编辑dockerfile文件
vi dockerfile

# (基于redis镜像)将下面的内容添加到dockerfile文件内,wq保存。

# basic image
FROM redis:4.0.11 COPY healthcheck /usr/local/bin/ RUN chmod +x /usr/local/bin/healthcheck HEALTHCHECK --interval=10s --timeout=10s --retries=6 CMD ["healthcheck"]
 2.4 构建镜像
docker build --rm -t redis:4.0.11-chk .
由于dockerfile构建时已经增加了健康检查的命令,故即使部署容器时没有配置健康检查也会根据初始规则自动进行健康检查。
 

至此,带有健康检查的redis镜像(redis:4.0.11-chk)构建完成。


 三、 启动redis

由于我习惯使用swarm、docker compose部署,下面就是使用了健康检查后的compose该怎么写。

version: '3.6'
services: redis:
image: redis:4.0.11-chk
environment:
- TZ=Asia/Shanghai
- redisPWD=123456
volumes:
# 配置文件
- /usr/docker-vol/redis/conf/redis.conf:/etc/redis.conf
# 持久化
- /usr/docker-vol/redis/data:/data
command:
redis-server /etc/redis.conf
deploy:
replicas: 1
restart_policy:
condition: any
resources:
limits:
cpus: "0.3"
memory: 256M
update_config:
parallelism: 1
delay: 5s
monitor: 5s
max_failure_ratio: 0.1
order: start-first
ports:
- 6379:6379
networks:
- my-net networks:
my-net:
external: true

docker 构建带健康检查的redis镜像的更多相关文章

  1. ASP.NET CORE在docker中的健康检查(healthcheck)

    在使用docker-compose的过程中,很多程序都提供了健康检查(healthcheck)的方法,通过健康检查,应用程序能够在确保其依赖的程序都已经启动的前提下启动,减少各种错误的发生,同时,合理 ...

  2. Docker构建nginx的nginx-rtmp-module视频服务器镜像

    文章地址:https://www.cnblogs.com/linyilong3/p/5862595.html GitHub nginx-rtmp-module 及配置 Dockerfile构建配置: ...

  3. Java应用在docker环境配置容器健康检查

    在<极速体验docker容器健康>一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看. 实战环境信息 操作系统:macO ...

  4. Docker学习6:使用docker构建Jekyll服务和java服务

    写在前面 ## 文章Dockerfile中涉及apt-get 等操作需更换镜像 在Dockerfile中添加下列 Dockerfile源码,见下面作者githubhttps://github.com/ ...

  5. nginx的健康检查功能将挂掉的Tomcat舍弃

    1.Ngninx自带健康检查功能,能将挂掉的服务器舍弃,不在访问路径里 2.Nginx还有URL重写功能,能将接收到的请求,进行改写,再将新的URL分发到后端服务器上

  6. ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇

    背景 笔者所在的公司正在进行微服务改造,这其中服务治理组件是必不可少的组件之一,在一番讨论之后,最终决定放弃 Zookeeper 而采用 Consul 作为服务治理框架基础组件.主要原因是 Consu ...

  7. docker:打包node+npm+pm2运行环境镜像

    最近公司有一个外包项目需要在不能连外网的情况下部署node项目到甲方公司内部.直接使用node官网的安装包可以获得node运行环境,但像pm2这种工具要离线装就会比较费劲,所以最终选择了使用docke ...

  8. 使用Docker构建PHP7.4 + Swoole + Redis镜像

    使用Docker构建PHP7.4 + Swoole + Redis镜像 Docker是一个用于开发,交付和运行应用程序的开放平台.开发者可以利用Docker来快速交付,测试和部署代码,从而大大减少编写 ...

  9. 使用Docker构建redis集群--最靠谱的版本

    1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...

随机推荐

  1. [转帖] Kubernetes如何使用ReplicationController、Replica Set、Deployment管理Pod ----文章很好 但是还没具体操作实践 也还没记住.

    Kubernetes如何使用ReplicationController.Replica Set.Deployment管理Pod https://blog.csdn.net/yjk13703623757 ...

  2. vue 请求后台数据2(copy)

    https://blog.csdn.net/vergilgeekopen/article/details/68954940 需要引用vue-resource 安装请参考https://github.c ...

  3. spring 默认情况下事务是惟一的 同一个方法里面第一个sql开启后 在执行完 将事务传递给下一个sql

    spring 默认情况下事务是惟一的 同一个方法里面第一个sql开启后 在执行完 将事务传递给下一个sql

  4. 安装selenium和chromedriver

    网上找的算法,在运行爬虫代码时,需要Selenium+Phantomjs实现,我改成了用Selenium+Chrome:针对指定网址,自动打开浏览器,输入关键词搜索,并保存搜索的内容. 1. 安装se ...

  5. Centos中安装和配置vsftp简明教程

    一.vsftp安装篇 # 安装vsftpd yum -y install vsftpd # 启动 service vsftpd start # 开启启动 chkconfig vsftpd on 二.v ...

  6. 骑士 HYSBZ - 1040(基环树+树形dp)

    Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中 ...

  7. Optimal Milking POJ - 2112 (多重最优匹配+最小费用最大流+最大值最小化 + Floyd)

      Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 19347   Accepted: 690 ...

  8. 洛谷 P2047 [NOI2007]社交网络 解题报告

    P2047 [NOI2007]社交网络 题目描述 在社交网络(\(social\) \(network\))的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有\ ...

  9. 关于程序设计中INF和MOD值的设定

    在取模操作中,我们常把MOD设置为1000000007 模一个大数和模一个质数可以减少冲突 而1e9+7又有一个很好的特点,就是相加不会爆int,相乘不会爆long long 在设置无穷大值时中我们常 ...

  10. 解题:BZOJ 3622 已经没有什么好害怕的了·

    题面 用来学习二项式反演的题目 大于等于/小于等于 反演出 恰好等于 设前者为f(n),后者为g(n),则有$f(n)=\sum\limits_{i=0}^nC_n^ig(n)<->g(n ...