serie laico ventana acoplable | nodo único Nginx + Springboot combate

Acoplable ha estado en el mercado desde hace muchos años, no es nada nuevo, y muchas empresas o desarrolladores de muchos de los estudiantes no tienen contacto hace, pero no muchas personas que tienen experiencia en la operación práctica, el énfasis principal de esta serie práctica, tratar de hablar de productos secos, sobre la base de yo entiendo el concepto oficial elaborada específica puede referirse al tutorial oficial, porque esta serie de tutoriales tiene una cierta dependencia de la sección anterior, y aprender todos los capítulos anteriores.

Esta serie de tutoriales de navegación:
Docker serie laico | contenedor primera experiencia
serie acoplable laico | Imagen primera experiencia
acoplable serie laico | a un nodo contenedor de comunicación de la red
acoplable serie laico | contenedor de datos de persistencia

Objetivo del curso:

  • Aprender estructuras de contenedores nginx
  • Aprender springboot reflejo configuración y dockerfile
  • Aprender ventana acoplable configuración de red envase
  • arreglo de volumen de contenedores OK
  • Nginx proxy inverso para hacer comprender el nombre del contenedor
  • Aprender servicios de crédito a la acumulación springboot

preparatorio

1. Descargar MySQL

docker pull mysql

2. Descargar nginx

docker pull nginx

3. Clonación de credit-facility-serviceun uso posterior demostración desplegado, utilizando dockeruna rama

git clone https://github.com/EvanLeung08/credit-facility-service.git

4. máquina virtual, instalar el entorno de centos y cargador de muelle Salida del primer capítulo, en este capítulo se ha instalado por defecto centos y estibador
acoplable serie laico | contenedor primera experiencia


objetivo real

  • Crear una red de estibador, establecer una subred IP estática168.18.0.0/24
  • servicios de crédito a grupos de construcción
    • [Servicios] de crédito de crédito-facility01 - 168.18.0.10
    • [Servicios] de crédito de crédito-facility02 - 168.18.0.11
    • [Servicios] de crédito de crédito-facility03 - 168.18.0.12
  • estructuras de base de datos MySQL, y crear servicios relacionados con el crédito de mesa
    • [Servicio MySQL] de crédito-instalación-db - 168.18.0.4
  • Build Service Nginx, y la carga configurar el equilibrio de reglas
    • [Servicio de Nginx] de crédito-instalación-nginx - 168.18.0.5
  • servidor DNS utilizando las características acoplables construidos entre el contenido de la red ventana acoplable está en comunicación a través del nombre de la embarcación
  • operaciones comerciales a través de acceso del navegador contoneo

La estructura general de

la imagen final


medidas prácticas

Crear una red acoplable

Aquí la primera parte de este proyecto para crear una red privada, la cara del contenedor se les asigna una subred IP estática, de fácil mantenimiento

1. docker networkCrear una red

[root@localhost ~]# docker network create --subnet=168.18.0.0/24 credit-facility-net
fab1ac021f2f0d6acabd1fdfba10959fdd6797a5adc3fb15ebef85da922dc4b9

Aquí hemos creado una red, llamada credit-facility-net, y especificar un segmento de red IP de subred168.18.0.0/24

2. Comprobar el sistema de ordenador central Centos IP de la red externa, para su posterior aplicación para acceder a una máquina virtual utilizando la máquina

[root@localhost credit-facility]# ip add
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ba:0a:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.101.23/24 brd 192.168.101.255 scope global noprefixroute dynamic eth1
       valid_lft 76364sec preferred_lft 76364sec
    inet6 fe80::a00:27ff:feba:a28/64 scope link 
       valid_lft forever preferred_lft forever

Aquí Centos IP es el sistema 192.168.101.23de recordar su IP del equipo anfitrión, necesidad de ser probado más tarde utiliza con frecuencia

estructuras de contenedores Mysql

Con el fin de facilitar la reutilización posterior, habrá primero crear un volumen de datos de persistencia de MySQL

1. Crear un volumen estibador, llamadocredit-facility-volume

docker volume create credit-facility-volume

2. Crear contenedor de MySQL

[root@localhost ~]# docker run -d --name credit-facility-db -v credit-facility-volume:/var/lib/mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=evan123 --net=credit-facility-net --ip 168.18.0.4 mysql
9502bd3d4823cb61559647f60f20a5f7ce153b743701129544f1208b66d59d6a

Creado aquí un credit-facility-dbcontenedor, la ruta de almacenamiento de datos principal Mysql especifica un credit-facility-volumedirectorio, el puerto 3306 se asigna al puerto host 3301, se añade la red a la vasija credit-facility-net, y asigna una dirección IP estática168.18.0.4

3. Vaya al contenedor y crear una instancia de base de datos MySQL

[root@localhost /]# docker exec -it credit-facility-db bash
root@9502bd3d4823:/# mysql -uroot -pevan123
mysql> create schema db_credit_facility collate utf8mb4_0900_ai_ci;
Query OK, 1 row affected (0.00 sec)

mysql> use db_credit_facility;
Database changed
mysql> exit
Bye

Aquí hemos creado una instancia de base de datos llamadadb_credit_facility

4. Crear las aplicaciones tabla asociada
tablas relacionadas almacenados en el crédito-instalación-servicio-infraestructura / recursos / db / schema.sql, siguen los de preparación de las instrucciones descargadas desde github credit-facility-serviceproyecto

5. Por docker inspectver la información de contenedor

docker inspect credit-facility-db
        "Mounts": [
            {
                "Type": "volume",
                "Name": "credit-facility-volume",
                "Source": "/var/lib/docker/volumes/credit-facility-volume/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ]

      "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "1ef5e3b28a7cb2c715aca8a122ce2caa50c41b29c53e04006885dd2114f34e8f",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "3306/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "3301"
                    }
                ],
                "33060/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/1ef5e3b28a7c",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "credit-facility-net": {
                    "IPAMConfig": {
                        "IPv4Address": "168.18.0.4"
                    },
                    "Links": null,
                    "Aliases": [
                        "9502bd3d4823"
                    ],
                    "NetworkID": "fab1ac021f2f0d6acabd1fdfba10959fdd6797a5adc3fb15ebef85da922dc4b9",
                    "EndpointID": "af76ebce29de84dfb2e48d44e3baa8b42923e698714b7774407915b02e55e1b4",
                    "Gateway": "168.18.0.1",
                    "IPAddress": "168.18.0.4",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:a8:12:00:04",
                    "DriverOpts": null
                }
            }

Puede verse en la salida anterior, una ruta de almacenamiento del recipiente se ha montado con éxito para el directorio del servidor fregadero /var/lib/docker/volumes/credit-facility-volume/_data, el contenedor ha proporcionado con éxito ip168.18.0.4

servicios de crédito a grupos de construcción

La cantidad del servicio es un proyecto Springboot, su proceso de construcción como proyecto Springboot ordinaria

1. Antes de instalar, por favor pase mvn clean -U installen el proyecto de construcción de una, asegúrese de que se puede construir un éxito, la atención al interruptor para el proyectodocker分支

2. Modificar la configuración de base de datos application.properties, de forma predeterminada, no necesita ser modificado debido a que la base de datos de anfitrión mí aquí se accede a través del nombre del buque, el archivo de configuración almacenado en el camino start/resourcesbajo

spring.datasource.url = jdbc:mysql://credit-facility-db:3306/db_credit_facility?useUnicode=true&characterEncoding=utf8

Si necesita ejecutar de forma local, la base de datos puede ser modificado para albergar <Centos ip>:3301tales como:

spring.datasource.url = jdbc:mysql://192.168.101.23:3301/db_credit_facility?useUnicode=true&characterEncoding=utf8

3. Crear un nombre en el ordenador central Centos como una ventana acoplable credit-facilitycarpeta

He creado una ruta de la carpeta de la siguiente manera:

[root@localhost credit-facility]# pwd
/usr/local/credit-facility

4. En credit-facilityla carpeta, cree un archivo Dockerfile para su uso posterior cantidad de servicio de creación de la imagen

En credit-facility-seviceun proyecto en la dockerfilecarpeta, sólo hay dentro DockerfileCopia el archivo en el sistema Centos credit-facility's carpeta puede ser

FROM openjdk:8-jre-alpine
MAINTAINER evan
LABEL name="credit-facility" version="1.0" author="evan"
COPY start-1.0.0-SNAPSHOT.jar credit-facility-service.jar
CMD ["java","-jar","credit-facility-service.jar"]

En mis Centos nativos se carga en el sistema bajo el directorio especificado por SFTP, podemos utilizar algunas de las herramientas se pueden cargar directamente

evans-MacBook-Pro:target evan$ sftp [email protected]
[email protected]'s password: 
Connected to [email protected].
sftp> put Dockerfile /usr/local/credit-facility
Uploading Dockerfile to /usr/local/credit-facility/Dockerfile

5. etiquetada paquete frasco para la cantidad de servicio y de carga

  • Por mvn clean package -Dmaven.test.skip=truecomando de empaquetado proyecto, se encuentra la puesta en 1.0.0-SNAPSHOT.jar al inicio / destino

  • Centos subido a la credit-facilitysiguiente carpeta

Ibid., También he subido desde el nivel local al servidor a través de SFTP

evans-MacBook-Pro:target evan$ sftp [email protected]
[email protected]'s password: 
Connected to [email protected].
sftp> put start-1.0.0-SNAPSHOT.jar /usr/local/credit-facility
Uploading start-1.0.0-SNAPSHOT.jar to /usr/local/credit-facility/start-1.0.0-SNAPSHOT.jar
start-1.0.0-SNAPSHOT.jar                                                          100%   43MB 168.1MB/s   00:00    
sftp> 
  • En este punto, el sistema Centos credit-facilityarchivos de la carpeta no debe haber dos archivos
[root@localhost credit-facility]# ls
Dockerfile  start-1.0.0-SNAPSHOT.jar

6. Crear una imagen previamente creada en base Dockfile

[root@localhost credit-facility]# docker build -t credit-facility-image .

7. Comprobar existente refleja

[root@localhost credit-facility]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
credit-facility-image     latest              d0536e7c7e78        3 hours ago         130MB
nginx                     latest              a1523e859360        3 days ago          127MB

8. Cree tres líneas que sirven instancia del contenedor

[root@localhost credit-facility]# docker run -d --name credit-facility01 -p 8081:8080  --net=credit-facility-net --ip 168.18.0.10 credit-facility-image
4ffc98a8c73a4a7afe3737a8ace18d4d053cf8573ab61179963942f3b01104cb
[root@localhost credit-facility]# docker run -d --name credit-facility02 -p 8082:8080  --net=credit-facility-net --ip 168.18.0.11 credit-facility-image
a01e3613ac2a9e995fad644c29a5fd991e762008ff0dc8a3e5b1ab2e86d52924
[root@localhost credit-facility]# docker run -d --name credit-facility03 -p 8083:8080  --net=credit-facility-net --ip 168.18.0.12 credit-facility-image
9dc0ba15542ed29501a0d8540f0f226814e29ffb93c9ab9e06461c01b9f7c049

Lo anterior tres ejemplos fueron creados crédito facility01, el crédito-facility02, crédito facility03, unirse a credit-facility-netla red, y la ip y se designan 168.18.0.12 168.18.0.10,168.18.0.11

9. Aprobación de docker logs credit-facility01vista del recipiente de registro de inicio

10. Un navegador mediante pruebas en la máquina, consulte la siguiente interfaz de contoneo

  • http://192.168.101.23:8081/swagger-ui.html
  • http://192.168.101.23:8082/swagger-ui.html
  • http://192.168.101.23:8083/swagger-ui.html

Build Service Nginx

Al igual que antes, invierto nombre del proxy en lugar de por la dirección IP buque portacontenedores porque estibador de red personalizada activada de forma predeterminada una función de servicio de DNS, la comunicación a través del nombre del buque, puede ser más flexible, sin específica IP Binding

1. Sistema de Contos credit-facilityen la carpeta, cree una nueva carpeta llamadanginx

[root@localhost credit-facility]# mkdir nginx
[root@localhost credit-facility]# ls
Dockerfile  nginx  start-1.0.0-SNAPSHOT.jar

2. Vaya a la carpeta de nginx, crear un nginx.confarchivo, de la siguiente manera

user nginx;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;


    server {
        listen 80;
        location / {
         proxy_pass http://balance;
        }
    }

    upstream balance{
       server credit-facility01:8080;
       server credit-facility02:8080 ;
       server credit-facility03:8080;
    }
    include /etc/nginx/conf.d/*.conf;
}

Aquí enrutamiento configuración de reglas de tres líneas que sirven nombre del contenedor en lugar de la dirección IP

3. Crear un contenedor de nginx

[root@localhost nginx]# docker run -d --name credit-facility-nginx -p 80:80 -v /usr/local/credit-facility/nginx/nginx.conf:/etc/nginx/ningx.conf --network=credit-facility-net --ip 168.18.0.5 nginx
60fc13c1a8d425263d6a90eb34a309ad5e5d3d5517598b8026d7326e9925b9f7

Aquí hemos creado un directorio llamado credit-facility-nginxcontenedor de nginx, especificando el sistema de asignación de puertos 80, es más importante aquí es copiar /usr/local/credit-facility/nginx/nginx.confa /etc/nginx/nginx.conf, e ip distribución168.18.0.5

4. Verificar el servicio nginx en un navegador, introduzca 192.168.101.23

este tiempo Nginx ha construido con éxito

Verificar la cantidad de servicio

1. En la entrada del navegador http://192.168.101.23/swagger-ui.html, se puede ver la siguiente interfaz

2. Uso de una primera prueba de interfaz, la solicitud de datos de entrada siguiente

{
	"registrationLimitCO": {
		"applicationId": "1111",
		"userId": 1111,
		"quotaLimit": 10000,
		"productCode": "tb",
		"expirationTime": "2030-01-01",
		"accountType": 1
	}

}

3. Comprobar los resultados de la ejecución para ver si el almacenamiento de éxito

puede verse a partir de los resultados de lo anterior, el importe de la solicitud de servicio se ha procesado correctamente, y el almacenamiento de éxito, una hora para ver el siguiente registro de base de datos a la base de datos


apéndice


Para más detalles, puede centrarse en mi Gitchat personal, el intercambio
Aquí Insertar imagen Descripción

Publicados 121 artículos originales · ganado elogios 330 · Vistas de 400.000 +

Supongo que te gusta

Origin blog.csdn.net/Evan_Leung/article/details/104584572
Recomendado
Clasificación