docker安装redis集群_docker eureka集群

docker安装redis集群_docker eureka集群NeoKylin-Server离线部署跨主机redis集群NeoKylin-Server离线部署跨主机redis集群一、说明二、部署过程:1.切换root账号或所有语句加sudo;2.关闭6个节点防火墙(或打开端口);3.6个节点导入rpm包后安装基础环境:4.设置所有节点;5.启动docker并导入images;6.时间同步;7.etcd集群配置;8.部署flannel网络;9.n1-n3部署pxc;10.m1-m3部署Haproxy+Keepalived容器;11.m1-m3宿主机

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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. 基础环境布置

  1. 切换root账号或所有语句加sudo;
  2. 关闭6个节点防火墙(或打开端口);
systemctl stop firewalld
systemctl disable firewalld
  1. 6个节点安装docker、etcd、flannel、ntpdate
    说明:其中etcd只有m1、m2、m3使用
  2. 设置所有节点;

修改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
  1. 时间同步;
    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.net/169450.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker安装rabbitmq镜像

    docker安装rabbitmq镜像1.dockerps查看正在运行的镜像/服务2.在docker容器中安装rabbitmqdockerrun-d–rm–namerabbitmq-p5672:5672-p15672:15672rabbitmq:3-management第1次执行,因为本地没有rabbitmq的镜像,会从仓库下载镜像并安装2.1参数说明rabbitmq:3:表示镜像的名字,其中3表示版本3…

    2022年5月10日
  • Docker常用命令大全「建议收藏」

    Docker常用命令大全「建议收藏」Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化、容器是完全使用沙箱机制,彼此之间没有任何接口。一个完整的Docker有以下几个部分组成:DockerClient客户端Docker守护进程守护进程Docker镜像镜像Docker容器容器下面是Docker的常用命令:Docker常用命令大全容器生命周期管理命令runstart/stop/restart

    2022年9月18日
  • docker 离线安装_docker 离线安装

    docker 离线安装_docker 离线安装docker离线安装方法下载地址:https://download.docker.com/linux/static/stable/x86_64/参考文档:https://docs.docker.com/engine/install/binaries/机房设备无法访问互联网原因,需要进行离线安装K8S生态周报|Docker和containerd全版本漏洞公布,近期在Docker中发现了一个影响所有版本的安全漏洞CVE-2022-24769,该漏洞已经在Docker最新的版本v20

    2022年9月26日
  • docker 修改容器时间_jenkins docker持续集成

    docker 修改容器时间_jenkins docker持续集成前言用docker搭建的Jenkins环境时间显示和我们本地时间相差8个小时,需修改容器内部的系统时间查看时间查看系统时间date-R进入docker容器内部,查看容器时间dockere

    2022年7月31日
  • docker下修改mysql配置文件[通俗易懂]

    docker下修改mysql配置文件[通俗易懂]由于需要修改mysql的sql_mode,在命令行修改每次重启都会失效,因为修改docker下mysql的配置文件。操作系统:centos7docker版本:Dockerversion17.05.0-ce,build89658bemysql版本:5.7.181.拉取镜像dockerpullmysql:5.7.182.列出镜像[root@zk01~]#dockerimages

    2022年5月5日
  • Docker 镜像小结 – 每天5分钟玩转 Docker 容器技术(21)

    Docker 镜像小结 – 每天5分钟玩转 Docker 容器技术(21)

    2022年3月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号