因为有了docker,当个人开发者在需要用到Redis或者MySQL等服务时,不需要按照以往的方式在服务器上一步步安装这些软件了,而且那种安装过程中或许还会出现一些莫名的错误。使用docker,极大的简化了安装过程,本文简单介绍一下如何使用Docker安装Redis集群和MySQL。
一.安装Redis主从集群
下载redis.conf文件
1 | mkdir -p /opt/redis-cluster/data |
编辑master的配置文件
将下载好的redis.conf
复制为redis-master.conf
,修改redis-master.conf
文件中的如下配置:1
2
3
4# bind 127.0.0.1 # 注释当前行,表示任意ip可通过redis-cli连接,而并非只有本机可以连接
dir /data #持久化数据目录
appendonly yes #开启aof
requirepass 123456 # 设定密码为123456
运行master
1 | docker run -d -p 6380:6379 --name redis-master -v /opt/redis-cluster/data:/data -v /opt/redis-cluster/conf/redis-master.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf |
查看master的内网地址
1 | docker inspect redis-master |
可以看到master的地址是172.17.0.2
。
编辑slave的配置文件
将redis.conf
复制为redis-slave.conf
,修改redis-slave.conf
文件中的如下配置:1
2
3
4
5# bind 127.0.0.1 # 注释当前行,表示任意ip可通过redis-cli连接,而并非只有本机可以连接
dir /data #持久化数据目录
appendonly yes #开启aof,当然也可以不开
replicaof 172.17.0.2 6379 #表示master所在的ip和端口
masterauth 123456 #设置master的密码
运行两台slave
1 | docker run -d -p 6381:6379 --name redis-slave01 -v /opt/redis-cluster/data:/data -v /opt/redis-cluster/conf/redis-slave.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf |
可以看到启动了三个容器
查看并验证redis的主从配置
先通过master容器里的客户端连接到redis服务端,再通过info replication
查看主从配置。1
docker exec -it redis-master redis-cli -a 123456
可以看到master容器中redis的role=master,有两个slave。
使用set命令往redis中存入数据:
再查看slave01容器里的redis:1
docker exec -it redis-slave01 redis-cli
上图中也可以看到redis-slave01容器中的redis是slave,并且上一步在redis中存的数据也可以获取到。但由于是slave角色,所以是无法写入数据的。
redis客户端访问
在本地windows系统,使用redis desktop manager软件访问redis正常。
其它说明
replicaof
因为salve这个词的词义,在较新版本的redis中“master-slave”架构的描述改为“master-replica”,之前配置中的slaveof也改为了replicaof,但如果仍写成slaveof还是能够生效的。
是否要守护进程
这里是经过多次测试,发现:容器重启,redis也会正常启动。配置文件中的 daemonize no
注意保持是 no,否则执行了ocker run -d -p 6380:6379 --name redis-master -v /opt/redis-cluster/data:/data -v /opt/redis-cluster/conf/redis-master.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf
这个命令后,redis-master容器并不能保持在后台运行。
哨兵模式
高可用的redis集群需要用到哨兵模式,本文暂先不作论述。
安装MySQL
下载镜像
此处下载的是MySQL5.7版本。1
docker pull mysql:5.7
创建映射目录
因为数据想要持久化到本地,所以创建数据容器卷。1
mkdir -p /opt/mysql_5.7/data /opt/mysql_5.7/logs /opt/mysql_5.7/conf
启动mysql容器
1 | docker run -p 3306:3306 --name docker_mysql -v /opt/mysql_5.7/conf:/etc/mysql/conf.d -v /opt/mysql_5.7/logs:/logs -v /opt/mysql_5.7/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123123 -d mysql:5.7 |
启动完成后,可在容器中登录MySQL。
本地windows连接启动后的mysql
在windows本地机器上也可以链接上MySQL容器。