Replicación maestro-esclavo
-
Instalar wegt
yum -y install wget
-
Descargar el archivo de configuración de redis
wget http://download.redis.io/redis-stable/redis.conf
-
Y haga tres copias, dos de las cuales están subordinadas y una es principalmente
[root@localhost conf]# ls redis.conf redis-master.conf redis-slave1.conf redis-slave2.conf
-
Modificar archivo de configuración
-
Archivo de configuración del host
# 允许所有IP访问Redis bind 0.0.0.0
-
Dos archivos de configuración esclavos
# 允许所有IP访问Redis bind 0.0.0.0 # 设置主机的地址:IP 端口。接下去通过--lin进行地址解析,docker自动将master解析为地址 replicaof master 6379
Consejo: La segunda configuración tampoco se puede especificar en el archivo de configuración
slaveof master 6379
, pero ingrese el comando en redis0-cli , pero cada vez que el esclavo se reinicie, debe volver a ingresar el comando para especificar el host
-
-
Comience el contenedor
-
Anfitrión
docker run --name redis-master \ -v /mydata/redis-test/conf/redis-master.conf:/usr/local/etc/redis/redis.conf \ -d redis redis-server /usr/local/etc/redis/redis.conf
-
Esclavo 1
docker run --name redis-slave1 \ -v /mydata/redis-test/conf/redis-slave1.conf:/usr/local/etc/redis/redis.conf \ --link redis-master:master \ -d redis redis-server /usr/local/etc/redis/redis.conf
-
Esclavo 2
docker run --name redis-slave2 \ -v /mydata/redis-test/conf/redis-slave2.conf:/usr/local/etc/redis/redis.conf \ --link redis-master:master \ -d redis redis-server /usr/local/etc/redis/redis.conf
-
-
Ver el estado maestro-esclavo de Redis
进入哨兵容器 docker exec -it 容器名/容器ID redis-cli 查看主从状态 info replication
--link
: --link 关联容器名/关联容器ID:alias
. Entre ellos, alias es el alias del contenedor fuente debajo del enlace.
De esta manera, el contenedor puede comunicarse a través del alias o el nombre del contenedor asociado (ID del contenedor asociado), porque Docker realizará automáticamente la resolución DNS
Modo centinela
Centinela individual
-
Descargar el archivo de configuración centinela
wget http://download.redis.io/redis-stable/sentinel.conf
-
Modificar archivo de configuración
sentinel.conf
# 参数说明:mymaster:哨兵名称;master 6379:被监控主机IP和端口;1:执行故障恢复操作前至少需要几个哨兵节点同意 # 因为当前只配了一个哨兵,所以设为1,一般以一主二仆要配置三个哨兵,那么最后一个值就配为2 sentinel monitor mymaster master 6379 1 # 配置日志文件,默认会在容器/data下,如果不需要可以不管 logfile "sentinel.log"
-
Ejecutando centinela
docker run --name redis-sentinel \ -v /mydata/redis-test/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
El método anterior es para una situación en la que solo hay un centinela. En este momento, el centinela también puede estar caído, lo que resulta en una falla en la recuperación
Multi-centinela
La siguiente demostración configura tres centinelas
-
Descargar el archivo de configuración centinela
wget http://download.redis.io/redis-stable/sentinel.conf
-
Modificar archivo de configuración
# 关闭安全模式 protected-mode no # 最后一个值修改为2,即需要两个哨兵节点投票同意才能故障恢复 sentinel monitor mymaster master 6379 2
-
Haz tres copias
[root@localhost conf]# ls sentinel1.conf sentinel2.conf sentinel3.conf
-
Comience tres contenedores centinela
docker run --name redis-sentinel1 \ -v /mydata/redis-test/conf/sentinel1.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
docker run --name redis-sentinel2 \ -v /mydata/redis-test/conf/sentinel2.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ --link redis-sentinel1:sentinel \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
docker run --name redis-sentinel3 \ -v /mydata/redis-test/conf/sentinel3.conf:/usr/local/etc/redis/sentinel.conf \ --link redis-master:master \ --link redis-sentinel2:sentinel \ -d redis redis-sentinel /usr/local/etc/redis/sentinel.conf
Tenga en cuenta que los dos últimos contenedores necesitan más configuración y el antiguo centinela
--link
, de lo contrario los centinelas no pueden comunicarse -
Verificar el funcionamiento del centinela
# 进入哨兵容器 docker exec -it 哨兵容器名/哨兵容器ID bash # 进入哨兵 redis-cli -p 26379 # 查看哨兵运行情况 info sentinel