Implementación centinela maestro-esclavo de redis-docker-una sola máquina

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  #挂载配置、日志、数据文件

Insertar descripción de la imagen aquí

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:

  1. Si no hay una imagen creada cuando es nueva, debe compilar -> ejecutar
  2. Si la ejecución falla, puede utilizar registros para consultar los registros.
  3. Si falla, reinicie el contenedor (sin cambiar el archivo acoplable) y luego detenga-》rm->ejecutar
  4. Si el dockerfile se modifica y se inicia, stop->rm->rmi->build->run
  5. 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
  1. 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

Supongo que te gusta

Origin blog.csdn.net/qq_44961149/article/details/121115677
Recomendado
Clasificación