如何设置在不同端口上运行的多个 memcached 实例?

如何设置在不同端口上运行的多个 memcached 实例?

我正在运行 Ubuntu 15.10,并且已经在系统上安装了 memcached。我当前的项目要求是在同一台服务器上运行两个 memcached 实例,但使用不同的端口。我从/etc/memcached.conf文件开始,检查它是否有指定端口号的选项。所以,我想我只需要有两个具有不同端口号的相同 conf 文件。

然后我检查 memcached 启动脚本,/etc/init.d/memcached以便指定 conf 文件的位置。但令我惊讶的是,我发现启动脚本已经有一个运行多个 memcached 实例的选项。

# Usage:
# cp /etc/memcached.conf /etc/memcached_server1.conf
# cp /etc/memcached.conf /etc/memcached_server2.conf
# start all instances:
# /etc/init.d/memcached start
# start one instance:
# /etc/init.d/memcached start server1
# stop all instances:
# /etc/init.d/memcached stop
# stop one instance:
# /etc/init.d/memcached stop server1
# There is no "status" command.

FILES=(/etc/memcached_*.conf)
# check for alternative config schema
if [ -r "${FILES[0]}" ]; then

我尝试了上述选项,但它仍然启动单个实例,而不是启动两个实例。我是不是漏掉了什么?

答案1

正如罗伯特·比尔迈尔 (Robert Bihlmeyer) 所说https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784357#13,一个简单的解决方案就是删除/lib/systemd/system/memcached.service

如果没有此文件,systemd 将返回到/etc/init.d/memcached支持多种配置的。

我在 Ubuntu 16.04 上确认了这个问题,并用这种方法解决了。

答案2

通过创建文件 /lib/systemd/system/ 可以轻松完成此操作[电子邮件保护]其内容与 memcached.service 文件基本相同,但有一些小的变化:

[Unit]
Description=memcached daemon for %i
After=network.target

[Service]
ExecStart=/usr/share/memcached/scripts/systemd-memcached-wrapper /etc/memcached_%i.conf

[Install]
WantedBy=multi-user.target

然后您可以使用 systemctl 单独管理每个服务:

systemctl enable memcached@server1

systemctl start memcached@server2

答案3

在 Debian Jessie 中遇到同样的问题。如果我找到解决方案,我会报告。

同时,您可以手动启动服务来实现所需的结果。

例子:

sudo /etc/init.d/memcached stop
memcached -d -m 64 -l 127.0.0.1 -p 11211 -u memcache
memcached -d -m 64 -l 127.0.0.2 -p 11211 -u memcache

更新 1:啊哈!Debian 中有一个错误:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=784357. 这也会影响 Ubuntu 吗?

答案4

运行以下命令在 ubuntu 16.04 服务器上配置多个 Memcached 实例

sudo cp /etc/memcached.conf /etc/memcached_11212.conf

sudo vim /etc/memcached_11212.conf

Note: change the port from 11211 to 11212 or another port which you want.

sudo cp /lib/systemd/system/memcached.service /lib/systemd/system/memcached2.service

sudo vim /lib/systemd/system/memcached2.service

Note: change /etc/memcached.conf to /etc/memcached_11212.conf

sudo systemctl 启动 memcached2.service

sudo systemctl status memcached2.service

sudo netstat -tulpan | grep memcached

相关内容