2016-04-13 2 views
0

In meiner letzten Frage zu Avi Vantage (Does the avi networks controller work on VMware Fusion 7 or 8 on OS X?) wurde ich angewiesen, ein Docker-basiertes Startskript auszuführen. Ich habe es leicht modifiziert, um die neuesten Avi-Docker-Bilder zu nutzen (siehe unten).Wie konfiguriere ich eine Service Engine für die Verbindung mit dem Controller in Avi Vantage 16.1?

Ich bin in der Lage, den Controller gestartet und über die Web-basierte Admin-Schnittstelle konfiguriert zu konfigurieren. Die Service Engine (SE) stellt jedoch keine Verbindung zum Controller her. Ich habe bestätigt, dass der SE-Andock-Container ausgeführt wird, aber der Controller scheint es nicht zu sehen. Kann jemand Avi-Service-Engine-Verbindungen beheben?

Hier ist meine leicht modifizierte Installation und Start-Skript:

#!/bin/sh 
set -e 

controller_image="avinetworks/controller:16.1.1-9019-20160330.183143" 
se_image="avinetworks/se:16.1.1-9019-20160330.183143" 

# Quit the script if the user failed to provide the right password 
if [ $? -ne 0 ] ; then 
    echo "Script is exiting because you failed to give root's password" 
    exit 1 
fi 

command_exists() { 
    command -v "[email protected]" > /dev/null 2>&1 
} 

avi_install_ubuntu() { 
    echo -n "Starting Avi-Installation...\n" 
    ###################################### 
    #### Installing Docker 
    ##################################### 
    if command_exists docker && [ -e /var/run/docker.sock ]; then { 
     echo -n "Skipping docker install\n" 
    } 
    else { 
     echo -n "Proceedig with docker install\n" 
     distro=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | tr '[:upper:]' '[:lower:]') 
     if [ "$distro" = "ubuntu" ]; then { 
      apt-get -y update 
      apt-get -y install curl 
      curl -sSL https://get.docker.com/ | sh 
     } else { 
      systemctl disable firewalld 
      systemctl stop firewalld 
      yum -y install docker 
      service docker start 
     } fi 
    } 
    fi 

     ###################################### 
     #### Starting avi Controller 
     ##################################### 
    echo -n "Starting Avi Controller container\n" 
    int_name=`ip route|grep default|cut -d' ' -f 5` 
    mgmt_ip=$(ip addr show $int_name | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1) 
     /usr/bin/docker run --name=avi_controller --privileged=true -p 80:80 -p 443:443 -p 8443:8443 -p 5098:5098 -d -t -e MANAGEMENT_IP=$mgmt_ip -v /var/lib/controller/var/log:/var/log -v /var/lib/controller/var/lib/postgresql:/var/lib/postgresql -v /var/lib/controller/var/lib/avi:/var/lib/avi -v /var/run/docker.sock:/var/run/docker.sock ${controller_image} 

    echo -n "Starting Avi Service Engine container\n" 
    /usr/bin/docker run -d --net=host -e NTHREADS=1 -e SEMEMMB=2048 -e "CONTROLLERIP=$mgmt_ip" --privileged=true ${se_image} 

} 

avi_install_ubuntu 

exit 0 

Antwort

1

Kommunikation zwischen Steuerung und ServiceEngine ist standardmäßig gesichert. Darüber hinaus führt der Controller auch eine Zugangskontrolle durch und erlaubt nur die ihm bekannten Service Engines.

Sie können in diesem Fall ein paar Dinge tun: - Setzen Sie "allow_unauthenticated_nodes" im ControllerProperties-Objekt auf True, um die anfängliche Zulassungskontrolle zu deaktivieren. Die zu verwendende API lautet "/ api/controllerproperties" und CLI lautet "configure controller properties". -OR- - Sie können ein sicheres Token auschecken und es in die Service Engine einfügen. Um das Token zu generieren, können Sie die API "/ api/securetoken-generate" verwenden und "auth_token" aus den JSON-Nutzdaten der Antwort extrahieren. Sie können dann diesen Token-Wert in der ServiceEngine nach/var/lib/avi/certs/sc_auth_token kopieren.

Pls. lassen Sie uns wissen, ob dies für Sie funktioniert.

Danke, Anand.

+0

Danke! Ich werde es versuchen. –

+0

Ok. Ich habe das alles getan, aber es verbindet sich immer noch nicht. Ich habe ein anderes Problem im Startskript gefunden (siehe oben), wo die Umgebungsvariable CONTROLLERIP nicht richtig gesetzt wurde. Nachdem Sie das behoben und sichergestellt haben, dass die Variable CONTROLLERIP richtig eingestellt ist, verbindet sich die Service-Engine immer noch nicht. Was ist der beste Weg, um dies zu beheben? Gibt es einige Logs im Service-Engine-Container, in dem ich nachsehen kann, was passiert? –

+0

Ok. Ich habe es noch einmal versucht. Wenn 'allow_unauthenticated_nodes' jetzt auf 'true' gesetzt wird, kann die SE erfolgreich eine Verbindung zum Controller herstellen. Leider weiß ich jetzt nicht, wie ich den VIP einstellen soll. Haben Sie Vorschläge, wie Sie den Host- und/oder den Controller-/Se-Docker-Container konfigurieren, damit die Service-Engine auf den VIP-Verkehr reagieren kann? –

0

Ich nehme an, dass Sie sich auf die Konfiguration von VirtualService im Avi Controller beziehen. Avi Controller platziert den virtuellen Dienst dann auf der Service Engine, die den diesem virtuellen Dienst entsprechenden Datenpfad aktiviert.

Ich füge eine Dokumentation im Zusammenhang mit dieser, die Sie bei für Virtual Service Konfiguration aussehen:

Pls. lassen Sie mich wissen, ob dies hilfreich ist.

+0

Art von, aber nicht wirklich. Ich werde eine spezifischere Frage in einem anderen Thread stellen. –

+0

Ich entschied, dass diese Frage einen eigenen Thread garantierte: http://stackoverflow.com/questions/36876251/how-to-setup-the-vip-in-avi-vantage-on-a-linux-cloud –

Verwandte Themen