Docker 部署 Redis 集群 VS 正常部署 Redis 集群_docker

程序员的成长之路

互联网/程序员/技术/资料共享 

关注

阅读本文大概需要 4 分钟。

前言

之前在服务器上部署过Redis集群,最近用Docker部署了一遍,发现有了Docker简便很多,mark这篇文章记录下。

准备:vm虚拟机、CentOS 7

正常部署Redis集群

1、下载 Redis 安装包

Redis安装包采取的是在线wget下载,若wget命令不存在,执行​​yum -y install wget​​安装。

执行命令:

​wget http://download.redis.io/releases/redis-6.0.7.tar.gz​

2、安装环境

Redis是C语言开发的,安装前是需要先进行编译,编译依赖于gcc环境,这里需要安装gcc。

执行命令:

​yum -y install gcc-c++​

3、编译安装 Redis

解压:

​tar xzf redis-6.0.7.tar.gz​

编译:

​cd redis-6.0.7​

​make

如果报错了,可能是gcc版本问题,解决措施如下:

# 1、安装gcc全家桶
yum install cpp
yum install binutils
yum install glibc
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make


# 2、升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash


# 3、设置永久生效
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

安装:

​make install​

测试:

​redis-server redis.conf​

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_docker_02

4、创建Redis集群

通过脚本创建6个redis配置:

# 通过脚本创建6个redis配置
for port in $(seq 1 6); \
do \
mkdir -p /root/redis/node-${port}/conf
touch /root/redis/node-${port}/conf/redis.conf
cat << EOF >/root/redis/node-${port}/conf/redis.conf
port 637${port}
bind 0.0.0.0
cluster-enabled yes
cluster-config-file /root/redis/node-${port}/conf/nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
EOF
done

启动六个服务:

for port in $(seq 1 6); \
do \
redis-server /root/redis/node-${port}/conf/redis.conf
done

查看下:

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_docker_03

5、创建集群

redis-cli --cluster create 127.0.0.1:6371 127.0.0.1:6372 127.0.0.1:6373 127.0.0.1:6374 127.0.0.1:6375 127.0.0.1:6376 --cluster-replicas 1

中途输入一次yes:

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_zookeeper_04

6、测试

测试下咱们的集群:

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_centos_05

我们kill掉 127.0.0.1:6371 再来看一下:

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_docker_06

到这里,我们的Redis集群就部署成功了!!

Docker部署Redis集群

Docker安装步骤:

#1、卸载旧的版本


sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

#2、需要的安装包
sudo yum install -y yum-utils


#3、安装镜像仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #

sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 使


# 配置下加速
# >移动到下述目录:
cd /etc/docker
# >找到daemon.json文件,如果没有就新建一个,填入如下信息:
{"registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"]}  
# >重启下docker
service docker restart


# 更新yum软件包索引
yum makecache fast


#4、安装docker相关的依赖 docker-ce 社区版 ee 企业版
sudo yum install docker-ce docker-ce-cli containerd.io


#5、启动Docker
sudo systemctl start docker


#6、检测是否安装成功
docker version


#7、测试hello-world
docker run hello-world


#8、查看一下下载的这个 hello-world 镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 7 months ago 13.3kB

安装完成,测试下:

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_docker_07

成功!

1、创建网卡

​docker network create redis --subnet 172.38.0.0/16​

2、通过脚本创建6个配置

# 通过脚本创建6个redis配置
for port in $(seq 1 6); \
do \
mkdir -p /root/redis/node-${port}/conf
touch /root/redis/node-${port}/conf/redis.conf
cat << EOF >/root/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

3、通过脚本运行6个容器

for port in $(seq 1 6); \
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /root/redis/node-${port}/data:/data \
-v /root/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \
done

Docker ps 查看下:

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_ext_08

4、创建集群

# 进入一个容器中
[root@localhost ~]# docker exec -it redis-1 /bin/sh


# 执行创建集群命令
/data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_linux_09

5、测试

查看下Redis集群节点信息:

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_ext_10

进入redis-1容器,测试写入和读取:

redis-cli -h 127.0.0.1 -c -p 3679

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_centos_11

然后停止掉这个容器:

[root@localhost ~]# docker stop redis-1

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_docker_12

这里显示fail了。

进入 redis-2 容器中的redis:

[root@localhost ~]# docker exec -it redis-2 /bin/sh
/data #
/data # redis-cli -h 127.0.0.1 -c -p 3679

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_docker_13

搞定,收工!!


咱们​下篇见​!

每天进步一点点

慢一点才能更快

<END>

5T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,单片机,树莓派,等等。在公众号回复「2048」,即可免费获取!!

Docker 部署 Redis 集群 VS 正常部署 Redis 集群_ext_14

微信扫描二维码,关注我的公众号

朕已阅 Docker 部署 Redis 集群 VS 正常部署 Redis 集群_centos_15