Я использую 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