目录
1.服务器列表
2.安装docker
3.docker内网IP地址配置
4.docker安装redis集群
1.选择合适数据位置
2.循环生成redis配置目录
3.打开宿主机防火墙端口
4.循环生成redis容器
5.创建集群命令
6.命令行集群验证
1.服务器列表
name | ip | 远程端口 | 用户名/密码 |
centos_4g_04 | 192.168.1.11 | 22 |
2.安装docker
docker01-lunix安装docker_unix 安装docker_别浪呀的博客-CSDN博客
3.docker内网IP地址配置
为了给Docker中的容器分配固定的Docker内网IP地址,而且还跟其他现存的Docker容器IP不冲突,所以我们新创建一个Docker内网的网段。网络名字叫做mynet,网段是172.18.0.X,以后我们创建的容器都分配这个网段的IP。需要注意,172.18.0.1是网关的IP,我们不能用。
#添加自定义网络
docker network create --subnet=172.18.0.0/18 mynet
# 删除一个网络 Docker 预定义的网络不能被删除比如 bridge 网络。如果你想删除自定义的 Docker 网络,可以使用以下命令:docker network rm <network-name>
#删除自定义网络
docker network rm mynet
#添加redis网络
docker network create --subnet=172.19.0.0/18 redis-net
# 查看网络列表
docker network ls
# 扩展用于测试阶段,容器没有达到预期
# docker 停止所有容器
docker stop `docker ps -a -q`
docker ps -a -q 意思是列出所有容器(包括未运行的),只显示容器编号,其中
-a : 显示所有的容器,包括未运行的。
-q : 静默模式,只显示容器编号。
# 删除所有容器,将上面命令中的 stop 改为 rm 即可:
docker rm `docker ps -a -q`
# 删除所有镜像
docker rmi `docker ps -a -q`
4.docker安装redis集群
1.选择合适数据位置
#根据机器资源分配情况,选择合适位置
rm -rf /data/docker/redis/
mkdir -p /data/docker/redis/
vi /data/docker/redis/redis-cluster.tmpl
# 容器内启动端口 12400-12405
port 1${PORT}
# 服务器ip
# bind 192.168.1.11
# 集群端口
cluster-announce-port 1${PORT}
# 集群总线端口,用于集群之间进行通信
cluster-announce-bus-port 2${PORT}
#Redis支持集群
cluster-enabled yes
#每一个集群节点都有一个配置文件,这个文件是不能手动编辑的。确保每一个集群节点的配置文件不通
cluster-config-file nodes.conf
#集群节点的超时时间,单位:ms,超时后集群会认为该节点失败
cluster-node-timeout 5000
#开启aof模式持久化策略
appendonly yes
#淘汰策略
maxmemory-policy volatile-lru
#redis密码,可以根据实际需要调整,但整个集群各节点密码请保持统一
requirepass admin@1196869282
2.循环生成redis配置目录
for port in $(seq 2400 2405); \
do \
mkdir -p /data/docker/redis/1${port}/conf \
&& PORT=${port} envsubst < /data/docker/redis/redis-cluster.tmpl > /data/docker/redis/1${port}/conf/redis.conf \
&& mkdir -p /data/docker/redis/1${port}/{data,logs}; \
done
# 查看某一个生成的配置文件
cat /data/docker/redis/12400/conf/redis.conf
3.打开宿主机防火墙端口
# 12400-12405
firewall-cmd --zone=public --add-port=12400/tcp --permanent
firewall-cmd --zone=public --add-port=12401/tcp --permanent
firewall-cmd --zone=public --add-port=12402/tcp --permanent
firewall-cmd --zone=public --add-port=12402/tcp --permanent
firewall-cmd --zone=public --add-port=12403/tcp --permanent
firewall-cmd --zone=public --add-port=12404/tcp --permanent
firewall-cmd --zone=public --add-port=12405/tcp --permanent
firewall-cmd --zone=public --add-port=22400/tcp --permanent
firewall-cmd --zone=public --add-port=22401/tcp --permanent
firewall-cmd --zone=public --add-port=22402/tcp --permanent
firewall-cmd --zone=public --add-port=22403/tcp --permanent
firewall-cmd --zone=public --add-port=22404/tcp --permanent
firewall-cmd --zone=public --add-port=22405/tcp --permanent
firewall-cmd --reload
4.循环生成redis容器
第一次需要拉去镜像会慢一些
for port in $(seq 2400 2405); \
do \
docker run -it -d --name redis-1${port} \
-p 1${port}:1${port} -p 2${port}:2${port} \
--net redis-net \
-m 400m \
-e TZ=Asia/Shanghai --privileged=true \
-v /data/docker/redis/1${port}/conf/redis.conf:/etc/redis/redis.conf \
-v /data/docker/redis/1${port}/data:/data \
redis:6.2.6 redis-server /etc/redis/redis.conf; \
done
# 查看运行的redis
docker ps
5.创建集群命令
# 进入一个容器内部
docker exec -it redis-12400 /bin/bash
#-a之后为redis密码,ip\端口、密码请根据实际情况修改
# 12400-12405
redis-cli --cluster create --cluster-replicas 1 -a admin@1196869282 \
192.168.1.11:12400 192.168.1.11:12401 192.168.1.11:12402 \
192.168.1.11:12403 192.168.1.11:12404 192.168.1.11:12405
# 输入yes等待即可
6.命令行集群验证
# 在容器内登录某一个redis
redis-cli -h 172.19.0.2 -p 12400 -a admin@1196869282
# 查看集群节点信息
cluster nodes
# 查看集群信息
cluster info
cluster_state 集群状态是 ok ,如果为 fail 则表示集群状态异常。
cluster_size 集群 Master 数量
cluster_know_nodes 集群 节点 数量