docker部署redis集群

docker部署redis集群

1.0 安装环境

1.1 安装Centos7

  • Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。
  • 如果docker安装在centos上面建议用Centos7版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。

1.2 安装Docker

更新原有安装包
yum -y update
安装依赖
 sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安装docker
sudo yum install docker-ce

1.21 docker常用命令

  • linux 的 service 和 systemctl 命令大致区别
  • 启用可以用service docker start也可以用systemctl start docker其他重启停止也可以用systemctl
  • CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 daemon,原来管理系统启动和管理系统服务的相关命令全部由 systemctl命 令来代替。
  • service命令是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
  • service启动缺点
  • 一是启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
  • 二是启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长
  • systemctl 优缺点
  • Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反 “keep simple, keep stupid” 的Unix 哲学。
查看docker版本
docker -v
启动
service docker start
停止
service dockerstop
重启
service docker restart
开机启动
systemctl enable docker
重启docker
systemctl restart  docker

1.21 在线安装docker镜像

搜索java镜像
docker search java
#拉取java镜像
docker pull java
  • docker仓库是部署在国外服务器上面的,所以如果在国内拉取镜像那将是一个非常漫长的过程,因此我们可以用一些国内的镜像仓库,比如阿里云的又或者加速器DaoCloud

1.22 配置Docker加速器

  1. 配置阿里云镜像加速器
  2. 配置阿里云镜像加速器需要注册账号
  3. https://cr.console.aliyun.com/#/imageList)
  4. 注册之后点击左下方镜像加速器会生成一个专属加速网址
  5. 将生成的专属网址,加入/etc/docker/daemon.json即可
修改docker配置文件
vi /etc/docker/daemon.json
  1. 配置Daocloud加速器
  2. 官网:https://www.daocloud.io/mirror
#配置加速器命令(复制粘贴执行即可)Ps:此命令仅克用于Linux操作系统
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
  • 注意:在设置完成后,可能有一个坑存在的,执行命令设置后,它会在docker配置文件中添加一个地址,但是地址后面是多了一个,号的,需要手动删除

docker部署redis集群
  • 删除配置文件中多余的,号
修改docker配置文件
 vi /etc/docker/daemon.json

1.23 导出和导出镜像

导出镜像
docker save 镜像名>导出路径
docker sava tomcat > /home/tomcat.tar.gz
导入镜像
docker load

1.24 容器相关命令

创建并且启动一个容器
-it表示启动容器后开启一个交互的界面 --name 给容器起一个名字不取就没有可通过id辨别 bash代表启动程序后运行什么样的成员bash=bash命令行
docker run -it --name myTomcat tomcat bash

开启容器并且映射端口 -p 8088:8080代表将容器8080端口映射到宿主机8088上面 可以映射多个端口
docker run -it --name myTomcat  -p 8088:8080 -p 8089:3306 tomcat bash

 开启容器并且映射目录或者文件
-v宿主机目录映射到容器中/home/data:/mysqlData冒号之前是宿主机的目录集将目录/home/data映射到/mysqlData
--privileged这个是代表容器操作映射目录使用的是最高权限,即可读可写可执行
docker run -it --name myTomcat -v /home/data:/mysqlData --privileged tomcat  bash

三条命令合一
docker run -it -p 8088:8080 -p 8089:3306  -v /home/data:/mysqlData --privileged --name myTomcat tomcat bash

停止容器 myTomcat是容器名字没有可以通过容器id识别
docker pause myTomcat
恢复容器
docker unpauser myTomcat
彻底停止容器
docker stop myTomcat
重新启动容器
docker start -i myTomcat
退出交互页面开启容器-it执行的(同时会彻底关闭容器)
exit
删除容器
docker rm myTomcat
进入容器
docker exec -it 容器名 bash
重命名容器名
docker rename 原容器名称 新容器名称

PS:

以上仅仅是Docker基础命令

Docker后面还有

容器数据卷

DockerFile(制作镜像使用)

Docker Compose (多容器管理)

Docker Swarm (docker集群)

2.0基于docker部署RedisCluster集群

2.01 RedisCluster集群介绍

  • 常见Redis集群方案
  • RedisCluster Reids官方产品 没有中心节点,数据分片储存
  • Codis 豌豆荚团队开发 有中心节点,豌豆荚 因为Codis是一个无状态的,所以可以增加多个Codis来提升QPS,同时也可以起着容灾的作用。
  • Twemproxy是Twitter团队的开源的 有中心节点
  • Redis主从同步
  • RedisCluster 切片存储(每个节点储存数据不同)
  • 引入冗余节点,把主节点数据分发非从从节点当住节点挂掉后吧数据复制到从节点继续使用
  • Redis高可用
  • 集群中住节点应采用奇数节点至少3个因为RedisCluster拥有选举机制
  • 每个主节点都应该有对应的从节点,将主节点数据复制到从节点

2.02 部署Redis集群

  • 安装Redis
#拉去redis镜像
docker pull redis
创建network2网段
docker network create --subnet=172.20.0.0/24 network2
创建6节点redis容器
docker run -it -d --name redis1 -p 6001:6379 --net=network2 --ip 172.20.0.2 redis bash
docker run -it -d --name redis2 -p 6002:6379 --net=network2 --ip 172.20.0.3 redis bash
docker run -it -d --name redis3 -p 6003:6379 --net=network2 --ip 172.20.0.4 redis bash
docker run -it -d --name redis4 -p 6004:6379 --net=network2 --ip 172.20.0.5 redis bash
docker run -it -d --name redis5 -p 6005:6379 --net=network2 --ip 172.20.0.6 redis bash
docker run -it -d --name redis6 -p 6007:6379 --net=network2 --ip 172.20.0.7 redis bash
进入redis容器
docker exec -it redis1 bash
  • 修改redis配置文件
编辑配置文件
vi /usr/redis/redis.conf
#找到一下参数并做修改
daemonize yes #以后台进程运行
cluster-enabled yes #开启集群
cluster-config-file nodes.conf #集群配置文件
cluster-node-timeout  15000 #超时时间
append only yes #开启AOF(日志)模式
  • 启动redis
#进入redis
cd /usr/redis/src
#启动
./redis-server ../redis.conf
#依次进入23456redis节点修改配置文件并启动redis

  • 安装redis-trib.rb
  • redis-trib.rb这个是redis自带的通过redis-trib.rb创建RedisCluster集群
  • redis-trib是ruby写的首先安装ruby
复制redis-trib.rb 到一个空目录
cp /usr/redis/src/redis-trib.rb /usr/redis/cptrib需要拷贝目录
进入刚刚拷贝目录
cd /usr/redis/cluster
安装ruby
apt-get install ruby
apt-get install rubygems
#安装执行脚本
gem install redis

  1. 创建redis集群
#进入redis容器1
docker exec -it redis1 bash
进入redis目录
cd /usr/redis/src
#创建cluster目录
mkdir -p ../cluster
#复制redis-trib.rb
cp redis-trib.rb ../cluster/
#进入cluster在此目录创建redis集群
cd ../cluster
--replicas 1一个主节点给一个从节点 后面是redisip+端口
./redis-trib.rb create --replicas 1  172.20.0.2:6379 172.20.0.3:6379 172.20.0.4:6379  172.20.0.5:6379  172.20.0.6:6379  172.20.0.7:6379

docker部署redis集群

错误汇总

  • WARNING: IPv4 forwarding is disabled. Networking will not work.

docker部署redis集群
解决命令
echo "net.ipv4.ip_forward=1" >>/usr/lib/sysctl.d/00-system.conf
重启network 和docker
 systemctl restart network && systemctl restart docker

作者:泪梦红尘
文章出处:https://www.lmhc.blog/

Original: https://www.cnblogs.com/lmhcblog/p/15082968.html
Author: 泪梦红尘blog
Title: docker部署redis集群

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590661/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • python爬取博客圆首页文章链接+标题

    新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了。 使用python 爬取博客园首页文章链接和标题。 首先当然是环境了,爬虫在window10…

    数据库 2023年6月11日
    089
  • mysql事务、触发器、存储过程

    一、mysql事务 数据库中的事务是指对数据库执行一批操作,在同一个事务当中,这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。MySQL 事务主要用于处理操作量…

    数据库 2023年5月24日
    068
  • 一、SQL高级语句

    摘抄别的博主的博客主要总去CSDN看不太方便自己整理一下加深记忆! 导入文件至数据库 #将脚本导入 source 加文件路径 mysql> source /backup/te…

    数据库 2023年5月24日
    097
  • JavaWeb 05_JDBC入门及连接MySQL

    一、概念 *概念: Java DataBase Connectivity Java数据库连接, Java语言操作数据库* JDBC本质:其实是官方(sun公司)定义的一套操作所有关…

    数据库 2023年5月24日
    094
  • 通过NTFS日志分析文件的时间属性是否被篡改

    前期准备 NTFS日志记录了什么东西? NTFS日志会记录NTFS文件系统中文件的创建、修改、增加数据、删除等操作执行的时间,虽说这个日志也可以被第三方程序修改,但仍然可以作为一个…

    数据库 2023年6月11日
    087
  • SpringBoot 整合 MongoDB 实战解说

    在前面的文章中,我们详细的介绍了 MongoDB 的配置和使用,如果你对 MongoDB 还不是很了解,也没关系,在 MongoDB 中有三个比较重要的名词: 数据库、集合、文档!…

    数据库 2023年6月14日
    081
  • Java 线程常用操作

    继Java线程生命周期继续学习Java线程其他常用操作 线程的常用操作 设置线程名字:setName() 获取线程名称:getName() 线程唯一Id:getId() // 自定…

    数据库 2023年6月6日
    076
  • Shell文件属性的判断与比较

    Shell支持对文件属性的判断,常用的文件属性操作符很多,如下表所示。更多文件属性操作符可以参考命令帮助手册man test [root@centos7~]#…

    数据库 2023年6月14日
    080
  • 工作中常用Less知识点实践总结

    工作中常用Less知识点实践总结,帮助你更好的使用Less 我所理解的Less的一些好处 函数式编程css 自定义变量用于整体主题调整 嵌套语法简化开发复杂度 mixin的写法 ….

    数据库 2023年6月11日
    075
  • 慢SQL,压垮团队的最后一根稻草!

    一、什么是慢 SQL 什么是慢SQL? 顾名思义,运行时间较长的 SQL 语句即为慢 SQL! 那问题来了,多久才算慢呢? 这个慢其实是一个相对值,不同的业务场景下,标准要求是不一…

    数据库 2023年6月14日
    092
  • Goroutines (一)

    Goroutines CSP communicating sequential processes Go 语言中,每一个并发执行单元叫做一个goroutine,语法上仅需要在一个普…

    数据库 2023年6月16日
    077
  • 一次较波折的MySQL调优

    春节假期的一天,阳光明媚,春暖花开,恰逢冬奥会开幕,想着这天一定是生肖吉日,就能顺风顺水了。没想到,我遇到了一位客户,有点波折。 [En] Spring Festival holi…

    数据库 2023年5月24日
    064
  • Linux 下统计文件夹下文件的数量

    1、查看当前目录下的文件数量(不包含子目录中的文件) 2、查看当前目录下的文件数量(包含子目录中的文件) 3、 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如…

    数据库 2023年6月14日
    064
  • Consul 入门-初识

    背景 现状:单体架构逐渐被微服务架构所替代,原本两个功能模被拆分成了两个服务。原本两个模块块间的通信只需要 函数调…

    数据库 2023年6月6日
    083
  • 社招两年半10个公司28轮面试面经(含字节、拼多多、美团、滴滴……)

    个人情况 学历:二本 工作年限:2 年半 面试结果:拿到了字节、拼多多、美团、滴滴、欧科云链….等公司的offer 面试准备 复习 你信我,真学习还得看书,看书能让你的…

    数据库 2023年6月16日
    087
  • MySQL 中如何定位 DDL 被阻塞的问题

    经常碰到开发、测试童鞋会问,线下开发、测试环境,执行了一个DDL,发现很久都没有执行完,是不是被阻塞了?要怎么解决? 包括在群里,也经常会碰到类似问题:DDL 被阻塞了,如何找到阻…

    数据库 2023年5月24日
    052
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球