前期准备:
本地Linux版本:CentOS Linux release 7.5.1804 (Core)
Docker版本:Docker version 1.13.1, build dded712/1.13.1
redis版本:Redis server v=3.2.5 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=8a9244bcd1f679f5
本地Linux版本:CentOS Linux release 7.5.1804 (Core)
Docker版本:Docker version 1.13.1, build dded712/1.13.1
redis版本:Redis server v=3.2.5 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=8a9244bcd1f679f5
本地Linux上安装Docker并下载centos7 image
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm -- 安装yum源
yum install docker-io -- 安装docker
docker version -- 查看docker版本
systemctl start docker -- 启动docker服务
docker pull docker.io/centos -- 下载centos7 image
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm -- 安装yum源
yum install docker-io -- 安装docker
docker version -- 查看docker版本
systemctl start docker -- 启动docker服务
docker pull docker.io/centos -- 下载centos7 image
Docker创建两个容器
docker run -d -v `pwd`/redis_m_a/m:/data -p 16379:6379 docker.io/centos /usr/sbin/init
docker run -d -v `pwd`/redis_m_a/a:/data -p 26379:6379 docker.io/centos /usr/sbin/init
分别进入两个容器并安装redis
yum install -y wget gcc make tcl
cd /usr/local/src
wget redis-3.2.5.tar.gz
tar zxvf redis-3.2.5.tar.gz
cd redis-3.2.5
make && make install
核心配置文件参数
a、Master config
vi /etc/redis/redis.conf
1.1、### NETWORK
bind 172.17.0.2 # 容器IP
port 6379
timeout 30 # Client 端空闲断开连接的时间
daemonize yes #默认值是no,把值修改为yes,以后台模式运行
1.2、### GENERAL
logfile /data/redis.log #日志文件的位置
1.3、### SNAPSHOTTING 设置:
dir /data/data #SNAPSHOTTING文件的路径
1.4、### APPEND ONLY MODE 设置
appendonly yes #默认值是No,意思是不使用AOF增量持久化的方式,使用RDB全量持久化的方式。把No值改成Yes,使用AOF增量持久化的方式
appendfsync always
b、###### Slave Config
vi /etc/redis/redis.conf
2.1、### NETWORK
bind 172.17.0.3 # 容器IP
port 6379
timeout 30 # Client 端空闲断开连接的时间
daemonize yes #默认值是no,把值修改为yes,以后台模式运行
2.2、### GENERAL
logfile /data/redis.log #日志文件的位置
2.3、### SNAPSHOTTING 设置:
dir /data/data #SNAPSHOTTING文件的路径
2.4、### REPLICATION 设置:
slaveof 172.17.0.2 6379
slave-serve-stale-data no #如果slave 无法与master 同步,设置成slave不可读,方便监控脚本发现问题。
2.5、### APPEND ONLY MODE 设置:
appendonly yes #默认值是No,意思是不使用AOF增量持久化的方式,使用RDB全量持久化的方式。把No值改成Yes,使用AOF增量持久化的方式
appendfsync always
启动主从redis
主库:
[root@docker program]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2aca3e6124a1 docker.io/redis "/usr/sbin/init" 2 minutes ago Up 2 minutes 0.0.0.0:26379->6379/tcp gifted_ardinghelli
4b16704a146c docker.io/redis "/usr/sbin/init" 2 minutes ago Up 2 minutes 0.0.0.0:16379->6379/tcp angry_northcutt
[root@docker program]# docker exec -it 4b16704a146c bash
[root@4b16704a146c run]# redis-server /etc/redis/redis.conf &
[1] 173
[root@4b16704a146c run]#
[root@4b16704a146c run]# ps -ef | grep redis
root 173 30 0 07:30 ? 00:00:00 redis-server 172.17.0.2:6379
root 178 30 0 07:30 ? 00:00:00 grep --color=auto redis
从库:
[root@docker program]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2aca3e6124a1 docker.io/redis "/usr/sbin/init" 2 minutes ago Up 2 minutes 0.0.0.0:26379->6379/tcp gifted_ardinghelli
4b16704a146c docker.io/redis "/usr/sbin/init" 2 minutes ago Up 2 minutes 0.0.0.0:16379->6379/tcp angry_northcutt
[root@docker program]# docker exec -it 2aca3e6124a1 bash
[root@2aca3e6124a1 run]# redis-server /etc/redis/redis.conf &
[1] 173
[root@2aca3e6124a1 run]#
[root@2aca3e6124a1 run]# ps -ef | grep redis
root 173 30 0 07:30 ? 00:00:00 redis-server 172.17.0.3:6379
root 178 30 0 07:30 ? 00:00:00 grep --color=auto redis
测试演示
[root@4b16704a146c run]# redis-cli -h 172.17.0.2 -p 6379 -a vcredit
172.17.0.2:6379> set foo hello
OK
172.17.0.2:6379>
172.17.0.2:6379> get foo
"hello"
172.17.0.2:6379> quit
[root@4b16704a146c run]# redis-cli -h 172.17.0.3 -p 6379 -a vcredit
172.17.0.3:6379> get foo
"hello"
172.17.0.3:6379> get word
"nihao"
172.17.0.3:6379>
172.17.0.3:6379> quit