代码拉取完成,页面将自动刷新
# 启动docker服务 https://docs.docker.com
systemctl start docker
# 查看docker服务状态
systemctl status docker
# 修改系统配置,避免重启后丢失修改
vi /etc/sysctl.conf
vm.overcommit_memory = 1
# 配置系统立即生效(临时)
sysctl vm.overcommit_memory=1
# 修改redisinsight目录的所有者,避免启动服务时没有权限
chown -R 1001 redisinsight
# 后台启动服务
docker-compose up -d
# 创建集群(六节点,一个集群,三个分片,没分片一个副本)
docker exec -it redis-1 redis-cli -p 7001 -a mypassword --cluster create redis1:6379 redis2:6379 redis3:6379 redis4:6379 redis5:6379 redis6:6379 --cluster-replicas 1 --cluster-yes
# 使用集群模式连接redis集群
docker exec -it redis-1 redis-cli -c -h redis-1 -p 6379 -a mypassword
# 查看集群详情
cluster nodes
# 查看docker compose项目日志
docker-compose logs -f -t --tail=20
Redis配置文件说明
port 6379 # 设置监听端口
bind 0.0.0.0 # 设置监听地址
protected-mode no # 关闭保护模式
# daemonize yes # 后台运行,容器中必须前台运行
cluster-enabled yes # 开启集群模式
cluster-config-file nodes.conf # 集群配置文件名称
cluster-node-timeout 5000 # 集群节点失联判定为故障的超时时间
appendonly yes # 开启AOF
aof-use-rdb-preamble yes # 开启混合持久化模式
appendfsync everysec # AOF每秒持久化一次
appendfilename "appendonly-cluster.aof" # AOF文件名称
auto-aof-rewrite-min-size 64mb # AOF重写最小大小
auto-aof-rewrite-percentage 100 # AOF重写的文件大小变更比例
requirepass "mypassword" # 对外服务提供的验证密码
masterauth "mypassword" # 节点间验证的密码
databases 1 # 指定逻辑数据库的多少(集群模式只能有一个逻辑库,还原的时候,这个值需要与备份的库保持一致,否则无法还原)
slowlog-log-slower-than 1000 # 执行时间超过该阈值的命令,即为慢查询
slowlog-max-len 1024 # 日志最多保存的条数,采取先进先出的淘汰策略
Nginx配置文件说明
user nobody; # Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限
worker_processes auto; # 工作进程数量,可配置成服务器内核数 * 2,这里配置自动;auto只与当前cpu物理核心数一致,通常用于低配服务器,一般不建议超过8;
worker_cpu_affinity 00000001 00000010 00000100 00001000; # 设置nginx工作线程的cpu亲和力,减少上下文切换,一般上限为8个,再增加性能不升反降
worker_priority 0; # 指定 worker 子进程的 nice 值,以调整运行 Nginx 的优先级,通常设定为负值,以优先调用 Nginx;120-10=110,110就是最终的优先级;Linux 默认进程的优先级值是120,值越小越优先; nice 值范围为 -20 到 +19 。应用的默认优先级值是120加上 nice 值等于它最终的值,这个值越小,优先级越高。
worker_rlimit_nofile 1024; # 指定worker子进程可以打开的最大文件句柄数,可以理解成每个worker子进程的最大连接数量。
# daemon off; # 指定 Nginx 的运行方式,前台还是后台,前台用于调试,后台用于生产;默认是on,后台运行模式;容器中需要使用前台模式;
events {
use epoll; # 使用epoll的I/O模型(如果你不知道Nginx该使用哪种轮询方法,会自动选择一个最适合你操作系统的)
worker_connections 1024; # 每个子进程的最大连接数为1024
accept_mutex on; # 是否打开负载均衡互斥锁,默认是off关闭的,这里推荐打开;设置网路连接序列化,防止惊群现象发生,默认为on;
multi_accept on; # 设置一个进程是否同时接受多个网络连接,默认为off
}
stream { # 定义nginx四层工作模式(传输层,物链网传会表应)
upstream redis_cluster { # 配置上游组,并设置别名
server redis1:6379; # 配置上游的所有服务节点,再次可以配置lb策略(例如:ip_hash、weight),失败策略,重试策略,上线、下线、备用;
server redis2:6379;
server redis3:6379;
server redis4:6379;
server redis5:6379;
server redis6:6379;
}
server { # 定义服务
listen 6379; # 定义服务监听端口
proxy_pass redis_cluster; # 定义代理的上游目标
proxy_socket_keepalive on; # 与上游建立连接'成功'后,对tcp连接的'健康探活'
proxy_timeout 3s; # https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_timeout
proxy_connect_timeout 1s; # https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout
}
}
Docker Compose配置文件说明
version: '3' # 版本,与安装的docker、docker compose的版本有关,一般安装最近的版本,使用3就好了;https://docs.docker.com/compose/compose-file/compose-versioning/
networks: # 定义网络
redisclusternet: # 网络别名
driver: bridge # 网络类型
ipam: # ip地址管理
config: # 网络配置
- subnet: 10.0.0.0/16 # 定义子网
services: # 定义服务
redis1: # 服务别名
container_name: redis-1 # 容器名称
image: redis:${REDIS_VER} # 镜像名称,镜像名称:镜像标签
volumes: # 挂载数据局卷
- ./configs/redis-1.conf:/etc/redis/redis.conf:rw # 挂载映射,容器外部文件或目录:容器内部文件或目录:访问方式,rw(读写),ro(只读)
- ./data/node1:/data:rw
command: # 启动命令
- redis-server
- /etc/redis/redis.conf
networks: # 服务网络定义
redisclusternet: # 通过网络别名指定需要加入的网络
ipv4_address: 10.0.0.11 # 指定容器的ip地址
logging: # 日志配置
driver: "json-file" # 日志驱动
options: # 日志选项
max-size: "200m" # 日志单文件最大大小
max-file: "3" # 最大日志文件数量
redis2:
container_name: redis-2
image: redis:${REDIS_VER}
volumes:
- ./configs/redis-2.conf:/etc/redis/redis.conf:rw
- ./data/node2:/data:rw
command:
- redis-server
- /etc/redis/redis.conf
networks:
redisclusternet:
ipv4_address: 10.0.0.12
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "3"
redis3:
container_name: redis-3
image: redis:${REDIS_VER}
volumes:
- ./configs/redis-3.conf:/etc/redis/redis.conf:rw
- ./data/node3:/data:rw
command:
- redis-server
- /etc/redis/redis.conf
networks:
redisclusternet:
ipv4_address: 10.0.0.13
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "3"
redis4:
container_name: redis-4
image: redis:${REDIS_VER}
volumes:
- ./configs/redis-4.conf:/etc/redis/redis.conf:rw
- ./data/node4:/data:rw
command:
- redis-server
- /etc/redis/redis.conf
networks:
redisclusternet:
ipv4_address: 10.0.0.14
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "3"
redis5:
container_name: redis-5
image: redis:${REDIS_VER}
volumes:
- ./configs/redis-5.conf:/etc/redis/redis.conf:rw
- ./data/node5:/data:rw
command:
- redis-server
- /etc/redis/redis.conf
networks:
redisclusternet:
ipv4_address: 10.0.0.15
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "3"
redis6:
container_name: redis-6
image: redis:${REDIS_VER}
volumes:
- ./configs/redis-6.conf:/etc/redis/redis.conf:rw
- ./data/node6:/data:rw
command:
- redis-server
- /etc/redis/redis.conf
networks:
redisclusternet:
ipv4_address: 10.0.0.16
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "3"
nginx_proxy:
container_name: redis-nginx-proxy
image: nginx:1.25.3-alpine
ports: # 定义端口映射
- 6379:6379 # 指定端口映射,宿主机端口:容器内部端口
volumes:
- ./configs/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on: # 指定依赖的服务,依赖的服务全部启动后,才会启动当前服务
- redis1
- redis2
- redis3
- redis4
- redis5
- redis6
networks:
redisclusternet:
ipv4_address: 10.0.0.240
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "3"
redisinsight:
container_name: redisinsight
image: redislabs/redisinsight:latest
ports:
- 8001:8001
volumes:
- ./redisinsight:/db:rw
depends_on:
- nginx_proxy
networks:
redisclusternet:
ipv4_address: 10.0.0.241
logging:
driver: "json-file"
options:
max-size: "200m"
max-file: "3"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。