docker安装redis集群_docker eureka集群
NeoKylin-Server离线部署跨主机redis集群
NeoKylin-Server使用docker部署跨主机redis集群
一、说明
背景:NeoKylin使用使用flannel+etcd可达成docker容器跨主机通信,再通过redis-cluster建立集群数据库。 系统:Neokylin-Server-5.0_U4-x86_64-Release-B14-20190320。 环境:
虚拟机(节点)名称 | ip | 部署 |
---|---|---|
m1 | 192.168.136.21 | etcd、redis |
m2 | 192.168.136.22 | etcd、redis |
m3 | 192.168.136.23 | etcd、redis |
n1 | 192.168.136.26 | redis |
n2 | 192.168.136.27 | redis |
n3 | 192.168.136.28 | redis |
二、部署过程:
1. 基础环境布置
- 切换root账号或所有语句加sudo;
- 关闭6个节点防火墙(或打开端口);
systemctl stop firewalld
systemctl disable firewalld
- 6个节点安装docker、etcd、flannel、ntpdate 说明:其中etcd只有m1、m2、m3使用
- 设置所有节点;
修改6个节点名称为m1、m2、m3、n1、n2、n3
hostnamectl set-hostname <newhostname>
修改6个节点hosts文件
vim /etc/hosts
结尾追加
192.168.136.21 m1
192.168.136.22 m2
192.168.136.23 m3
192.168.136.26 n1
192.168.136.27 n2
192.168.136.28 n3
- 时间同步; 6个节点通过ntpdate时间同步
ntpdate cn.pool.ntp.org
3. 部署etcd+flannel组网
详细见: NeoKylin-Server-5.0 离线部署 etcd+flannel 集群,实现 docker 容器跨主机网络通信.
4. 启动docker并导入images;
设置6个节点自启动docker
systemctl start docker
systemctl enable docker
docker安装redis或导入镜像redis tar文件,这里使用6.0.8版本
docker load < redis.tar
导入tar文件需将导入的images重命名,先通过docker images获取导入的镜像名称前四位XXXX,再通过下语句重命名:
docker tag XXXX redis
5. 创建目录、编辑文件;
第一台服务器 m1 中执行创建存储目录命令:
mkdir -p /var/lib/redis/7000
第二台服务器 m2 中执行创建存储目录命令:
mkdir -p /var/lib/redis/7001
第三台服务器 m3 中执行创建存储目录命令:
mkdir -p /var/lib/redis/7002
第四台服务器n1中执行创建存储目录命令:
mkdir -p /var/lib/redis/7003
第五台服务器n2 中执行创建存储目录命令:
mkdir -p /var/lib/redis/7004
第六台服务器 n3中执行创建存储目录命令:
mkdir -p /var/lib/redis/7005
第一台服务器 m1
cat > /var/lib/redis/7000/redis.conf << EOF port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes daemonize no protected-mode no pidfile /data/redis.pid EOF
第二台服务器 m2
cat > /var/lib/redis/7001/redis.conf << EOF port 7001 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes daemonize no protected-mode no pidfile /data/redis.pid EOF
第三台服务器 m3
cat > /var/lib/redis/7002/redis.conf << EOF port 7002 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes daemonize no protected-mode no pidfile /data/redis.pid EOF
第四台服务器n1
cat > /var/lib/redis/7003/redis.conf << EOF port 7003 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes daemonize no protected-mode no pidfile /data/redis.pid EOF
第五台服务器n2
cat > /var/lib/redis/7004/redis.conf << EOF port 7004 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes daemonize no protected-mode no pidfile /data/redis.pid EOF
第六台服务器 n3
cat > /var/lib/redis/7005/redis.conf << EOF port 7005 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes daemonize no protected-mode no pidfile /data/redis.pid EOF
6. 运行启动 Redis 镜像;
六台服务器分别执行 Docker 运行命令来启动 Redis 镜像。这里需要注意的是,不同服务器间的 Docker 是不能相互通信的,但这里我们采用了flannel组网,docker容器不指定网络时,会默认docker0网络,flannel已将docker0覆盖,所以不用创建网络。 说明: -d:设置容器后台运行; -v:指定挂载的宿主机存储目录; –name:指定运行后的容器名称; –cpus:指定容器使用 CPU 数量; –memory:限制容器使用内存数量; –memory-swap:指定交换内存大小,这里设置为 0,即不用交换内存; –net:指定 Docker 使用的网络模式; –restart:指定 Docker 重启时容器的重启策略; –privileged:设置容器拥有特权,能够获取宿主机 Root 权限;
第一台服务器m1 执行如下命令
docker run -d -p 7000:7000 -p 17000:17000 -v /var/lib/redis/7000:/data \
--cpus=1 --memory=2GB --memory-swap=0 \
--privileged=true \
--restart=always \
--name redis-7000 \
redis redis-server /data/redis.conf
第二台服务器 m2执行如下命令
docker run -d -p 7001:7001 -p 17001:17001 -v /var/lib/redis/7001:/data \
--cpus=1 --memory=2GB --memory-swap=0 \
--privileged=true \
--restart=always \
--name redis-7001 \
redis redis-server /data/redis.conf
第三台服务器 m3执行如下命令
docker run -d -p 7002:7002 -p 17002:17002 -v /var/lib/redis/7002:/data \
--cpus=1 --memory=2GB --memory-swap=0 \
--privileged=true \
--restart=always \
--name redis-7002 \
redis redis-server /data/redis.conf
第四台服务器n1 执行如下命令
docker run -d -p 7003:7003 -p 17003:17003 -v /var/lib/redis/7003:/data \
--cpus=1 --memory=2GB --memory-swap=0 \
--privileged=true \
--restart=always \
--name redis-7003 \
redis redis-server /data/redis.conf
第五台服务器 n2执行如下命令
docker run -d -p 7004:7004 -p 17004:17004 -v /var/lib/redis/7004:/data \
--cpus=1 --memory=2GB --memory-swap=0 \
--privileged=true \
--restart=always \
--name redis-7004 \
redis redis-server /data/redis.conf
第六台服务器 n3执行如下命令
docker run -d -p 7005:7005 -p 17005:17005 -v /var/lib/redis/7005:/data \
--cpus=1 --memory=2GB --memory-swap=0 \
--privileged=true \
--restart=always \
--name redis-7005 \
redis redis-server /data/redis.conf
7. 创建 Redis 集群;
随意进入一台服务器,使用 Redis 镜像的 redis-cli 工具执行创建集群命令使各个 Redis 组成集群,这里本人进入第一台服务器 m1 中,使用端口为 7000 的 Redis 端镜像,可以执行下面命令: -p:指定连接 Redis 的端口; create:创建 Redis 集群; –cluster:使用 Redis 集群模式命令; –cluster-replicas:指定副本数(slave 数量);
docker exec -it redis-7000 \
redis-cli -p 7000 --cluster create \
192.168.136.21:7000 192.168.136.22:7001 192.168.136.23:7002 \
192.168.136.26:7003 192.168.136.27:7004 192.168.136.28:7005 \
--cluster-replicas 1
看到
Can I set the above configuration? (type 'yes' to accept):
输入yes
等待执行结束后,redis集群搭建完毕
8. 测试;
查看集群信息 进入 Redis 镜像内部并折佣 redis-cli 命令: -p:指定连接 Redis 的端点; -c:使用集群模式;
m1执行
docker exec -it redis-7000 redis-cli -p 7000 -c
查看集群信息,在容器中输入
> cluster info
查看集群节点信息,在容器中输入
> cluster nodes
在m1执行
docker exec -it redis-7000 redis-cli -p 7000 -c
set aaa 111
然后在m2执行
docker exec -it redis-7001 redis-cli -p 7001 –c
get aaa
如果弹出“111”,则说明redis集群正确
最后容器可添加以下语句保证电脑重启后容器自启动
docker container update --restart=always 容器名字
参考文档: 通过Docker部署Redis 6.x 集群. NeoKylin-Server-5.0 离线部署 etcd+flannel 集群,实现 docker 容器跨主机网络通信.
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169450.html原文链接:https://javaforall.cn
相关文章
- Redis概述及linux安装redis的详细教程
- 安装Linux上的Redis服务器(linux安装redis)
- 深入浅出:本地安装Redis服务快速指南(本地安装redis服务)
- Linux系统下PHP安装Redis扩展的步骤(php安装redis)
- 探究Redis性能瓶颈的原因(redis的性能瓶颈)
- 深入浅出Yii2使用Redis(yii2使用redis)
- 提升 Redis 写入性能的方法(redis写入性能)
- 简单明了,Redis安装教程,快速掌握!(redis如何安装)
- 用Redis提升电商商品筛选体验(电商商品筛选 redis)
- 让普通用户也可轻松安装Redis(普通用户安装redis)
- CentOS中的应用使用yum安装的Redis在CentOS中的应用(yum安装的redis在)
- Xampp下安装Redis的操作指南(xampp安装redis)
- Win7系统快速简便安装Redis(win7 redis下载)
- 如何在内网上快速安装Redis(内网怎么安装redis)
- 使用Redis优化流水号生成方式(使用redis生成流水号)
- 在线快速安装Redis,让缓存更快更准(在线安装redis)
- 如何快速连接安装好的Redis(安装好redis怎么连接)
- Redis面试题简化你的备考路(redis面试题压缩列表)
- 使用Redis集群开启模糊搜索超越无线可能(redis集群模糊匹配)
- 节点Redis集群安装3个节点实现高可用(redis集群安装3个)
- 分析Redis集群与哨兵的异同(redis集群与哨兵区别)
- Redis安装后快速上手(redis解压后运行)
- 用Redis进行远程批量删除的简单方法(redis远程批量删除)