我正在运行带有 selinux 的 Centos 7.2。
我在 Centos 7.2 上编写了这两个文件服务:
Systemd 单元文件memcached_mc2
:
[Unit]
Description=memcached instance memcached_mc2
After=network.target
[Service]
LimitNOFILE=1024
ExecStart=/usr/bin/memcached -m 64 -U 11212 -p 11212 -u memcached -l 0.0.0.0 -c 1024 -I 1m
Restart=on-failure
[Install]
WantedBy=multi-user.target
Systemd 单元文件memcached_mc1
[Unit]
Description=memcached instance memcached_mc1
After=network.target
[Service]
LimitNOFILE=1024
ExecStart=/usr/bin/memcached -m 64 -U 11211 -p 11211 -u memcached -l 0.0.0.0 -c 1024 -I 1m
Restart=on-failure
[Install]
WantedBy=multi-user.target
如您所见,唯一改变的是每个 memcached 实例监听的端口。
尽管如此,我可以启动,memcached_mc1
但是memcached_mc2
不行:
$ systemctl status memcached_mc1
● memcached_mc1.service - memcached instance memcached_mc1
Loaded: loaded (/etc/systemd/system/memcached_mc1.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2017-02-24 10:39:17 UTC; 48s ago
Main PID: 14388 (memcached)
CGroup: /system.slice/memcached_mc1.service
└─14388 /usr/bin/memcached -m 64 -U 11211 -p 11211 -u memcached -l 0.0.0.0 -c 1024 -I 1
$ systemctl status memcached_mc2
memcached_mc2.service - memcached instance memcached_mc2
Loaded: loaded (/etc/systemd/system/memcached_mc2.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Fri 2017-02-24 10:37:18 UTC; 2min 50s ago
Process: 14359 ExecStart=/usr/bin/memcached -m 64 -U 11212 -p 11212 -u memcached -l 0.0.0.0 -c 1024 -I 1m (code=exited, status=71)
Main PID: 14359 (code=exited, status=71)
我尝试过mc1
仅停止并启动mc2
,但结果是一样的:mc2
没有启动。
我也试图找出可以查看日志的地方,但是,我无法找到它们的存储位置。
我认为问题是 selinux 不允许在除 11211(标准)之外的端口上使用 memcached。这可能吗?我需要更改什么?
有任何想法吗?
答案1
您需要告诉 SELinux 您想要用于 memcached 的自定义端口。
首先让我们看看正确的类型是什么:
# semanage port -l | grep -w 11211
memcache_port_t tcp 11211
memcache_port_t udp 11211
因此我们要使用类型memcache_port_t
并添加我们想要的端口:
# semanage port -a -t memcache_port_t -p tcp 11212