Изменить пользователя процесса keeplived из root в keepalived(или другой)
Я хочу знать, как изменить имя процесса root на другое?
при использовании следующей команды:
ps aux | grep keepalived
root 26982 0.0 0.0 19344 1560 ? Ss 11:52 0:00 /usr/local/keepalived-2.0.16/sbin/keepalived -D
root 26983 0.0 0.1 19344 2404 ? S 11:52 0:02 /usr/local/keepalived-2.0.16/sbin/keepalived -D
root 30816 0.0 0.0 9288 1628 pts/1 S+ 13:49 0:00 grep --color=auto keepalived
keepalived работает как положено, обрабатывает виртуальный IP и отработку отказа.
но я хочу изменить root на username:keepalived
мой env:
- дистрибутив Linux:SUSE SLES 12 SP4
- ядро Linux: 4.12.14-95.13
- Unix-демон:systemd
- сохраненная версия:
- 1.4.5(используйте zypper из https://software.opensuse.org/package/keepalived)
- также попробуйте сделать установку из исходного кода
- следуйте инструкциям на https://www.keepalived.org/doc/installing_keepalived.html.
- 1.4.5(из https://www.keepalived.org/download.html)
- 2.0.16(из https://www.keepalived.org/download.html)
(из-за https://www.keepalived.org/index.html говорится: "Keepalived-код, присутствующий в основной ветке git, должен рассматриваться как стабильный и проверенный в будущем".,
и https://www.keepalived.org/manpage.html показывают только одну версию документа (это 2.0.16?), я выбираю 2.0.16 для обсуждения)
(следующая информация - версия 2.0.16, команда Run от имени root, но я вижу похожую ошибку в 1.4.5)
как установить keepalived:
wget http://keepalived.org/software/keepalived-2.0.16.tar.gz
tar -xvf keepalived-2.0.16.tar.gz
cd keepalived-2.0.16/
zypper in gcc
zypper in openssl-devel
./configure --prefix=/usr/local/keepalived-2.0.16
make
sudo make install
настройка keepalived.conf
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
script_user keepalived
enable_script_security
}
# Script used to check if nginx is running
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight 2
}
# Virtual interface
# The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass pass
}
# The virtual ip address shared between the two loadbalancers
virtual_ipaddress { # Block limited to 20 IP addresses
192.168.2.179
}
track_script {
check_nginx
}
}
что я уже попробую:
- cp /usr/lib/systemd/system/keeplaived.service в /etc/systemd/system/keepalived.service и добавьте пользовательский тег
User=keepalived
Group=users
но keepalived больше не работает, keepalived прекращается.
- изменить каталог, разрешение в /etc/systemd/system/keepalived.service
#PIDFile=/var/run/keepalived.pid
ExecStart=/usr/local/keepalived-2.0.16/sbin/keepalived $KEEPALIVED_OPTIONS -p /etc/keepalived/keepalived.pid -r /etc/keepalived/vrrp.pid -c /etc/keepalived/keepalived_checkers.pid
useradd -M -s /bin/nologin -d /opt/keepalived keepalived
chown -R keepalived:users /etc/keepalived/
на этот раз keepalived начать работать
keepali+ 26289 0.0 0.0 19344 1628 ? Ss 11:34 0:00 /usr/local/keepalived-2.0.16/sbin/keepalived -D -p /etc/keepalived/keepalived.pid -r /etc/keepalived/vrrp.pid -c /etc/keepalived/keepalived_checkers.pid
keepali+ 26290 0.0 0.1 19344 2456 ? S 11:34 0:00 /usr/local/keepalived-2.0.16/sbin/keepalived -D -p /etc/keepalived/keepalived.pid -r /etc/keepalived/vrrp.pid -c /etc/keepalived/keepalived_checkers.pid
root 26323 0.0 0.0 9288 1628 pts/1 S+ 11:35 0:00 grep --color=auto keepalived
но получил следующую ошибку в статусе systemctl keepalived и journalctl -xe
-- Unit keepalived.service has begun starting up.
Keepalived[10409]: Starting Keepalived v2.0.16 (05/03,2019), git commit v2.0.15-96-g4d492740+
Keepalived[10409]: Running on Linux 4.12.14-95.13-default #1 SMP Fri Mar 22 06:04:58 UTC 2019 (c01bf34) (bu
Keepalived[10409]: Command line: '/usr/local/keepalived-2.0.16/sbin/keepalived' '-D' '-p'
Keepalived[10409]: '/etc/keepalived/keepalived.pid' '-r' '/etc/keepalived/vrrp.pid' '-c'
Keepalived[10409]: '/etc/keepalived/keepalived_checkers.pid'
Keepalived[10409]: Opening file '/etc/keepalived/keepalived.conf'.
Keepalived[10409]: Failed to bind to process monitoring socket - errno 1 - Operation not permitted
systemd[1]: Started LVS and VRRP High Availability Monitor.
-- Subject: Unit keepalived.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit keepalived.service has finished starting up.
--
-- The start-up result is done.
Keepalived[10409]: Remove a zombie pid file /etc/keepalived/keepalived.pid
Keepalived[10409]: Remove a zombie pid file /etc/keepalived/vrrp.pid
Keepalived[10412]: Starting VRRP child process, pid=10413
Keepalived_vrrp[10413]: Registering Kernel netlink reflector
Keepalived_vrrp[10413]: Registering Kernel netlink command channel
Keepalived_vrrp[10413]: Opening file '/etc/keepalived/keepalived.conf'.
Keepalived_vrrp[10413]: Assigned address 192.168.2.178 for interface eth0
Keepalived_vrrp[10413]: Assigned address fe80::a00:27ff:feef:6ebe for interface eth0
Keepalived_vrrp[10413]: Error 1 while registering gratuitous ARP shared channel
Keepalived_vrrp[10413]: (VI_1) removing VIPs.
Keepalived_vrrp[10413]: Netlink: error: Operation not permitted, type=RTM_DELADDR(21), seq=1557728895, pid=
Keepalived_vrrp[10413]: cant open raw socket. errno=1
Keepalived_vrrp[10413]: (VI_1) Entering BACKUP STATE (init)
Keepalived_vrrp[10413]: VRRP sockpool: [ifindex(2), family(IPv4), proto(112), unicast(0), fd(-1,-1)]
Keepalived_vrrp[10414]: Couldn't setgroups: 100 (Operation not permitted)
Keepalived_vrrp[10413]: VRRP_Script(check_nginx) succeeded
Keepalived_vrrp[10413]: (VI_1) Changing effective priority from 150 to 152
Keepalived_vrrp[10415]: Couldn't setgroups: 100 (Operation not permitted)
(в моем случае я использую keepalived для перехода на другой ресурс при сбое) также хочу спросить
есть ли форум или вопросы и ответы для keepalived?
лучший способ установить keepalived?
- keepalived 1.4.5(на данный момент) от zypper(менеджер пакетов)?
- сохранить последнюю версию 2.0.16(на данный момент) из исходного кода?
я что-то делаю или считаю неправильным или странным?
0 ответов
Согласно ответу Александра Кассена (я спросил по электронной почте) ....
Ответ довольно прост, на самом деле из-за того, что Keepalived работает на уровне ОС, он не будет работать при запуске с другим пользователем с меньшими правами, чем root. Keepalived необходимо открыть разные каналы маршрутизации и систему с ядром, что можно сделать только с аутентификацией корневого уровня (сокет RAW, канал настройки netlink, ...).
Если вы быстро прочитаете ваше сообщение на этом форуме и просто подтвердите, последний стабильный выпуск на веб-сайте Keepalived должен быть рассмотрен для производства. Я очень расстроен тем, что большинство дистрибутивов linux поставляют очень старые версии. Canonical/Ubuntu продвинулась в этом вопросе, и мы создали пакет snapcraft.io для Keepalived, тесно связанный с Keepalived github. Но использование этого последнего опубликованного релиза всегда хорошая практика, мы действительно тратим много времени на тестирование и отладку, чтобы предложить лучший софт.
Итак, ответ НЕТ.
И попробуйте использовать последний релиз keepalived.
Спасибо за Александра Кассена.