Резюме/Чжу Цзицянь
В повседневной разработке или программировании часто используются кластеры Redis. Если следовать традиционному методу сборки одной машины одну за другой, это неизбежно будет слишком громоздким. Поэтому ее можно быстро собрать с помощью оркестровки docker-compose. В процессе строительства я записывал операции, чтобы, когда мне в будущем понадобится построить три главных и три подчиненных узла, я мог быстро построить их на основе предыдущего успешного опыта.
Подготовьте три машины. На каждой машине запланируйте установку главного узла Redis и подчиненного узла Redis.
машина | Узел Redis | Порт узла |
---|---|---|
192.168.31.130 | redis-master/redis-slave | 6379/6380 |
192.168.31.131 | redis-master/redis-slave | 6379/6380 |
192.168.31.132 | redis-master/redis-slave | 6379/6380 |
2.1. Создайте каталог Узел Redis.
Соответственно на 192.168.31.130, 192.168.31.131, 192.168.31.132машина,Выполните следующую команду,Создайте каталог файлов главного-подчиненного узла Redis ——
for dir in redis-master/data redis-slave/data; do mkdir -p "/opt/docker/redis-cluster/$dir";done
2.2. Создайте файл конфигурации узла redis.conf.
Соответственно на 192.168.31.130, 192.168.31.131, 192.168.31.132машинаиз/opt/docker/redis-cluster/redis-master/и/opt/docker/redis-cluster/redis-slave/в каталоге,Создайте файл redis.conf.,Содержимое файла включает в себя следующие атрибуты:
port 6379 #обозначение Redis Номер порта, который прослушивает сервер. Это номер порта, с которым взаимодействует клиент. Redis Порт, через который общается сервер.
save 900 1#Когда в заданном интервале времени выполняется много операций записи, Redis Будет выполнен автоматический снимок (создание RDB документ).
save 300 10
save 60 10000
dbfilename dump.rdb#обозначениегенерироватьиз RDB Имя файла.
dir /data #обозначениефайл персистентностиизкаталог хранения。
appendonly yes #давать возможность AOF(Append-Only Файл) режим сохранения.
appendfilename "appendonly.aof" #обозначение AOF Имя файла.
appendfsync everysec #контроль AOF Когда содержимое буфера синхронизируется с жестким диском. варианты здесь everysec Показывает синхронизацию каждую секунду
cluster-enabled yes #давать возможность Redis Функционал кластера.
cluster-config-file nodes.conf #обозначение Сохранение информации о топологии кластераиз Имя файла конфигурации。
cluster-node-timeout 5000 #Установите таймаут для связи между узлами в миллисекундах.
Ярлык команды, запускаемый непосредственно в Linux——
for dir in redis-master redis-slave; do
if [ "$dir" == "redis-master" ]; then
port=6379
elif [ "$dir" == "redis-slave" ]; then
port=6380
fi
echo "port $port
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000" > /opt/docker/redis-cluster/$dir/redis.conf;done
После завершения операции каталог данных и файл redis.conf создаются в /opt/docker/redis-cluster/redis-master/ и /opt/docker/redis-cluster/redis-slave/——
Содержимое файла redis.conf соответствует тому, что было установлено ранее.
В каталоге /opt/docker/redis-cluster/ трёх машин соответственно,Создайте файл docker-compose.yml.,Содержание следующее:
version: '3.1'
services:
redis-master:
image: redis:5.0.8
container_name: redis-master
restart: always
network_mode: "host"
volumes:
- /opt/docker/redis-cluster/redis-master/data:/data
- /opt/docker/redis-cluster/redis-master/redis.conf:/usr/local/etc/redis/redis.conf
command: ["redis-server","/usr/local/etc/redis/redis.conf"]
redis-slave:
image: redis:5.0.8
container_name: redis-slave
restart: always
network_mode: "host"
volumes:
- /opt/docker/redis-cluster/redis-slave/data:/data
- /opt/docker/redis-cluster/redis-slave/redis.conf:/usr/local/etc/redis/redis.conf
command: [ "redis-server","/usr/local/etc/redis/redis.conf" ]
После завершения выполните команду docker-compose up -d——
Выполните команду docker ps -a, чтобы проверить, нормально ли работает контейнер. Следующий факт доказывает, что проблем нет:
4.1. На любой машине.,Выполните следующие инструкции,Войдите в докер-контейнер ——
docker exec -it redis-master bash #redis-master соответствует докеру ps Имя контейнера, просматриваемое параметром -a, — redis-master.
4.2. Создайте кластер.
redis-cli --cluster create 192.168.31.130:6379 192.168.31.130:6380 192.168.31.131:6379 192.168.31.131:6380 192.168.31.132:6379 192.168.31.132:6380 --cluster-replicas 1
После завершения выполнения журнал печати выглядит следующим образом:
После выполнения команды появится запрос «Могу ли я установить вышеуказанную конфигурацию? (введите «да», чтобы принять):» Введите здесь «да» и нажмите Enter. Если возникает следующая ситуация, кластер Redis успешно создан:
Вы можете войти в клиент Redis и просмотреть состояние кластера, выполнив следующие инструкции:
root@hadoop1:/data# redis-cli -c -h 192.168.31.130 -p 6379
Затем выполните команду «Информация о кластере», чтобы проверить состояние кластера. Если отображается сообщение «cluster_state:ok», это означает, что кластер создан нормально.
Конечно, вы можете дополнительно проверить статус каждого узла с помощью команды кластерных узлов. Это уже статус кластера из трех главных и трех подчиненных ——.
Выше описан весь процесс построения кластера.
Если вы никогда раньше не играли в Docker,,Вы можете обратиться к моему предыдущемуизодна статьяDockerСоздание рекордных статей《Примечания о проблемах, возникающих при установке Docker на CentOS7.》,Сначала настройте среду Docker