Implementación centinela maestro-esclavo de redis-docker-una sola máquina
1. redis independiente
Ajustar los parámetros del sistema
sudo vi /etc/rc.local
加入
echo never > /sys/kernel/mm/transparent_hugepage/enabled
sudo vi /etc/sysctl.conf
加入
vm.overcommit_memory = 1
Cree carpetas relacionadas con Redis en el directorio de usuarios
mkdir -p /home/jun/docker/redis
cd /home/jun/docker/redis
创建三个目录
mkdir shell #构建、启动、停止等脚本
mkdir dockerfile #dockerfile目录
mkdir volumes #挂载配置、日志、数据文件
preparar el archivo acoplable
cd dockerfile
vim Dockerfile
Contenido del archivo Docker
FROM centos:7.7.1908
# 创建者
MAINTAINER hbj
run yum install -y wget install make gcc libgcc gcc-c++ glibc-devel make && mkdir -p /docker/redis/{install,conf,data,log} && cd /docker/redis/install && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" && tar xvzf redis.tar.gz && cd redis-5.0.3 && make && make install PREFIX=/docker/redis && rm -rf /docker/redis/install/*.gz
USER hd
EXPOSE 6379
CMD ["/docker/redis/bin/redis-server","/docker/redis/conf/6379.conf"]
Construir imagen a través de dockerfile
cd /home/hd/docker/redis/dockerfile
vim Dockerfile
Contenido del archivo Docker
FROM centos:7.7.1908
# 创建者
MAINTAINER hbj
run yum install -y wget install make gcc libgcc gcc-c++ glibc-devel make && mkdir -p /docker/redis/{install,conf,data,log} && cd /docker/redis/install && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" && tar xvzf redis.tar.gz && cd redis-5.0.3 && make && make install PREFIX=/docker/redis && useradd hd && chown -R hd:hd /docker/redis && rm -rf /docker/redis/install/*.gz
USER hd
EXPOSE 6379
CMD ["/docker/redis/bin/redis-server","/docker/redis/conf/6379.conf"]
Construir imagen a través de dockerfile
Crear un archivo de script de shell
script de compilación: crea una imagen acoplable
vi construir
#!/bin/bash
DOCKER_PATH=$PWD/../
sudo docker build -f $DOCKER_PATH/dockerfile/Dockerfile -t redis:v1 $DOCKER_PATH/dockerfile/
ejecutar guión
vi run: compila e inicia el contenedor acoplable
#!/bin/sh
DOCKER_PATH=$PWD/../
port=6379
version=v1
imageName=redis
sudo docker run -d -p ${port}:6379 --name redis -v /etc/localtime:/etc/localtime -v $DOCKER_PATH/volumes/conf:/docker/redis/conf -v $DOCKER_PATH/volumes/data:/docker/redis/data -v $DOCKER_PATH/volumes/log:/docker/redis/log --restart=unless-stopped ${imageName}:${version} /docker/redis/bin/redis-server /docker/redis/conf/${port}.conf
guión ejecutivo
vi exec: ingrese el contenedor acoplable que se inició exitosamente
#!/bin/sh
sudo docker exec -it redis /bin/bash
secuencia de comandos de registros
vi logs: registro del contenedor Docker Cuando falla el inicio del contenedor, puede ejecutar el registro de consultas
#!/bin/bash
sudo docker logs redis
Reanudar
reinicio de vi: reinicio del contenedor acoplable
#!/bin/sh
sudo docker restart redis
habitación
vi rm: eliminar contenedor acoplable
#!/bin/sh
sudo docker rm redis
rmi
vi rmi: elimina la imagen de la ventana acoplable y debe ejecutarse solo cuando se modifica el archivo dockerfile.
#!/bin/sh
sudo docker rmi redis:v1
comenzar
inicio vi: inicia el contenedor acoplable
#!/bin/sh
sudo docker start redis
detener
parada vi: detener el contenedor acoplable
#!/bin/sh
sudo docker stop redis
La secuencia de ejecución del script de Docker es la siguiente:
- Si no hay una imagen creada cuando es nueva, debe compilar -> ejecutar
- Si la ejecución falla, puede utilizar registros para consultar los registros.
- Si falla, reinicie el contenedor (sin cambiar el archivo acoplable) y luego detenga-》rm->ejecutar
- Si el dockerfile se modifica y se inicia, stop->rm->rmi->build->run
- Si simplemente reinicia sin modificar el archivo, reinicie o detenga-》iniciar
3.4 archivo de configuración de redis
logfile /docker/redis/log/6379.log
dir /docker/redis/data/
# requirepass 123456
daemonize no
#bind 127.0.0.1
Coloque el archivo de configuración en volumes/conf/6379.conf en el mismo directorio que el directorio de montaje del script de ejecución.
Iniciar y ver
Primero ejecute ./build -> ejecutar
Ver el estado del contenedor acoplable
sudo docker ps -a
Ver registro
./logs
或者
sudo docker logs redis
Configuración de permisos:
文件权限
chown -R hd:hd /home/hd/docker-files/redis
可执行文件
chmod +x /home/hd/docker-files/redis/shell/*
2. modo maestro-esclavo de redis
i.安装主从节点redis服务
分别安装和配置主节点redis服务和从节点redis服务,方法参见单机模式的安装和配置
1、从节点的redis服务需要安装在6380端口,安装redis在不同端口 (如果在不同的服务器,大可不必)
2、主从节点必须设置访问密码 ,不要设置也可以。。。但基本都会设置
requirepass 123456
-
Ajustar la configuración de Redis del nodo esclavo
Abra el archivo de configuración 6379.conf
sudo vi /home/hd/redis/volumes/conf/6379.conf
Encuentra la siguiente línea
# replicaof <masterip> <masterport>
Modificar a (donde 127.0.0.1 y 6379 deben configurarse en la IP y el puerto real del nodo maestro de Redis de acuerdo con la situación real; aquí están los puertos local y predeterminado)
replicaof 127.0.0.1 6379
El nodo maestro y el nodo esclavo tienen contraseñas de acceso establecidas y los nodos esclavos deben configurarse de la siguiente manera respectivamente.
Encuentra la siguiente línea
# masterauth <master-password>
Modifíquelo a (se supone que 123456 es la contraseña de acceso y debe modificarse de acuerdo con la situación real)
masterauth 123456
Reinicie el servicio redis del nodo maestro-esclavo
verificar
进入master数据库,写入一个数据,再进入一个slave数据库,立即便可访问刚才写入master数据库的数据。如下所示
主:redis-cli
> auth 123456
> set site blog.jboost
> get site
> info replication
从:redis-cli
>auth 123456
> get site
Configuración de cinco redis centinela
Otros son los mismos que redis, puede consultar la implementación independiente de Redis.
Solo el puerto del script y el archivo de configuración son diferentes, pero la compilación del script es la misma porque la imagen es la misma, pero el contenedor es diferente.
Los números de puerto son 26379 26380 26381
vi run cambia el número de puerto y el método de inicio del nombre de la ventana acoplable
#!/bin/sh
DOCKER_PATH=$PWD/../
port=26379
version=v1
imageName=redis
sudo docker run -d -p ${port}:26379 --name redis-sentine-1 -v /etc/localtime:/etc/localtime -v $DOCKER_PATH/volumes/conf:/docker/redis/conf -v $DOCKER_PATH/volumes/data:/docker/redis/data -v $DOCKER_PATH/volumes/log:/docker/redis/log --restart=unless-stopped ${imageName}:${version} /docker/redis/bin/redis-server /docker/redis/conf/${port}.conf --sentinel
ejecutivo
vi ejecutivo
#!/bin/sh
sudo docker exec -it redis-sentine-1 /bin/bash
secuencia de comandos de registros
ventana vi
#!/bin/bash
sudo docker logs redis-sentine-1
Reanudar
reiniciamos
#!/bin/sh
sudo docker restart redis-sentine-1
habitación
vi rm
#!/bin/sh
sudo docker rm redis-sentine-1
rmi
Lo lamento
#!/bin/sh
sudo docker rmi redis:v1
comenzar
empezamos
#!/bin/sh
sudo docker start redis-sentine-1
detener
nosotros paramos
#!/bin/sh
sudo docker stop redis-sentine-1
Archivo de configuración centinela
Modifique el monitor centinela a (127.0.0.1 y 6379 deben configurarse en la IP y el puerto real del nodo maestro de Redis de acuerdo con la situación real, aquí están la máquina local y el puerto predeterminado) sin contraseña
1. Punto clave: si el centinela quiere cambiar, la configuración maestro-esclavo necesita configurar una contraseña, no solo la máquina esclava. 2. Punto
clave: habrá un problema en la implementación de Docker. Problema de comunicación del centinela, debe configure Sentinel Announce-IP 192.212.8.117 Esta es la dirección de comunicación; de lo contrario, el valor predeterminado es la tarjeta de red interna de la ventana acoplable.
sentinel announce-ip 10.212.8.117
port 26381
daemonize no
pidfile /var/run/redis-sentinel.pid
logfile /docker/redis/log/sentinel.log
dir /docker/redis/data/
sentinel monitor appmaster 192.212.8.114 6379 2
sentinel down-after-milliseconds appmaster 10000
sentinel failover-timeout appmaster 180000
sentinel parallel-syncs appmaster 1
sentinel auth-pass appmaster 123456
bind 0.0.0.0
Controlar
Ejecute el script ejecutivo en la carpeta Shell para ingresar al contenedor
./exec
cd docker/redis/bin
./redis-cli -p 26379
127.0.0.1:26379> info
127.0.0.1:26379>sentinel master appmaster
127.0.0.1:26379>sentinel slaves appmaster