Назад | Перейти на главную страницу

Centos 7 - Виртуальный сервер Keepalived Linux не работает

Окружающая среда:

Centos 7

Keepalived

Машина I

enp0s3 -> 192.168.1.38 (подключается к внешнему миру) en0s8 -> 192.168.100.101 (подключается к внутренней сети)

Машина II

enp0s3 -> 192.168.100.102 gw по умолчанию -> 192.168.100.101

Машина II

enp0s3 -> 192.168.100.103 gw по умолчанию -> 192.168.100.101

Я следил за учебником Вот шаг за шагом. И хотя все в комментариях говорят, что у них это прекрасно работает, я не могу понять оставайся живым демон, чтобы прослушать его файл конфигурации. Это действительно простая установка. Все, что я хочу сделать, это:

  1. Машина I действует как виртуальный сервер для внешнего мира, подключаясь к двум реальным веб-серверам (Машина II и Машина III).
  2. Машина I сначала попытается обслужить Машину II, если Машина II выйдет из строя, ничего не должно произойти, клиенты этого не заметят, и Машина I должна немедленно начать обслуживать службу Машины III.

Пункт 2) должен быть выполнен с помощью Keepalived, но он просто не работает. Вот конфигурационный файл из /etc/keepalived/keepalived.conf

global_defs{ 
   notification_email{ 
        fake@yahoo.es 
   } 
   notification_email_from keepalived@domain.com 
   smtp_server 193.145.147.51 
   smtp_connect_timeout 30 
   lvs_id LVS_MAIN 
} 

vrrp_instance VI_1 {
     interface enp0s3
     state MASTER
     virtual_router_id 51
     priority 150
     advert_int 1

    virtual_ipaddress {
            192.168.100.105/24 dev enp0s8
    }
}


virtual_server 192.168.100.105 80 { !This would hosted in Machine I enp0s8
       delay_loop 3 
       lb_algo wrr 
       lb_kind NAT
       nat_mask 255.255.255.0
       protocol TCP 

      real_server 192.168.100.102 8000 { !Machine II
           weight 1 
           TCP_CHECK { 
                 connect_timeout 3
            connect_port 8000
           } 
      } 

     real_server 192.168.100.103 8000 { !Machine III 
           weight 1 
                        TCP_CHECK { 
                 connect_timeout 3
            connect_port 8000
           } 
     } 
 }

Когда я запускаю keepalived и делаю sudo ip addr show enp0s8 Я вижу, что keepalived предоставил интерфейсу виртуальный IP-адрес 192.168.100.105 но когда я перехожу в браузер машины, я ввожу в качестве URL-адреса ip-адрес 192.168.100.105 ничего не возвращается, только тайм-аут соединения. Но если я вставлю 192.168.100.102:8000 или 192.168.100.103:8000 Меня приветствует мой веб-сервис.

Что я мог сделать не так с keepalived?

Я ценю любую помощь.

в моем случае я использую LVS-DR. Если вы используете LVS-DR

На основе http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.ipvsadm.html

LVS-DR, LVS-Tun: the default gw cannot be the director - use some local router.

Измените виртуальный адрес на

virtual_ipaddress {
        192.168.100.105 dev enp0s8
}

Измените шлюз по умолчанию на ваших реальных серверах на маршрутизатор НЕ Директор.

+ Изменить

lb_kind NAT 

к

lb_kind DR

Также вам необходимо добавить правила iptables на реальном сервере.

http://www.centos.org/docs/5/html/Virtual_Server_Administration/s2-lvs-direct-iptables-VSA.html

На реальном сервере 192.168.100.102 и 192.168.100.103

iptables -t nat -A PREROUTING -p <tcp|udp> -d <vip> --dport <port> -j REDIRECT

В этом случае становятся:

iptables -t nat -A PREROUTING -p tcp -d 192.168.100.105 --dport 8000 -j REDIRECT