Falls Sie wissen möchten, wie Sie Ihre eigene Private-Cloud-Infrastruktur aufbauen können – wir erklären Ihnen genau, wie man das mit Rancher und Docker macht. In diesem Schritt-für-Schritt-Tutorial führen wir Sie durch den genauen Prozess, den die DevOps-Berater von K&C verwenden, um eine private Cloud in einem Rechenzentrum mit einem Docker- und Rancher-Stack aufzubauen.
Wann funktioniert IT-Outsourcing?
Und wann nicht ?
Hybride Cloud-Konfigurationen, bei denen Arbeitslasten zwischen öffentlichen und privaten Clouds aufgeteilt werden, werden immer häufiger eingesetzt. Dies ist insbesondere auf Unternehmensebene der Fall, wo die Sensibilität der Daten, die Einhaltung von Vorschriften und andere Sicherheitsbedenken oft bedeuten, dass bestimmte Lasten eine öffentliche Cloud-Einrichtung einfach nicht nutzen können.
Aber es gibt noch eine Reihe anderer Gründe, warum eine private Cloud entweder eine Notwendigkeit oder eine Präferenz sein kann. Für ein DevOps-Softwareentwicklungsteam kann eine private Cloud als Entwicklungs- und Testumgebung als Teil einer CI/CD-Pipeline verwendet werden.
Private Clouds können auch verwendet werden, um Legacy-Anwendungen am Laufen zu halten, wenn es nicht sinnvoll ist, sie für die Kompatibilität mit einer öffentlichen Cloud-Plattform zu aktualisieren. Eine Private Cloud kann auch vollständig angepasst werden, um bestimmte Arbeitslasten optimal auszuführen, insbesondere solche, die mit Big Data zu tun haben.
Was auch immer Ihre Gründe für den Aufbau einer Private-Cloud-Umgebung sind, für uns bei K&C ist es vor allem eine Entwicklungs- und Testphase in einer DevOps-CI/CD-Pipeline, und dieses Schritt-für-Schritt-Tutorial sollte einen guten Ausgangspunkt für das Vorgehen bieten. Sie benötigen ein solides Grundwissen über Docker und Rancher, um Ihre eigene Private Cloud zu erstellen, selbst wenn Sie die folgenden Anweisungen befolgen.
Wir werden den folgenden Cloud-nativen Tech-Stack verwenden, um unsere rechenzentrumsbasierte private Cloud aufzubauen:
Für den Aufbau der Basisinfrastruktur (ohne NA) benötigen wir Folgendes:
Name
IP DNS
WebServer
192.168.11.140 web.cloud.infra
CloudMaster
192.168.11.72 master1.cloud.infra
CloudClient1
192.168.11.73 ci1.cloud.infra
CloudClient2 192.168.11.132 ci2.cloud.infra
* The IPs shown were taken from a real system and are required to match screenshots.
Die Cloud wird innerhalb unseres Netzwerks aufgebaut, wofür eine eigene Zone erstellt werden soll.
Bearbeiten Sie die Konfigurationsdatei named:
nano /etc/named/cloud.zones
zone "cloud.infra" { type master; file "/var/named/master/cloud.infra"; };
Erstellen Sie nun eine zone Datei (zone file):
K&C - Wir schaffen innovative Tech-Lösungen seit über 20 Jahren.
Kontaktieren Sie uns, um Ihre individuellen Bedürfnisse oder Ihr nächstes Projekt zu diskutieren.
nano /var/named/master/cloud.infra
$TTL 3600 @ IN SOA ns.cloud.infra. hostmaster.cloud.com. ( 2015111800 ; Serial 28800 ; Refresh 7200 ; Retry 604800 ; Expire 3600 ) ; Default Minimum TTL IN NS ns.cloud.infra. master1 A 192.168.11.72 ci1 A 192.168.11.73 ci2 A 192.168.11.132 web A 192.168.11.140
Und Named neustarten
service named restart
DNS wurde eingerichtet, also fahren Sie mit der Erstellung eines Maser-Servers fort
– Rancher-server
– Consul-server
– Jenkins
Starten Sie den Container mit Rancher
sudo docker run -d --restart=always -p 8080:8080 rancher/server
Unser Rancher Server ist verfügbar unter https://master1.cloud.infra:8080.
1. Admin -> Access Control
2. Select LOCAL
3. Add a new user
1. Gehen Sie auf den tab: Default
2. Klicken Sie auf: Add Environment
3. Wählen Sie aus: Cattle
4. Geben Sie den Namen ein und fügen Sie Benutzer hinzu
Erstellen Sie einen API key
1. Gehen Sie auf dem das tab: API
2. Generieren und notieren Sie Ihre Werte
Lassen wir Rancher erst einmal außen vor und kommen bei der Einrichtung von Clients wieder darauf zurürck
Staren Sie den Container mit consul-server
docker run -d -p 8500:8500 -p 53:8600/udp -p 400:8400 -p 8300:8300 -p 8301:8301 -p 8302:8302 --name=consul gliderlabs/consul-server -bootstrap
Consul ist (wird) verfügbar unter https://master1.cloud.infra:8500
docker run -d -p 32769:8080 jenkins
Jenkins ist (wird) verfügbar unter https://master1.cloud.infra:32769
Starten Sie zwei Docker-Container auf CloudClient1 und CloudClient2
– Rancher client
– Consul registrator
Starten von Containern mit Rancher und Consul auf CloudClient1
sudo docker run -e CATTLE_AGENT_IP="192.168.11.73" -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.2 http://master1.cloud.infra:8080/v1/scripts/E0EC8B33530A5512C0C7:q2qdFb3XY4
docker run -d -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip 192.168.11.73 consul://192.168.11.72:8500
Führen Sie dasselber auf CloudClient2 durch, ändern Sie aber die IP-Adressen
sudo docker run -e CATTLE_AGENT_IP="192.168.11.132" -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.0.2 http://master1.cloud.infra:8080/v1/scripts/E0EC8B33530A5512C0C7:1473764400000:jq2qdFb3XY4
docker run -d -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip 192.168.11.132 consul://192.168.11.72:8500
Wen alles erfoglreich abgeschlossen wurde, werden wir unsere Server in Rancher sehen
* Bitte ignorieren Sie die gestarteten Dienste
Um ein Projekt in Rancher zu erstellen, müssen Sie eine Datei docker-compose v1 erstellen, Daten aus der API hinzufügen und Rancher-compose herunterladen.
*Rancher dammelt keine Projekte von Dockerfile, sondern lädt sie von der Registry herunter. Aus diesem Grund sammeln Sie entweder lokal oder von einem beliebigen Host
nano docker-compose-rancher.yml
homepage: image: registry.cloud.infra/homepage ports: - "3000" links: - mongo environment: - MONGO_URL=mongodb://mongo:27017/homepage-dev - ROOT_URL=http://localhost - MAIL_URL=smtp://some.mailserver.com:25 labels: io.rancher.container.pull_image: always mongo: image: mongo:3.2.6 command: mongod --smallfiles volumes: - /srv/docker/homepage/mongo:/data/db labels: io.rancher.container.pull_image: always
Erstellen Sie außerdem ein einfaches Build-Skript
nano new.sh
#!/bin/bash IMAGE_NAME="registry.cloud.infra/homepage" case "${1}" in --build | -b ) docker build --no-cache --rm -t ${IMAGE_NAME} . ;; --run | -r ) docker run -d -P -t ${IMAGE_NAME} ;; --help | -h ) printf "usage: ${0} [arg]n--build,-btBuild imagen--run,-rtRunn" ;; * ) printf "Print ${0} --help for helpn" ;; esac
Globale Variablen exportieren
export RANCHER_URL='https://master1.cloud.infra:8080/v1/' export RANCHER_ACCESS_KEY='access' export RANCHER_SECRET_KEY='secret'
Und laden Sie Rancher-compose herunter (Link in der rechten unteren Ecke in Racher)
rancher-compose --file docker-compose-rancher.yml create
Start the project
rancher-compose --file docker-compose-rancher.yml up -d
Wenn alles erfolgreich abgeschlossen wurde, wird in Rancher folgendes angezeigt:
In Consul werden wir auch Folgendes sehen:
NGINX installieren und consul-template herunterladen
yum install nginx wget https://releases.hashicorp.com/consul-template/0.15.0/
Consul-template für NGINX erstellen
nano /etc/nginx/conf.d/homepage.ctmpl
server { listen 80; server_name homepage.cloud.infra; client_max_body_size 4M; proxy_cache one; location / { proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; {{range service "homepage-3000" }} proxy_pass http://{{.Address}}:{{.Port}};{{end}} proxy_read_timeout 90; proxy_cache_valid 200 10m; proxy_cache_methods GET HEAD POST; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
NGINX und consul-template starten
service nginx start consul-template -consul master1.cloud.infra:8500 -template "/etc/nginx/conf.d/nginx.ctmpl:/etc/nginx/conf.d/nginx.conf:service nginx restart"
Jetzt verfolgt Consul-template die Änderungen im Consul-server und schreibt die Daten in die NGINX-Konfigurationen um.
Der letzte Feinschliff in unserer Cloud ist die kontinuierliche Integration.
Zu diesem Zweck fügen Sie der Konfiguration in Jenkins Werte hinzu, die Sie von der API erhalten haben
Erstellen Sie einen Job und fügen Sie Folgendes in das Element shell exec ein
cd $JOB_NAME; ./new.sh -b docker push registry/homepage rancher-compose --file docker-compose-rancher.yml up --force-upgrade --pull --confirm-upgrade -d
Sobald Sie sich Schritt für Schritt durch den Prozess gearbeitet haben, ist Ihre private Cloud einsatzbereit. Ihr Cloud-Projekt kann nun mit einem Mausklick bereitgestellt werden. Die Container befinden sich auf den am wenigsten belasteten Hosts und sind über das interne Rancher-Netzwerk miteinander verbunden.
Wir sind nicht auf alle Funktionen dieser DevOps-Private-Cloud-Einrichtung im Detail eingegangen, aber Sie sollten einen guten Überblick über die Kernfunktionen haben.
K&C - Wir schaffen innovative Tech-Lösungen seit über 20 Jahren.
Kontaktieren Sie uns, um Ihre individuellen Bedürfnisse oder Ihr nächstes Projekt zu diskutieren.