声明
以下内容百分之90搬运自掘金---Docker Redis 5.0 集群(cluster)搭建
之所以写这篇文章,是因为我自己想要搭建外网的服务,属于该文的一个补充。
1. 安装所需的软件包
终端输入以下命令并回车:
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
2. 设置稳定的存储裤
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
3. 安装docker ce
sudo yum install docker-ce
4. 启动docker
sudo systemctl start docker
5. 在docker库获取redis镜像(截至2019-11-26,最新版为5.0.7)
docker pull redis
6. 创建redis配置文件(redis-cluster.tmpl)
我选择的路径是: /home/tester/redis-cluster
执行命令:
cd /home/tester/redis-cluster
sudo vim redis-cluster.tmpl
在文本编辑页面输入以下文本:
port ${PORT} ##节点端口
protected-mode no ##开启集群模式
cluster-enabled yes ##cluster集群模式
cluster-config-file nodes.conf ##集群配置名
cluster-node-timeout 5000 ##超时时间
cluster-announce-ip 106.13.173.1 ##机器外网ip 我的ip为106.13.173.1(化名, 此处以你们机器外网ip为准)
cluster-announce-port ${PORT} ##节点映射端口
cluster-announce-bus-port 1${PORT} ##节点总线端口
appendonly yes ##持久化模式
保存后可cat一下:
cat /home/tester/redis-cluster/redis-cluster.tmpl
可以看到结果:
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 106.13.173.1
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
7. 在/home/tester/redis-cluster下生成conf和data目标,并生成配置信息
for port in `seq 7000 7005`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
8. 创建6个redis容器
for port in `seq 7000 7005`; do \
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
-v /home/tester/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/tester/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
9. 启动集群
- 进入一个节点
docker exec -it redis-7000 bash
- 使用redis 5创建集群
redis-cli --cluster create 106.13.173.1:7000 106.13.173.1:7001 106.13.173.1:7002 106.13.173.14:7003 106.13.173.1:7004 106.13.173.1:7005 --cluster-replicas 1
在弹出的窗口输入yes即可
网友评论