Instalación de Nacos y construcción de clusters.

1.Instalación de Windows

Durante la etapa de desarrollo, se puede instalar en una sola máquina.

1.1. Descargue el paquete de instalación

En la página GitHub de Nacos, se proporciona un enlace de descarga para descargar el servidor Nacos compilado o el código fuente:

Página de inicio de GitHub: https://github.com/alibaba/nacos

Página de descarga de la versión de GitHub: https://github.com/alibaba/nacos/releases

Como se muestra en la imagen:

Simplemente use el paquete para la versión de Windows nacos-server-1.4.1.zip.

1.2 Descomprimir

Descomprima este paquete en cualquier directorio que no sea chino, como se muestra en la figura:

Descripción del catálogo:

  • bin: script de inicio

  • conf: archivo de configuración

1.3.Configuración del puerto

El puerto predeterminado de Nacos es 8848. Si otros procesos en su computadora ocupan el puerto 8848, intente cerrar el proceso primero.

Si no puedes cerrar el proceso que ocupa el puerto 8848 , también puedes ingresar al directorio conf de nacos y modificar el puerto en el archivo de configuración:

Modificar el contenido:

1.4.Inicio

El inicio es muy simple, ingrese al directorio bin, la estructura es la siguiente:

Luego ejecute el comando:

  • comando de ventanas:

  •  

    -m: seleccione el modo de inicio independiente: inicio independiente

    startup.cmd -m independiente

El efecto después de la ejecución es el siguiente:

1.5.Acceso

Ingrese la dirección en el navegador: http://127.0.0.1:8848/nacos :

La cuenta y contraseña predeterminadas son nacos. Después de ingresar:

2.Instalación de Linux

El método de instalación de Linux o Mac es similar al de Windows.

2.1.Instalar JDK

Nacos depende de JDK para ejecutarse, y JDK también debe instalarse en Linux.

Cargue el paquete de instalación de jdk:

Subir a un directorio, por ejemplo:/usr/local/

Luego descomprima:

tar -xvf jdk-8u144-linux-x64.tar.gz

Luego cambie el nombre a java

Configurar variables de entorno:

exportar JAVA_HOME=/usr/local/java 
exportar RUTA=$RUTA:$JAVA_HOME/bin

Establecer variables de entorno:

fuente /etc/perfil

2.2 Cargue el paquete de instalación

Como se muestra en la imagen:

Subir a un directorio en el servidor Linux, por ejemplo /usr/local/src:

2.3 Descomprimir

Comando para descomprimir el paquete de instalación:

tar -xvf servidor-nacos-1.4.1.tar.gz

Luego elimine el paquete de instalación:

rm -rf nacos-servidor-1.4.1.tar.gz

Estilos finales en catálogo:

Dentro del directorio:

2.4.Configuración del puerto

Similar a las ventanas

2.5.Inicio

En el directorio nacos/bin, ingrese el comando para iniciar Nacos:

sh startup.sh -m independiente

3. Dependencias de Nacos

Proyecto principal:

<dependencia> 
    <groupId>com.alibaba.cloud</groupId> 
    <artifactId>spring-cloud-alibaba-dependencies</artifactId> 
    <versión>2.2.5.RELEASE</versión> 
    <tipo>pom</tipo> 
    < alcance>importar</alcance> 
</dependencia>

Cliente:

<!-- nacos客户端依赖包 --> 
<dependencia> 
    <groupId>com.alibaba.cloud</groupId> 
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

Construcción del cluster Nacos

1. Diagrama de estructura del grupo

Diagrama oficial del grupo de Nacos:

Contiene 3 nodos nacos y luego un equilibrador de carga representa 3 Nacos.

Este equilibrador de carga puede usar nginx.

Estructura de clúster planificada:

Las direcciones de los tres nodos nacos:

nodo IP puerto
nacos1 192.168.150.1 8845
nacos2 192.168.150.1 8846
nacos3 192.168.150.1 8847

2. Construya un clúster

Pasos básicos para construir un clúster:

  • Construya la base de datos e inicialice la estructura de la tabla de la base de datos.

  • Descargar el paquete de instalación de nacos

  • Configurar nacos

  • Iniciar el clúster de nacos

  • proxy inverso nginx

2.1.Inicializar la base de datos

Los datos predeterminados de Nacos se almacenan en la base de datos integrada Derby, que no es una base de datos disponible para producción.

Aquí tomamos una base de datos de un solo punto como ejemplo para explicar.

Primero cree una nueva base de datos, asígnele el nombre nacos y luego importe el siguiente SQL:

CREAR TABLA `config_info` ( 
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', 
  `data_id` varchar(255) NOT NULL COMENTARIO 'data_id', 
  `group_id` varchar(255) DEFAULT NULL, 
  `content` texto largo NOT COMENTARIO NULO 'content', 
  `md5` varchar(32) COMENTARIO NULO PREDETERMINADO 'md5', 
  `gmt_create` datetime NO NULO COMENTARIO CURRENT_TIMESTAMP PREDETERMINADO '创建时间', 
  `gmt_modified` datetime NO NULO COMENTARIO PREDETERMINADO CURRENT_TIMESTAMP '修改时间', 
  `src_user ` text COMENTARIO 'usuario fuente', 
  `src_ip` varchar(50) COMENTARIO NULO PREDETERMINADO 'ip fuente', 
  `app_name` varchar(128) DEFAULT NULL, 
  `tenant_id` varchar(128) DEFAULT '' COMENTARIO '租户字段',
  `c_desc` varchar(256) POR DEFECTO NULO,
  `c_use` varchar(64) POR DEFECTO NULO,
  `effect` varchar(64) DEFAULT NULL, 
  `type` varchar(64) DEFAULT NULL, 
  texto `c_schema`, 
  CLAVE PRIMARIA (`id`), 
  CLAVE ÚNICA `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id` ) 
) MOTOR=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; 
​/
****************************** ************/ 
/* 数据库全名 = nacos_config */ 
/* 表名称 = config_info_aggr */ 
/********************* ***********************/ 
CREAR TABLA `config_info_aggr` ( 
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',  
  `data_id` varchar(255) NO COMENTARIO NULO 'data_id',
  `group_id` varchar( 255) COMENTARIO NO NULO 'group_id', 
  `datum_id` varchar(255) COMENTARIO NO NULO 'datum_id', 
  `content` longtext NO COMENTARIO NULO '内容', 
  `gmt_modified` datetime NO COMENTARIO NULO '修改时间' , 
  `app_name` varchar(128) DEFAULT NULL, 
  `tenant_id` varchar(128) DEFAULT '' COMENTARIO '租户字段', 
  CLAVE PRIMARIA (`id`), 
  CLAVE ÚNICA `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,` id_inquilino`,`datum_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Agregar campo de inquilino'; 
/

************************ *******************/ 
/* Nombre completo de la base de datos = nacos_config */ 
/* Nombre de la tabla = config_info_beta */ 
/*************** *** *******************************/
CREAR TABLA `config_info_beta` (  
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) COMENTARIO NO NULO 'data_id',
  `group_id` varchar(128) COMENTARIO NO NULO 'group_id', 
  `app_name` varchar(128) COMENTARIO NULO PREDETERMINADO 'nombre_aplicación', 
  `content` texto largo NO COMENTARIO NULO 'contenido', 
  `beta_ips` varchar( 1024) COMENTARIO NULO POR DEFECTO 'betaIps', 
  `md5` varchar(32) COMENTARIO NULO POR DEFECTO 'md5', 
  `gmt_create` datetime NOT NULL COMENTARIO PREDETERMINADO CURRENT_TIMESTAMP '创建时间', 
  `gmt_modified` datetime NOT NULL COMENTARIO PREDETERMINADO CURRENT_TIMESTAMP '修改时间' , 
  `src_user` texto COMENTARIO 'usuario fuente', 
  `src_ip` varchar(50) COMENTARIO NULO PREDETERMINADO 'ip fuente', 
  `tenant_id` varchar(128) COMENTARIO PREDETERMINADO '' '租户字段', CLAVE 
  PRIMARIA (`id`),
  CLAVE ÚNICA `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) 
  `group_id` varchar(128) NOT NULL COMENTARIO 'group_id', 
  `tenant_id` varchar(128) DEFAULT '' COMENTARIO 'tenant_id', 
  `tag_id` varchar(128) NO COMENTARIO NULO 'tag_id',
) MOTOR=InnoDB CONJUNTO DE CARACTERES PREDETERMINADO=utf8 COLLATE=utf8_bin COMMENT='config_info_beta'; 
​/
********************************* ***********/ 
/* 数据库全名 = nacos_config */ 
/* 表名称 = config_info_tag */ 
/******************** **********************/ 
CREAR TABLA `config_info_tag` ( 
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMENTARIO 'id', 
  `data_id` varchar(255 ) COMENTARIO NO NULO 'data_id', 
  `nombre_aplicación` varchar(128) COMENTARIO NULO POR DEFECTO 'nombre_aplicación', 
  texto largo `content` NO COMENTARIO NULO 'contenido', 
  `md5` varchar(32) COMENTARIO NULO POR DEFECTO 'md5', 
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMENTARIO '修改时间', 
  `src_user` text COMMENT 'usuario fuente', 
  `src_ip` varchar(50) COMENTARIO NULO PREDETERMINADO 'ip fuente', CLAVE 
  PRIMARIA (`id`), 
  CLAVE ÚNICA ` uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag'; 
​/
************ *****************************/  
/* Nombre completo de la base de datos = nacos_config */
/* 表名称 = config_tags_relation */ 
/********** ********************************/ 
CREAR TABLA `config_tags_relation` ( 
  `id` bigint(20) NO COMENTARIO NULO ' id', 
  `nombre_etiqueta` varchar(128) COMENTARIO NO NULO 'nombre_etiqueta',
  `tag_type` varchar(64) COMENTARIO NULO PREDETERMINADO 'tag_type', 
  `data_id` varchar(255) COMENTARIO NO NULO 'data_id', 
  `group_id` varchar(128) COMENTARIO NO NULO 'group_id', 
  `tenant_id` varchar(128) PREDETERMINADO '' COMENTARIO 'tenant_id', 
  `nid` bigint(20) NOT NULL AUTO_INCREMENT, CLAVE 
  PRIMARIA (`nid`), 
  CLAVE ÚNICA `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), 
  CLAVE `idx_tenant_id` ( `tenant_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation'; 
​/
*************************** ***************/ 
/* 数据库全名 = nacos_config */ 
/* 表名称 = group_capacity */ 
/****************** ****************************/ 
CREAR TABLA `group_capacity` ( 
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID de clave principal', 
  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'ID de grupo, el carácter nulo representa todo el clúster', 
  `quota` int(10 ) unsigned NOT NULL DEFAULT '0' COMMENT 'Cuota, 0 significa usar el valor predeterminado', 
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMENTARIO 'Uso', 
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'El límite superior del tamaño de una única configuración, en bytes, 0 significa usar el valor predeterminado', 
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'El número máximo de sub- configuraciones, 0 significa usar el valor predeterminado', 
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'El límite superior del tamaño de subconfiguración de un único dato agregado, en bytes, 0 significa usar el valor predeterminado ',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Número máximo de historial de cambios',
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Hora de creación', 
  `group_id` varchar(128) NOT NULL,
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Hora de modificación', 
  CLAVE PRIMARIA (`id`), 
  CLAVE ÚNICA `uk_group_id` (`group_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Clúster, cada grupo Tabla de información de capacidad'; 
​/
*******************************************/ 
/* Nombre completo de la base de datos = nacos_config */ 
/* Nombre de la tabla = his_config_info */ 
/******************************** **** **********/ 
CREAR TABLA `his_config_info` ( 
  `id` bigint(64) unsigned NOT NULL, 
  `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
  `data_id` varchar(255 ) NOT NULL,
  `app_name` varchar(128) COMENTARIO NULO POR DEFECTO 'app_name', 
  `content` texto largo NOT NULL, 
  `md5` varchar(32) DEFAULT NULL, 
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, 
  ` src_user` texto, 
  `src_ip` varchar(50) DEFAULT NULL, 
  `op_type` char(10) DEFAULT NULL, 
  `tenant_id` varchar(128) DEFAULT '' COMENTARIO '租户字段', 
  PRIMARY KEY (`nid`), 
  KEY ` idx_gmt_create` (`gmt_create`), 
  KEY `idx_gmt_modified` (`gmt_modified`), 
  KEY `idx_did` (`data_id`) 
) MOTOR=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造' 
;

********************** ****** *******************/ 
/* Nombre completo de la base de datos = nacos_config */ 
/* Nombre de la tabla = tenant_capacity */ 
/***** ***********************************/ 
CREAR TABLA `tenant_capacity` ( 
  `id` bigint(20 ) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID de clave principal', 
  `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'ID de inquilino', 
  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Cuota, 0 significa use Valor predeterminado', 
  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Uso', 
  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'El límite superior del tamaño de una única configuración , en bytes, 0 significa usar el valor predeterminado', 
  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Número máximo de subconfiguraciones agregadas',
  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMENTARIO 'El límite superior del tamaño de subconfiguración de un único dato agregado, en bytes, 0 significa usar el valor predeterminado',
  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMENTARIO '最大变更历史数量', 
  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Hora de creación',
  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMENTARIO '修改时间', CLAVE 
  PRIMARIA (`id`), 
  CLAVE ÚNICA `uk_tenant_id` ( `tenant_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表'; 
CREATE

TABLE `tenant_info` ( 
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', 
  `kp` varchar(128) NOT NULL COMMENT 'kp', 
  `tenant_id` varchar(128) default '' COMMENT 'tenant_id', 
  `tenant_name` varchar(128) default '' COMMENT 'tenant_name', 
  `tenant_desc` varchar(256) DEFAULT NULL COMENTARIO 'tenant_desc',
  `create_source` varchar(32) COMENTARIO NULO POR DEFECTO 'create_source', 
  `gmt_create` bigint(20) COMENTARIO NO NULO '创建时间', 
  `gmt_modified` bigint(20) COMENTARIO NO NULO '修改时间', CLAVE 
  PRIMARIA (`id` ),
TABLA `roles` ( 
    `nombre de usuario` varchar(50) NOT NULL, 
    `rol` varchar(50) NO NULO,
  CLAVE ÚNICA `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), 
  CLAVE `idx_tenant_id` (`tenant_id`) 
) MOTOR=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info'; 
​CREAR
TABLA `usuarios` ( 
    `nombre de usuario ` varchar(50) CLAVE PRIMARIA NOT NULL, 
    `contraseña` varchar(500) NOT NULL, 
    `enabled` boolean NOT NULL 
); 
    ÍNDICE 
ÚNICO 
) 
; 
CREAR TABLA `permisos` ( 
    `rol` varchar(50) NOT NULL, 
    `resource` varchar(255) NOT NULL, 
    `action` varchar(8) NOT NULL, 
    ÍNDICE ÚNICO `uk_role_permission` (`rol`,`resource`, `acción`) USANDO BTREE
); 
​INSERT
INTO usuarios (nombre de usuario, contraseña, habilitado) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);​INSERT INTO roles (nombre de usuario, 
rol
) VALUES ('nacos', 'ROLE_ADMIN');

2.2 Descargar nacos

Nacos tiene una dirección de descarga en GitHub: Etiquetas · alibaba/nacos · GitHub Puedes elegir cualquier versión para descargar.

En este ejemplo sólo se utiliza la versión 1.4.1:

2.3.Configuración de Nacos

Descomprima este paquete en cualquier directorio que no sea chino, como se muestra en la figura:

Descripción del catálogo:

  • bin: script de inicio

  • conf: archivo de configuración

Ingrese al directorio conf de nacos, modifique el archivo de configuración cluster.conf.example y cámbiele el nombre a cluster.conf:

Luego agregue contenido:

127.0.0.1:8845 
127.0.0.1.8846 
127.0.0.1.8847

Luego modifique el archivo application.properties y agregue la configuración de la base de datos.

spring.datasource.platform=mysql 
​db.num
=1 
​db.url.0
=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC 
db .user.0=base de datos 
raíz.contraseña.0=123

2.4.Inicio

Copie la carpeta nacos en tres copias y asígneles un nombre respectivamente: nacos1, nacos2, nacos3.

Luego modifique application.properties en las tres carpetas respectivamente,

nacos1:

servidor.puerto=8845

nacos2:

servidor.puerto=8846

nacos3:

servidor.puerto=8847

Luego inicie tres nodos nacos respectivamente:

inicio.cmd

2.5.proxy inverso nginx

 

Descomprímalo en cualquier directorio que no sea chino:

 

Modifique el archivo conf/nginx.conf y configúrelo de la siguiente manera:

clúster de nacos ascendente { 
    servidor 127.0.0.1:8845; 
    servidor 127.0.0.1:8846; 
    servidor 127.0.0.1:8847; 
} 
​servidor
{ 
    escuchar 80; 
    nombre_servidor localhost; 
​ubicación
    /nacos { 
        proxy_pass http://nacos-cluster; 
    } 
}

Luego visite: http://localhost/nacos en el navegador .

El archivo application.yml en el código está configurado de la siguiente manera:

primavera: 
  nube: 
    nacos: 
      dirección-servidor: localhost:80 # Nacos地址

2.6.Optimización

  • Durante la implementación real, debe establecer un nombre de dominio para el servidor nginx que se utiliza como proxy inverso, de modo que si hay un servidor que migra el cliente nacos más adelante, no sea necesario cambiar la configuración.

  • Cada nodo de Nacos debe implementarse en varios servidores diferentes para garantizar el aislamiento y la recuperación ante desastres.

Supongo que te gusta

Origin blog.csdn.net/weixin_55008454/article/details/131856706
Recomendado
Clasificación