docker安装redis集群(单机)
程序员文章站
2022-05-20 19:40:14
...
创建文件以及文件夹
创建文件夹
mkdir 文件夹名称
创建文件
touch 文件名称
- pwd 当前目录地址
- ll 获取当前文件夹下的文件详情(需要创建四个文件)
创建redis-cluster.tmpl 这是个redis配置文件(注释要单独一行,不然会报“FATAL CONFIG FILE ERROR :Bad directive or wrong number of arguments”错误)
protected-mode no
##设置外部网络连接redis服务,默认是yes,即开启。开启protected-mode保护模式,需配置bind ip或者设置访问密码,关闭protected-mode模式,此时外部网络可以直接访问
port ${PORT}
##节点端口
daemonize no
##指定redis是否要用守护线程的方式启动,默认no
appendonly yes
##持久化模式
cluster-enabled yes
##cluster集群模式
cluster-config-file nodes.conf
##集群配置名
cluster-node-timeout 15000
##超时时间
cluster-announce-ip 172.19.0.${TEMP}
##实际为各节点网卡分配ip
cluster-announce-port ${PORT}
##节点映射端口
cluster-announce-bus-port 1${PORT}
##节点总线端
创建creatRedisCluster.sh 这是个shell脚本,循环六次,在当前路径下创建文件夹以及创建六个节点的配置文件。‘’
服务配置文件
for port in `seq 7001 7006`; do \
base=6999 \
&& ip=$[port-base] \
&& mkdir -p ${port}/conf \
&& PORT=${port} TEMP=${ip} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf \
&& mkdir -p ${port}/data;\
done
创建start.sh 这是个启动脚本,这里运行了六个节点,并做了端口映射以及容器卷的映射,注意修改容器卷的位置。这里也指定了redis的版本是5.0的版本,可以修改自己所需版本。
for port in `seq 7001 7006`; do
docker run -p ${port}:${port} -p 1${port}:1${port} --name redis-${port} \
-v /home/docker/redis/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/docker/redis/redis-cluster/${port}/data:/data --name redis-${port} --net redis-net -d redis:5.0 redis-server /usr/local/etc/redis/redis.conf;
done
创建stop.sh 这是个停止脚本。关闭并删除六个redis容器,也删除通一级下的六个文件夹
docker stop redis-7001 redis-7002 redis-7003 redis-7004 redis-7005 redis-7006
docker rm redis-7001 redis-7002 redis-7003 redis-7004 redis-7005 redis-7006
rm -rf 7001 7002 7003 7004 7005 7006
现在开始执行命令
1、创建自定义网卡redis-net
docker network create redis-net
2、查看网卡是否创建
docker network ls
3、查看虚拟网卡redis-net网关ip。我这ip是172.19.0.1 有些是172.18.0.1 所以如果有区别需要在配置文件redis-cluster.tmpl上修改网卡分配ip
docker network inspect redis-net | grep "Gateway" | grep --color=auto -P '(\d{1,3}.){3}\d{1,3}' -o
4、运行creatRedisCluster.sh 下面是运行后的效果
sh creatRedisCluster.sh
5、运行start.sh 因为我没有下载redis:5.0的镜像,所以直接运行之后会去从仓库先下载镜像再运行。
6、进入其中一个节点容器
docker exec -it redis-7001 bash
7、执行集群命令(在容器里面执行)
/usr/local/bin/redis-cli --cluster create 172.19.0.2:7001 172.19.0.3:7002 172.19.0.4:7003 172.19.0.5:7004 172.19.0.6:7005 172.19.0.7:7006 --cluster-replicas 1
这就集群成功了!!!!
顺便说下,亲测,阿里云新增安全组开放端口不需要重启实例,直接加上就可以访问。