Installieren Sie einen NetScaler Agent auf Amazon Web Services (AWS)
Der NetScaler Agent fungiert als Vermittler zwischen der NetScaler Console und den erkannten Instanzen im Rechenzentrum oder in der Cloud.
Voraussetzungen
Um ein NetScaler Agent-AMI in einer Amazon Web Services (AWS) Virtual Private Cloud (VPC) mithilfe der Amazon-GUI zu starten, benötigen Sie:
-
Ein AWS-Konto
-
Eine virtuelle Private Cloud (VPC) von AWS
-
Ein IAM-Konto
Hinweis
Bevor Sie eine virtuelle NetScaler Agent-Maschine bereitstellen, empfiehlt Citrix, eine Sicherheitsgruppe, ein virtuelles privates Netzwerk, ein Schlüsselpaar, ein Subnetz und andere Entitäten zu erstellen. Daher stehen die Netzwerkinformationen während der Provisioning zur Verfügung.
Damit ein NetScaler Agent mit der NetScaler Console und den NetScaler-Instanzen kommunizieren kann, stellen Sie sicher, dass die empfohlenen Ports geöffnet sind. Vollständige Informationen zu den Portanforderungen für einen NetScaler Agent finden Sie unter Ports.
So installieren Sie den NetScaler Agent auf AWS:
-
Melden Sie sich mit Ihren AWS-Anmeldeinformationen am AWS-Marketplace an .
-
Geben Sie in das Suchfeld NetScaler Agent ein, um nach dem NetScaler Agent-AMI zu suchen, und klicken Sie auf Los.
-
Klicken Sie auf der Suchergebnisseite in der verfügbaren Liste auf das NetScaler Console External Agent AMI .
-
Klicken Sie auf der Seite NetScaler Console External Agent AMI auf Continue to Subscribe.
-
Nachdem das Abonnement erfolgreich war, klicken Sie auf Weiter zur Konfiguration.
-
Auf der Seite Diese Software konfigurieren :
-
Wählen Sie das AMI aus der Optionsliste Fulfillment aus.
-
Wählen Sie die neueste NetScaler Agent-Version aus der Liste der Softwareversionen aus.**
-
Wählen Sie Ihre Region aus der Liste Region aus.
-
Klicken Sie auf Weiter zum Starten
-
-
Auf der Seite Diese Software starten haben Sie zwei Möglichkeiten, den NetScaler Agent zu registrieren:
-
Von der Website aus starten
-
Starten Sie mit EC2
-
Von einer Website aus starten
Um von einer Website aus zu starten, wählen Sie:
-
Ein EC2-Instanztyp aus der Liste EC2-Instanztyp
-
Eine VPC aus der Liste der VPC-Einstellungen . Klicken Sie auf Create a VPC in EC2, um eine VPC für Ihre Software zu erstellen.
-
Ein Subnetz aus der Liste Subnetzeinstellungen . Klicken Sie auf Subnetz erstellen in EC2, um ein Subnetz zu erstellen, nachdem Sie die VPC ausgewählt haben.
-
Eine Sicherheitsgruppe für die Firewall aus der Liste Sicherheitsgruppeneinstellungen . Klicken Sie auf Basierend auf Verkäufereinstellungen neu erstellen, um eine Sicherheitsgruppe zu erstellen.
-
Ein Schlüsselpaar zur Gewährleistung der Zugriffssicherheit aus der Liste Schlüsselpaareinstellungen . Klicken Sie auf Create a key pair in EC2, um ein Schlüsselpaar für Ihre Software zu erstellen.
-
Klicken Sie auf Starten
-
Der Start von einer Website ist erfolgreich.
Hinweis
Der Bereitstellungsprozess kann etwa 10 bis 15 Minuten dauern. Nachdem die Bereitstellung erfolgreich abgeschlossen wurde, können Sie Ihre virtuelle NetScaler Agent-Maschine in Ihrem AWS-Konto anzeigen.
-
Sobald der Agent bereitgestellt ist, weisen Sie Ihrem NetScaler Agent einen Namen zu.
-
Sobald der Agent betriebsbereit ist, weisen Sie Ihrem NetScaler Agent eine elastische IP-Adresse zu.
Hinweis
Die elastische IP-Adresse ermöglicht es dem NetScaler Agent, mit der NetScaler Console zu kommunizieren. Eine elastische IP-Adresse ist jedoch möglicherweise nicht erforderlich, wenn Sie NAT Gateway so konfiguriert haben, dass der Datenverkehr an das Internet weitergeleitet wird.
-
Melden Sie sich mit einem SSH-Client bei Ihrem NetScaler Agent an.
- Hinweis
-
Sie können sich auf eine der folgenden Arten am NetScaler Agent anmelden:
-
Verwenden Sie
nsrecover
als Benutzernamen und AWS-Instanz-ID als Kennwort. -
Verwenden Sie
nsroot
als Benutzernamen und ein gültiges Schlüsselpaar als Kennwort.
-
Geben Sie den folgenden Befehl ein, um den Bereitstellungsbildschirm aufzurufen: deployment_type.py
-
Geben Sie die Service-URL und den Aktivierungscode ein, den Sie auf der Seite „ Agenten einrichten “ in NetScaler Console kopiert und gespeichert haben, wie unter Erste Schritte beschrieben. Der Agent verwendet die Dienst-URL, um den Dienst zu finden, und den Aktivierungscode, um sich beim Dienst zu registrieren.
Nach erfolgreicher Agentregistrierung wird der Agent neu gestartet, um den Installationsvorgang abzuschließen.
Rufen Sie nach dem Neustart des Agents die NetScaler Console auf und überprüfen Sie auf der Seite „ Agent einrichten “ unter Discovered Agents den Status des Agents.
Starten Sie mit EC2
Um mit EC2 zu starten, wählen Sie Start über EC2 aus der Liste Aktion auswählen aus, und klicken Sie dann auf Starten.
-
Wählen Sie auf der Seite Choose an Instanz Type die Instanz aus und klicken Sie auf Next: Configure Instanz Details.
-
Geben Sie auf der Seite Configure Instanz Details die erforderlichen Parameter an.
Im Abschnitt Erweiterte Details können Sie einen Zero-Touch-Agent aktivieren, indem Sie Authentifizierungsdetails oder ein Skript im Feld Benutzerdaten angeben.
-
Authentifizierungsdetails— Geben Sie die Service-URL und den Aktivierungscodean, die Sie von der Seite „ Agenten einrichten “ in NetScaler Console kopiert haben, wie unter Erste Schritte beschrieben. Geben Sie die Details im folgenden Format ein.
registeragent -serviceurl <apigatewayurl> -activationcode <activationcodevalue> <!--NeedCopy-->
Der Agent verwendet diese Informationen, um sich beim Booten automatisch bei der NetScaler Console zu registrieren.
-
Skript - Geben Sie ein Skript zur automatischen Registrierung des Agent als Benutzerdaten an. Das Folgende ist ein Beispielskript:
#!/var/python/bin/python2.7 import os import requests import json import time import re import logging import logging.handlers import boto3 ''' Overview of the Script: The script helps to register a NetScaler agent with NetScaler Console. Pass it in userdata to make NetScaler agent in AWS to autoregister on bootup. The workflow is as follows 1) Fetch the NetScaler Console API credentials (ID and secret) from AWS secret store (NOTE: you have to assign IAM role to the NetScaler agent that will give permission to fetch secrets from AWS secret store) 2) Login to NetScaler Console with credentials fetched in step 1 3) Call NetScaler Console to fetch credentials (serviceURL and token) for agent registration 4) Calls registration by using the credentials fetched in step 3 ''' ''' These are the placeholders which you need to replace according to your setup configurations aws_secret_id: Id of the AWS secret where you have stored NetScaler Console Credentials The secrets value should be in the following json format { "adm_user_id_key": "YOUR_ID", " adm_user_secret_key": "YOUR_SECRET"} ''' aws_secret_id = "<AWS_secret_id>" adm_ip_or_hostname = "<YOUR_ADM_POP>.adm.cloud.com" ''' Set up a specific logger with your desired output level and log file name ''' log_file_name_local = os.path.basename(\_\_file\_\_) LOG_FILENAME = '/var/log/' + 'bootstrap' + '.log' LOG_MAX_BYTE = 50\*1024\*1024 LOG_BACKUP_COUNT = 20 logger = logging.getLogger(\_\_name\_\_) logger.setLevel(logging.DEBUG) logger_handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=LOG_MAX_BYTE, backupCount=LOG_BACKUP_COUNT) logger_fortmater = logging.Formatter(fmt='%(asctime)-2s:%(funcName)30s:%(lineno)4d: [%(levelname)s] %(message)s', datefmt="%Y-%m-%d %H:%M:%S") logger_handler.setFormatter(logger_fortmater) logger.addHandler(logger_handler) class APIHandlerException(Exception): def \_\_init\_\_(self, error_code, message): self.error_code = error_code self.message = message def \_\_str\_\_(self): return self.message + ". Error code '" + str(self.error_code) + "'" def parse_response(response, url, print_response=True): if not response.ok: if "reboot" in url: logger.debug('No response for url: reboot') resp = {"errorcode": "500", "message": "Error while reading response."} return resp if print_response: logger.debug('Response text for %s is %s' % (url, response.text)) response = json.loads(response.text) logger.debug("ErrorCode - " + str(response['errorcode']) + ". Message -" + str(response['message'])) raise APIHandlerException(response['errorcode'], str(response['message'])) elif response.text: if print_response: logger.debug('Response text for %s is %s' % (url, response.text)) result = json.loads(response.text) if 'errorcode' in result and result['errorcode'] > 0: raise APIHandlerException(result['errorcode'], str(result['message'])) return result def _request(method, url, data=None, headers=None, retry=3, print_response=True): try: response = requests.request(method, url, data=data, headers=headers) result = parse_response(response, url, print_response=print_response) return result except [requests.exceptions.ConnectionError, requests.exceptions.ConnectTimeout]: if retry > 0: return _request(method, url, data, headers, retry-1, print_response=print_response) else: raise APIHandlerException(503, 'ConnectionError') except requests.exceptions.RequestException as e: logger.debug(str(e)) raise APIHandlerException(500, str(e)) except APIHandlerException as e: logger.debug("URL: %s, Error: %s, Message: %s" % (url, e.error_code, e.message)) raise e except Exception as e: raise APIHandlerException(500, str(e)) try: '''Get the AWS Region''' client = boto3.client('s3') my_region = client.meta.region_name logger.debug("The rgion is %s" % (my_region)) '''Creating a Boto cleint session''' session = boto3.session.Session() client = session.client( service_name='secretsmanager', region_name=my_region ) '''Getting the values stored in the secret with id: <aws_secret_id>''' get_id_value_response = client.get_secret_value( SecretId = aws_secret_id ) adm_user_id = json.loads(get_id_value_response["SecretString"])["adm_user_id_key"] adm_user_secret = json.loads(get_id_value_response["SecretString"])["adm_user_secret_key"] except Exception as e: logger.debug("Fetching of NetScaler Console credentials from AWS secret failed with error: %s" % (str(e))) raise e ''' Initializing common NetScaler Console API handlers ''' mas_common_headers = { 'Content-Type': "application/json", 'Accept-type': "application/json", 'Connection': "keep-alive", 'isCloud': "true" } ''' API to login to the NetScaler Console and fetch the Session ID and Tenant ID ''' url = "https://" + str(adm_ip_or_hostname) + "/nitro/v1/config/login" payload = 'object={"login":{"ID":"' + adm_user_id + '","Secret":"' + adm_user_secret + '"}}' try: response = _request("POST", url, data=payload, headers=mas_common_headers) sessionid = response["login"][0]["sessionid"] tenant_id = response["login"][0]["tenant_name"] except Exception as e: logger.debug("Login call to the NetScaler Console failed with error: %s" % (str(e))) raise e ''' API to fetch the service URL and Token to be used for registering the agent with the NetScaler Console ''' mas_common_headers['Cookie'] = 'SESSID=' + str(sessionid) url = "https://" + str(adm_ip_or_hostname) + "/nitro/v1/config/trust_preauthtoken/" + tenant_id +"?customer="+ tenant_id logger.debug("Fetching Service URL and Token.") try: response = _request("GET", url, data=None, headers=mas_common_headers) service_name = response["trust_preauthtoken"][0]["service_name"] token = response["trust_preauthtoken"][0]["token"] api_gateway_url = response["trust_preauthtoken"][0]["api_gateway_url"] except Exception as e: logger.debug("Fetching of the Service URL Passed with error. %s" % (str(e))) raise e ''' Running the register agent command using the values we retrieved earlier ''' try: registeragent_command = "registeragent -serviceurl "+api_gateway_url+" -activationcode "+service_name+";"+token file_run_command = "/var/python/bin/python2.7 /mps/register_agent_cloud.py "+registeragent_command logger.debug("Executing registeragent command: %s" % (file_run_command)) os.system(file_run_command) except Exception as e: logger.debug("Agent Registeration failed with error: %s" % (str(e))) raise e <!--NeedCopy-->
Dieses Skript ruft die Authentifizierungsdetails vom AWS Secrets Manager ab und führt das
deployment.py
Skript aus, um den Agenten bei der NetScaler Console zu registrieren.
Hinweis
Während Sie öffentliche IP-Adressen automatisch zuweisen können, können Sie auch elastische IP-Adressen zuweisen. Das Zuweisen einer elastischen IP-Adresse ist erforderlich, wenn NAT-Gateway nicht konfiguriert ist.
Wenn die Elastic IP-Adresse in diesem Schritt nicht festgelegt ist, können Sie dies weiterhin auf der EC2-Konsole tun. Sie können eine neue elastische IP-Adresse erstellen und diese mithilfe der Instanz-ID oder ENI-ID dem NetScaler Agent zuordnen.
Klicken Sie auf “ Speicher hinzufügen”
-
-
Konfigurieren Sie auf der Seite “ Speicher hinzufügen “ die Einstellungen des Speichergeräts für die Instanz und klicken Sie auf Weiter: Tags hinzufügen.
-
Definieren Sie auf der Seite Add Tags das Tag für die Instanz und klicken Sie auf Weiter: Security Group konfigurieren.
-
Fügen Sie auf der Seite Configure Security Group Regeln hinzu, um bestimmten Traffic zu Ihrer Instanz zu erlauben, und klicken Sie auf Review and Launch
-
Überprüfen Sie auf der Seite Review Instanz Launch die Instanz-Einstellungen und klicken Sie auf Starten.
-
Erstellen Sie im Dialogfeld Wählen Sie ein vorhandenes Schlüsselpaar aus oder erstellen Sie ein neues Schlüsselpaar ein Schlüsselpaar. Sie können auch aus den vorhandenen Schlüsselpaaren wählen.
Akzeptieren Sie die Bestätigung und klicken Sie auf Launch Instanzen.
Der Bereitstellungsprozess kann etwa 10 bis 15 Minuten dauern. Nachdem die Bereitstellung erfolgreich abgeschlossen wurde, können Sie Ihre virtuelle NetScaler Agent-Maschine in Ihrem AWS-Konto anzeigen.