基于docker的 redis集群之主从复制
来源:互联网 发布:小鱼儿域名www9911hk 编辑:程序博客网 时间:2024/04/29 07:43
环境搭建步骤
一 准备
docker环境(centos7 + docker1.12.1)
redis 3.2.4 wget http://download.redis.io/releases/redis-3.2.4.tar.gz
172.17.0.2:6379 主 172.17.0.3:6379 从 172.17.0.4:6379 从
遗留问题:
1 实现主从后,读写分离,客户端连接代码如何写?
2 主从切换后,客户端代码需要调整吗?
二 制作镜像
Dockerfile内容如下:
FROM centos:6.7MAINTAINER loomz loomz@163.comENV REFRESHED_AT 2017-03-08ENV REDIS_HOME /opt/redis/redis_defaultADD redis-3.2.4.tar.gz /opt/redis/RUN ln -s /opt/redis/redis-3.2.4 $REDIS_HOMERUN yum -y install gccWORKDIR $REDIS_HOMERUN make && make installEXPOSE 6379ENTRYPOINT [ "/usr/local/bin/redis-server", "/etc/redis/redis.conf" ]
相关命令: docker命令总结
三 容器启动
三个启动脚本和配置文件内容如下:
主master
start.-6379.sh
#!/bin/bashdocker run -d -p 6379:6379 --restart always -h redis-6379 --name redis-6379 -v /home/loomz/dockerfiles/redis_3.2_cluster/redis_cluster/6379:/etc/redis/:ro redis:v3.2.4
redis.conf
port 6379bind 172.17.0.2daemonize nopidfile /var/run/redis.pidappendonly yes
从slave
start-6380.sh
#!/bin/bashdocker run -d -p 6380:6379 --restart always -h redis-6380 --name redis-6380 -v /home/loomz/dockerfiles/redis_3.2_cluster/redis_cluster/6380:/etc/redis/:ro redis:v3.2.4
redis.conf
port 6379bind 172.17.0.3daemonize nopidfile /var/run/redis.pidappendonly yesslaveof 172.17.0.2 6379
从slave
start-6381.sh
#!/bin/bashdocker run -d -p 6381:6379 --restart always -h redis-6381 --name redis-6381 -v /home/loomz/dockerfiles/redis_3.2_cluster/redis_cluster/6381:/etc/redis/:ro redis:v3.2.4
redis.conf
port 6379bind 172.17.0.4daemonize nopidfile /var/run/redis.pidappendonly yes slaveof 172.17.0.2 6379
通过客户端命令查看节点情况
redis-cli > info replication# Replicationrole:slavemaster_host:172.17.0.4master_port:6379master_link_status:downmaster_last_io_seconds_ago:-1master_sync_in_progress:0slave_repl_offset:1master_link_down_since_seconds:1489327889slave_priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0
以上方式即实现主从,但如果主的挂掉,从数据库升级为主数据需要手工处理,使用命令slaveof no one即可提升为主数据库。
使用哨兵方式:
在任意一个节点使用增加配置文件sentinel.conf,内容如下:
sentinel monitor mymaster_loomz 172.17.0.2 6379 1
参数说明:
mymaster_loomz 主数据库名字,自定义即可
172.17.0.2 主数据库地址
6379 主数据库端口
1 哨兵最低通过票数
启动sentinel进程:
/usr/local/bin/sentinel /etc/redis/sentinel.conf
当然生产环境哨兵也需要做集群,避免单点故障,按照上面的方式启动多个哨兵进程即可,或者每个节点启动一个哨兵进程。注意sentinel.conf最后一个参数“哨兵最低通过票数”设置为哨兵总数的超过半数即可,如N / 2 +1
四 客户端连接代码
public static void main(String[] args) {JedisPoolConfig poolconfig = new JedisPoolConfig();poolconfig.setMaxIdle(30);poolconfig.setMaxTotal(1000);Set<String> sentinels = new HashSet<String>();sentinels.add("172.17.0.1:26379");JedisSentinelPool jedisSentinelPool = new JedisSentinelPool("master_loomz", sentinels, poolconfig, 3000, "redispass");HostAndPort currentHostMaster = jedisSentinelPool.getCurrentHostMaster();System.out.println("currentHostMaster : " + currentHostMaster.getHost() + " port: " + currentHostMaster.getPort());Jedis resource = jedisSentinelPool.getResource();resource.setDataSource(jedisSentinelPool);String value = resource.get("aa");System.out.println(value);resource.close();}
- 基于docker的 redis集群之主从复制
- Redis集群主从复制
- redis集群与主从复制的关系
- Redis的主从复制集群实现
- 实现redis(主从,sentinel,cluster)的主从复制集群
- redis学习之redis的主从复制
- hadoop正式学习之redis---redis的主从复制与Sentinel以及集群搭建
- Docker学习+基于Docker MySQL的主从复制
- redis主从复制+sentinel集群
- Redis主从复制和集群配置系列之二
- Redis主从复制和集群配置系列之三
- Redis主从复制和集群配置系列之四
- Redis主从复制和集群配置系列之五
- redis之主从复制
- Redis 之 主从复制
- redis之主从复制
- redis之主从复制
- Redis之主从复制
- 十进制转为十六进制
- Chrome浏览器显示“Adobe flash player已过期”问题之解决
- http工作原理
- github客户端(Windows)的使用
- CentOS6.5安装与配置Mysql数据库
- 基于docker的 redis集群之主从复制
- 如何成为数据挖掘工程师
- Java重排序和happens-before原则
- MultiByteToWideChar和WideCharToMultiByte用法详解
- 数据压缩原理与应用 彩色空间转换 实验报告
- osx下常用工具
- Android开发时,那些相见恨晚的工具或网站!感觉很好,后续自己也会补充点
- 洛谷1546 Agri-Net 最小生成树
- Git——Day1(基本概念)