在三台服务器上搭建redis集群

Redis集群

参考-->redis

分别在三台主机上创建如下文件和文件夹

mkdir -p /usr/local/docker/redis
cd /usr/local/docker/redis
touch docker-compose.yaml
vim docker-compose.yaml
192.168.86.58的docker-compose.yaml

version: '3'
services:
  master:
    image: redis
    container_name: redis-master
    restart: always
    command: redis-server --port 6379 --requirepass test1234 --masterauth test1234 --appendonly yes
    ports:
      - 6379:6379
    privileged: true
    volumes:
      - /usr/local/docker/redis/data:/data
      - /usr/local/docker/redis/conf/:/usr/local/etc/redis/

192.168.86.19的docker-compose.yaml

version: '3'
services:
  redis-slave1:
    image: redis
    container_name: redis-slave1
    restart: always
    command: redis-server --slaveof 192.168.86.58 6379 --port 6379 --requirepass test1234 --masterauth test1234 --appendonly yes
    ports:
      - 6379:6379
    privileged: true
    volumes:
      - /usr/local/docker/redis/data:/data
      - /usr/local/docker/redis/conf/:/usr/local/etc/redis/

192.168.86.43的docker-compose.yaml

version: '3'
services:
  redis-slave2:
    image: redis
    container_name: redis-slave2
    restart: always
    command: redis-server --slaveof 192.168.86.58 6379 --port 6379 --requirepass test1234 --masterauth test1234 --appendonly yes
    ports:
      - 6379:6379
    privileged: true
    volumes:
      - /usr/local/docker/redis/data:/data
      - /usr/local/docker/redis/conf/:/usr/local/etc/redis/

参数解释:
privileged: true 权限
requirepass test1234 访问本机需要的密码
masterauth test1234 作为从机访问主机的密码
appendonly yes 是否持久化

docker-compose up -d 后台启动
后面可以用docker ps查看容器是否正常启动
docker-compose down 关闭

进入docker exec -it redis-master bash
输入redis-cli

如果你更改了端口号,在进入集群的时候,要使用redis-cli -p 端口号(如果是6379就不用加-p)

在输入info

哨兵模式

在/usr/local/docker/redis这个目录下创建新的文件夹sentinel
mkdir sentinel
cd sentinel
touch sentinel.conf
touch docker-compose.yml

192.168.86.63的sentinel.conf编写:(其他两台服务器也可以使用26379,因为从属不同的服务器)

# bind 127.0.0.1 192.168.1.1
# protected-mode no
port 26379
#daemonize yes
#pidfile /var/run/redis-sentinel.pid
logfile "sentinel.log"
sentinel monitor redis-master 192.168.86.58 6379 2
sentinel auth-pass redis-master test1234
sentinel down-after-milliseconds redis-master 10000

sentinel announce-ip "192.168.86.58"
sentinel announce-port 26379

sentinel deny-scripts-reconfig yes

其他两台的配置文件和上面的一样

docker-compose.yaml文件
192.168.86.58

version: '3'
services:
  redis-sentinel-1:
    image: redis
    container_name: redis-sentinel-1
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - 26379:26379
	privileged: true
    volumes:
      - /usr/local/docker/redis/sentinel:/usr/local/etc/redis/

192.168.86.19

version: '3'
services:
  redis-sentinel-2:
    image: redis
    container_name: redis-sentinel-2
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - 26379:26379
	privileged: true
    volumes:
      - /usr/local/docker/redis/sentinel:/usr/local/etc/redis/

192.168.86.43

version: '3'
services:
  redis-sentinel-3:
    image: redis
    container_name: redis-sentinel-3
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - 26379:26379
	privileged: true
    volumes:
      - /usr/local/docker/redis/sentinel:/usr/local/etc/redis/	

启动哨兵:docker-compose up -d

进入哨兵的容器中:
docker exec -it 容器名称 bash
进去集群: redis-cli -p 26379(你设置的端口,我设置的是26379)
输入:info查看当前的配置信息

posted @ 2022-09-01 15:21  freedomAndWind  阅读(618)  评论(0编辑  收藏  举报