使用 systemd 和不使用模板启动多个 redis 实例

使用 systemd 和不使用模板启动多个 redis 实例

我正在尝试redis在不同的端口(63796380)上启动 2 个实例,我已遵循所有指南和创建systemd单元的示例,但redis 不知何故,第二个实例停止了过了一会儿日志中的内容如下:

# User requested shutdown

我在redis 5.0.5Ubuntu 上运行。18.04.2systemd 237

我已经尝试过这两种组合:

  • redisdaemonize yes配置文件Type=forking[Service]
  • redisdaemonize no配置文件Type=simple[Service]

(虽然我不确定哪一个是正确的!)

我也尝试添加,supervised systemd (Type=notify)但似乎也没有帮助!请注意,它们有单独的配置文件和单独的 pid 文件,pid 被正确写入(PIDFile=在单位规范中指定)

请帮忙!

- 编辑 -

经过更多的实验后,我发现注释掉 RDB 持久性(dirdbfilename)使得两个实例都出现!

如果存在多个实例,除了保持 2 个目录名称和 dbfile 名称不同之外,我还需要进行哪些其他更改?

答案1

以下是使用相同包运行两个实例的快速指南,重复性最低redis,但我们将使用单独的目录pidsock文件/run/var/run在现代发行版中是符号链接)。使用相同的目录将在停止和重新启动任何两个服务时引起冲突。

  1. 重复的默认配置:

    sudo cp /etc/redis/redis.conf /etc/redis/redis4cache.conf

    sudo nano /etc/redis/redis4cache.conf并进行如下更改:

    -port 6379
    +port 6380
    
    # -or- if you're using socket:-
    
    -unixsocket /run/redis/redis-server.sock
    +unixsocket /run/redis4cache/redis4cache.sock
    
    -pidfile /run/redis/redis-server.pid
    +pidfile /run/redis4cache/redis4cache.pid
    
    -logfile /var/log/redis/redis-server.log
    +logfile /var/log/redis/redis4cache.log
    
    -dbfilename dump.rdb
    +dbfilename redis4cache_dump.rdb
    
    -# maxmemory <bytes>
    +maxmemory 134217728 # 128MB
    
    +maxmemory-policy allkeys-lfu # (Least Frequently Used)
    
  2. 重复的 Redis 服务:

    sudo cp /lib/systemd/system/redis-server.service /lib/systemd/system/redis4cache.service

    sudo nano /lib/systemd/system/redis4cache.service并进行如下更改:

    -ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
    +ExecStart=/usr/bin/redis-server /etc/redis/redis4cache.conf
    
    -PIDFile=/run/redis/redis-server.pid
    +PIDFile=/run/redis4cache/redis4cache.pid
    
    -RuntimeDirectory=redis
    +RuntimeDirectory=redis4cache
    
    -ReadWriteDirectories=-/run/redis
    +ReadWriteDirectories=-/run/redis4cache
    
    -Alias=redis.service
    
  3. 启用并启动服务:

    sudo systemctl daemon-reload

    sudo systemctl enable redis4cache

    sudo systemctl start redis4cache

  4. 验证两个服务:

    ps aux | grep redis

    sudo redis-cli -s /run/redis/redis-server.sock

    sudo redis-cli -s /run/redis4cache/redis4cache.sock

相关内容