同福

Rancher v2.5.9使用Dockerfile部署Redis服务的方法【20220715】

介绍

介绍

今天福哥要带着大家学习Rancher部署Redis服务,这个我们还是使用redis:6.0-buster这个镜像作为Redis服务的基础镜像。

rancher替代的是docker-compose,所以无论是rancher还是docker-compose,它们所使用的镜像还是需要自己来维护的。

福哥前面有教给大家使用Dockerfile创建自己的Redis镜像的方法,这里就不再重述了,我们直接在rancher里面使用这个自建的redis6.0这个镜像来搭建redis服务。

镜像

目录

镜像目录结构。

home/topic/2022/0719/11/88589e5bd2614ee6c01fe52b56362f5d.png

Dockerfile

这个福哥写的Dockerfile,大家可以拿去使用。

FROM registry.tongfu.net:5000/redis:6.0-buster

MAINTAINER Andy Bogate
MAINTAINER tongfu@tongfu.net
MAINTAINER http://docker.tongfu.net
MAINTAINER 2021/6/20
MAINTAINER v1.0.0

EXPOSE 6379

# timezone
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone

# data
RUN mkdir -p /usr/local/etc/redis \
&& mkdir -p /var/lib/redis \
&& mkdir -p /var/log/redis
COPY redis.conf /usr/local/etc/redis/redis.conf

# command
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]

redis.conf

福哥将原始的redis.conf复制出来进行了一些调整,大家可以根据自己的情况配置。

bind 0.0.0.0

protected-mode yes

port 6379

tcp-backlog 511

timeout 0

tcp-keepalive 300

daemonize no

supervised no

pidfile /tongfu.net/env/redis-4.0.10/data/redis.pid

loglevel notice

logfile /var/log/redis/redis.log

databases 16

always-show-logo yes

save 900 1
save 300 10
save 60 10000

stop-writes-on-bgsave-error yes

rdbcompression yes

rdbchecksum yes

dbfilename dump.rdb

dir /var/lib/redis/

slave-serve-stale-data yes

slave-read-only yes

repl-diskless-sync no

repl-diskless-sync-delay 5

repl-disable-tcp-nodelay no

slave-priority 100

requirepass tongfu.net

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no

appendonly no

appendfilename "appendonly.aof"

appendfsync everysec

no-appendfsync-on-rewrite no

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated yes

aof-use-rdb-preamble no

lua-time-limit 5000

slowlog-log-slower-than 10000

slowlog-max-len 128

latency-monitor-threshold 0

notify-keyspace-events ""

hash-max-ziplist-entries 512
hash-max-ziplist-value 64

list-max-ziplist-size -2

list-compress-depth 0

set-max-intset-entries 512

zset-max-ziplist-entries 128
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000

activerehashing yes

client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10

aof-rewrite-incremental-fsync yes

部署

名称

名称可以随便起,建议使用英文。

home/topic/2021/1006/22/a4a6934150d72c50fe6d5d4b58cbf79f.png

工作负载类型

类型很多,以后福哥会专门讲解这个,今天安装的是redis数据库,所以选择有状态应用。

home/topic/2021/1006/22/de4544c4f6edd646f1d092e778572049.png

Docker镜像

这里使用的是以前将Dockerfile的时候创建的redis6.0镜像。

home/topic/2022/0715/19/230247db592e0682f6c9a470dda46485.png

命名空间

福哥添加了一个redis的命名空间。

home/topic/2022/0715/19/75ca66de79eb3cf564c8b69c9cf4617f.png

主机调度

选择服务部署在那台主机上面,可以手动选择,也可以自动分配。

home/topic/2021/1006/23/da659da3590cbb10480659ef53fed02d.png

健康检查

这个就是health_check了,图形化设置真爽~~

home/topic/2021/1006/22/014d0628d1c5418c42dbf11486fc6cfb.png

数据卷

福哥给redis服务设置了data和logs两个目录,都是映射到了主机目录上面。

创建目录

首先需要在服务器上建立这两个目录,然后设置所有者和分组。

因为redis6.0的镜像的redis用户和redis组的ID都是999,所以这里授权999.999即可。

mkdir -p /data/docker.data/redis/data/
chown 999.999 /data/docker.data/redis/data/
mkdir -p /data/docker.logs/redis/logs/
chown 999.999 /data/docker.logs/redis/logs/

data

添加data目录的映射,将/data/docker.data/redis/data/映射到/var/lib/redis/上面。

home/topic/2021/1006/22/01627cd2a14cd4d2d83b41740065531b.png

logs

添加logs目录的映射,将/data/docker.logs/redis/logs/映射到/var/log/redis/上面。

home/topic/2021/1006/22/33c3c0ae372d5a91a7a805f65ab1e593.png

入口命令

因为福哥要使用自定义的配置文件,按照官方的说法需要通过CMD来启动实例。

redis-server /usr/local/etc/redis/redis.conf

home/topic/2021/1006/23/c3b80c6f02d8e101ac5cd2f31c78ee30.png

安全/主机设置

cpu和内存

福哥配置文件设置的redis内存是256M,这里给容器内存上限加了128M。而CPU福哥分配了1/5个内核,足够用了。

home/topic/2022/0715/19/8c6f6b8022f79fe7eb0166f05b1336ec.png

查看

列表

完成部署后可以在服务列表里面看到redis服务已经起来了。

home/topic/2022/0715/19/86f68d945bbb91251d6a798c51394c60.png

管理

命令行

进入命令行模式,可以看的redis工作正常。

home/topic/2021/1006/23/6cbab237e7005e984694b563e9bddda8.png

总结

今天福哥带着大家使用我们前面学习的Dockerfile创建的自定义redis镜像redis6.0在rancher上面部署了redis服务,可以看到这种图形化的管理方式真的是很省心,很简单的。