我正在运行 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