Я работает Centos 7.2 с selinux.
Я написал эти две файловые службы на 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 не позволяет использовать memcached на порту, отличном от 11211 (стандартный). Является ли это возможным? Что мне нужно изменить?
Есть идеи?
Вам необходимо сообщить 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