Изменить пользователя процесса 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:

(из-за 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
    }
}

что я уже попробую:

  1. cp /usr/lib/systemd/system/keeplaived.service в /etc/systemd/system/keepalived.service и добавьте пользовательский тег
User=keepalived
Group=users

но keepalived больше не работает, keepalived прекращается.

  1. изменить каталог, разрешение в /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.

Спасибо за Александра Кассена.

Другие вопросы по тегам