参考-->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查看当前的配置信息