From d8962f409791462eca5904f5d2211038da916eb7 Mon Sep 17 00:00:00 2001 From: cs131024_Konstantinos_Fylaktopoulos Date: Tue, 9 Jun 2020 13:10:03 +0000 Subject: [PATCH] Upload files to 'adoc&html_files' --- adoc&html_files/DOC.html | 560 +++++++++++++++++++++++++++ adoc&html_files/INSTALL.html | 543 ++++++++++++++++++++++++++ adoc&html_files/README.html | 728 +++++++++++++++++++++++++++++++++++ 3 files changed, 1831 insertions(+) create mode 100644 adoc&html_files/DOC.html create mode 100644 adoc&html_files/INSTALL.html create mode 100644 adoc&html_files/README.html diff --git a/adoc&html_files/DOC.html b/adoc&html_files/DOC.html new file mode 100644 index 0000000..f7d6968 --- /dev/null +++ b/adoc&html_files/DOC.html @@ -0,0 +1,560 @@ + + + + + + + +DOC + + + + + +
+
+
+
+

Αφού έχουμε εγκαταστήσει τα απαραίτητα προγράμματα δημιουργούμε το Makefile το οποίο θα περιέχει τις εντολές δημιουργίας του image καθώς και το deploy του docker-compose στο swarm.

+
+
+

To Makefile περιέχει τις εντολές:

+
+
+
+
echo -e "\e[31mBuilding our nginx image!"
+sleep 2
+echo -e "\e[39m"
+docker build -f Dockerfile -t anginx .
+echo -e "\e[31mDeploying service"
+sleep 2
+echo -e "\e[39m"
+docker stack deploy -c docker-compose.yml wordpress
+
+
+
+

Στη συνέχεια εκτελούμε την εντολή chmod +x Makefile ώστε να δώσουμε τα απραίτητα δικαιώματα στο αρχείο.

+
+
+

Για να το εκτελέσουμε τρέχουμε το ./Makefile

+
+
+ + + + + +
+
Tip
+
+O manager ελέγχει ότι όλες οι υπηρεσίες τρέχουν σωστά με την εντολή docker service ls +
+
+
+
+
+

Testing

+
+
+

WordPress

+
+

Προκειμένου να δούμε real-time τα αποτελέσματα του WordPress, βάζουμε στον browser μια από τις ακόλουθες IPv4:

+
+
+

83.212.77.39

+
+
+

83.212.77.27

+
+
+

83.212.77.24

+
+
+

83.212.77.25

+
+
+
+ecBF9WN +
+
+
+
+

PHPMyAdmin

+
+

Προκειμένου να δούμε real-time τα αποτελέσματα του PHPMyAdmin, βάζουμε στον browser μια από τις ακόλουθες IPv4:

+
+
+

83.212.77.39:8080

+
+
+

83.212.77.27:8080

+
+
+

83.212.77.24:8080

+
+
+

83.212.77.25:8080

+
+
+
+BG2Vxt9 +
+
+
+
+

Minio

+
+

Προκειμένου να δούμε real-time τα αποτελέσματα του Minio, βάζουμε στον browser μια από τις ακόλουθες IPv4:

+
+
+

83.212.77.39:9001-9004

+
+
+

83.212.77.27:9001-9004

+
+
+

83.212.77.24:9001-9004

+
+
+

83.212.77.25:9001-9004

+
+
+
+Kaz7KTR +
+
+
+
+
+
+ + \ No newline at end of file diff --git a/adoc&html_files/INSTALL.html b/adoc&html_files/INSTALL.html new file mode 100644 index 0000000..9483177 --- /dev/null +++ b/adoc&html_files/INSTALL.html @@ -0,0 +1,543 @@ + + + + + + + +INSTALL + + + + + +
+
+
+
+

Για την εκτέλεση της εργαστηριακής άσκησης χρησιμοποιήσαμε τις υπηρεσίες του ~okeanos

+
+
+

Πιο συγκεκριμένα, χρησιμοποιήσαμε ένα VM με τα ακόλουθα χαρακτηριστικά

+
+
+
+GwwJuvU +
+
+
+
+MH8dQzS +
+
+
+
+
+
+

Docker Swarm Initialization

+
+
+

Προκειμένου να δημιουργήσουμε το σμήνος (swarm) ο manager έτρεξε την εντολή

+
+
+
+
docker swarm init --advertise-addr 83.212.77.39
+
+
+
+

Οι workers για να συνδεθούν στο swarm (σμήνος) πρέπει να εκτελέσουν

+
+
+
+
docker swarm join --token SWMTKN-1-433emh74ij7y4loql5z5js9t7ptxkfdgwwsdzq18p3ag7uxswt-9ah0x5cwf6xnl1djgyet0x si 83.212.77.39:2377
+
+
+
+ + + + + +
+
Tip
+
+Για να εμφανιστεί το join token ο manager τρέχει την εντολή +
+
+
+
+
docker swarm join-token worker
+
+
+
+
+
+

Working Directory

+
+
+

Στη συνέχεια δημιουργούμε το working directory μας με την εντολή

+
+
+
+
mkdir docker
+
+
+
+ + + + + +
+
Tip
+
+Αν κάνουμε pwd θα δούμε ότι βρισκόμαστε στο directory /home/user/docker +
+
+
+

Όλοι οι χρήστες θα πρέπει να έχουν στον συγκεκριμένο φάκελο τα αρχεία nginx.conf & cert.pem & key.pem

+
+
+
+
|_ home
+  |_ user
+    |_ docker
+        |_ nginx.conf
+        |_ cert.pem
+        |_ key.pem
+
+
+
+
+
+ + \ No newline at end of file diff --git a/adoc&html_files/README.html b/adoc&html_files/README.html new file mode 100644 index 0000000..98c5175 --- /dev/null +++ b/adoc&html_files/README.html @@ -0,0 +1,728 @@ + + + + + + + +README + + + + + +
+
+
+
+

Για να συνδεθούμε στην εικονική μηχανή τρέχουμε την εντολή.

+
+
+
+
ssh user@<ip>
+password: ****
+
+
+
+
+P4ViujF +
+
+
+ + + + + +
+
Caution
+
+Πρέπει να είστε συνδεδεμένοι στο VPN - Πανεπιστημίου Δυτικής Αττικής +
+
+
+
+
+

Τεχνολογίες

+
+
+

Για την υλοποίηση της εργασίας χρησιμοποιήθηκε η τεχνολογία Docker το οποίο εικονικοποιεί σε επίπεδο λειτουργικού συστήματος.

+
+
+
+
sudo apt-get update
+sudo apt install docker.io
+sudo systemctl start docker
+sudo systemctl enable docker
+
+
+
+ + + + + +
+
Tip
+
+Για να ελέγξουμε ότι η υπηρεσία του Docker λειτουργεί εκτελούμε την εντολή +
+
+
+
+
docker --version
+
+
+
+
+
+

Εκτέλεση Εργασίας

+
+
+

Αρχικά, δημιουργούμε το δικό μας image για τον nginx ανάλογα με τις ανάγκες της υπηρεσίας μας.

+
+
+

Το αποθηκεύουμε σε ένα αρχείο ονομάζοντας το Dockerfile

+
+
+

Επόμενο βήμα είναι η εκτέλεση της παρακάτω εντολής για τη δημιουργία του image

+
+
+
+
docker build -f Dockerfile -t anginx .
+
+
+
+ + + + + +
+
Note
+
+
+

Οptions:

+
+
+
    +
  • +

    -f προσδιορίζει το αρχείο για το build

    +
  • +
  • +

    -t tag (το όνομα του image)

    +
  • +
  • +

    "." είναι το current directory

    +
  • +
+
+
+
+
+

Όλα τα services τα οποία θα τρέξουν στην εργασία μας βρίσκονται στο αρχείο docker-compose.yml

+
+
+

Αναλυτικά:

+
+
+

Nginx

+
+
+
nginx:
+    image: anginx #image from docker building my Dockerfile (docker build -f Dockerfile -t anginx .)  // (1)
+    container_name: production_nginx // (2)
+    volumes:  // (3)
+      - /home/user/docker/nginx.conf:/etc/nginx/conf.d/default.conf
+      - /home/user/docker/cert.pem:/etc/nginx/public.crt
+      - /home/user/docker/key.pem:/etc/nginx/private.key
+    ports: // (4)
+      - 9080:80
+      - 9443:443
+    networks: // (5)
+      - main_net
+
+
+
+
+

MariaDB

+
+
+
mariadb:
+    image: mariadb // (1)
+    container_name: mariadb // (2)
+    volumes:  // (3)
+      - db_data:/var/lib/mysql
+    environment: // (8)
+       MYSQL_ROOT_PASSWORD: wordpress
+       MYSQL_DATABASE: wordpress
+    networks: // (5)
+      - main_net
+
+
+
+
+

WordPress

+
+
+
wordpress:
+    image: wordpress:latest // (1)
+    container_name: wordpress // (2)
+    restart: always
+    deploy: #create replicas with specific resources // (6)
+      mode: replicated
+      replicas: 2
+#      max_replicas_per_node: 1
+      resources:
+        limits: #max resources
+          cpus: '0.50'
+          memory: 50M
+        reservations: #default resources
+          cpus: '0.25'
+          memory: 20M
+    ports: // (4)
+      - 80:80
+    volumes:  // (3)
+      - wp-app:/var/www/html
+    environment: // (8)
+      WORDPRESS_DB_HOST: mariadb:3306
+      WORDPRESS_DB_NAME: wordpress
+      WORDPRESS_DB_USER: root
+      WORDPRESS_DB_PASSWORD: wordpress
+    networks: // (5)
+      - main_net
+    depends_on:  // (7)
+      - mariadb
+
+
+
+
+

PHPMyAdmin

+
+
+
phpmyadmin:
+    image: phpmyadmin/phpmyadmin // (1)
+    container_name: phpmyadmin // (2)
+    deploy: // (6)
+      mode: replicated
+      replicas: 2
+#      max_replicas_per_node: 1
+      resources:
+        limits:
+          cpus: '0.50'
+          memory: 50M
+        reservations:
+          cpus: '0.25'
+          memory: 20M
+    environment: // (8)
+      PMA_HOST: mariadb
+      MYSQL_ROOT_PASSWORD: wordpress
+      PMA_PORT: 3306
+    ports: // (4)
+      - 8080:80
+    networks: // (5)
+      - main_net
+
+
+
+
+

Minio

+
+
+
minio1:
+    image: minio/minio:RELEASE.2020-04-10T03-34-42Z // (1)
+    hostname: minio1
+    volumes:  // (3)
+      - minio1-data:/export
+    ports: // (4)
+      - "9001:9000"
+    networks: // (5)
+      - minio_distributed
+    deploy: // (6)
+      restart_policy:
+        delay: 10s
+        max_attempts: 10
+        window: 60s
+      placement:
+        constraints:
+          - node.labels.minio1==true
+    command: server http://minio{1...4}/export
+    environment: // (8)
+       MINIO_ACCESS_KEY: AKIAIOSFODNN7EXAMPLE
+       MINIO_SECRET_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
+    # secrets:
+      # - secret_key
+      # - access_key
+    healthcheck:
+      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
+      interval: 30s
+      timeout: 20s
+      retries: 3
+
+
+
+
+

Configuration Options:

+
+
    +
  1. +

    image: Το image file από το οποίο θα τρέξει το service

    +
  2. +
  3. +

    container_name: Είναι το όνομα του service

    +
  4. +
  5. +

    volumes: "Mount host paths or named volumes from our VM to the service"

    +
  6. +
  7. +

    ports: Είναι τα ports τα οποία κάνουμε expose "στον έξω" κόσμο

    +
  8. +
  9. +

    networks: Είναι το εικονικό δίκτυο στο οποίο θα τρέξει το service

    +
  10. +
  11. +

    deploy: Κάνουμε specify τα resources και τον αριθμό των replicas που θα τρέξουν

    +
  12. +
  13. +

    depends_on: "Express dependency between services"

    +
  14. +
  15. +

    environment: "Add environment variables"

    +
  16. +
+
+
+
+
+
+ + \ No newline at end of file