iis服务器助手广告
返回顶部
首页 > 资讯 > 服务器 >巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器
  • 1090
分享到

巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

2024-04-02 19:04:59 1090人浏览 薄情痞子
摘要

容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作。SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与nod

容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作。SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库nodejs的 Docker 镜像搭建一个简易的 WEB 服务器

 

1、规划部署

我们将会搭建一个三分区三副本的高可用 SequoiaDB 巨杉数据库。同时,我们将会创建一个 SequoiaDB 巨杉数据库的 Mysql 实例,用以提供 nodejs 作为数据源。

 

容器角色

容器名/IP:端口

分区组

镜像版本

数据库协调节点

coord_catalog/172.17.0.2:11810

SYSCoord

sequoiadb/sequoiadb:v3.2.1

数据库编目节点

coord_catalog/172.17.0.2:11800

SYSCatalog

sequoiadb/sequoiadb:v3.2.1

数据分区1副本1

sdb_data1/172.17.0.3:11820

group1

sequoiadb/sequoiadb:v3.2.1

数据分区1副本2

sdb_data2/172.17.0.4:11820

group1

sequoiadb/sequoiadb:v3.2.1

数据分区1副本3

sdb_data3/172.17.0.5:11820

group1

sequoiadb/sequoiadb:v3.2.1

数据分区2副本1

sdb_data2/172.17.0.4:11830

group2

sequoiadb/sequoiadb:v3.2.1

数据分区2副本2

sdb_data3/172.17.0.5:11830

group2

sequoiadb/sequoiadb:v3.2.1

数据分区2副本3

sdb_data1/172.17.0.3:11830

group2

sequoiadb/sequoiadb:v3.2.1

数据分区3副本1

sdb_data3/172.17.0.5:11840

group3

sequoiadb/sequoiadb:v3.2.1

数据分区3副本2

sdb_data1/172.17.0.3:11840

group3

sequoiadb/sequoiadb:v3.2.1

数据分区3副本3

sdb_data2/172.17.0.4:11840

group3

sequoiadb/sequoiadb:v3.2.1

数据库 mysql实例

mysql/172.17.0.6:3306

-

sequoiadb/sequoiasql-mysql:v3.2.1

Nodejs Web 服务器

nodetest/172.17.0.7:3000

-

node:latest

 

2、安装 Docker 环境

对于已经安装了 Docker 环境的读者可以跳过本章节。对于之前没有使用过 Docker 的读者可以通过本章节安装本地 Docker 环境。

 

Docker 可以运行在绝大部分主流操作系统上,包括常用的 windowsMac 以及 linux 的多个版本均可支持。

 

对于 Mac 用户可以安装 Docker Desktop for Mac,下载地址在:

https://hub.docker.com/editions/community/docker-ce-desktop-mac

 

对于 Windows 用户可以安装 Docker Deskop for Windows,下载地址在:

https://docs.docker.com/docker-for-windows/install/

 

对于 Linux 用户则可以直接使用 yum 或 apt-get 进行安装:

https://docs.docker.com/install/linux/docker-ce/centos/

https://docs.docker.com/install/linux/docker-ce/ubuntu/

3、搭建 SequoiaDB 巨杉数据库集群

3.1、将 SequoiaDB 引擎与 SequoiaSQL-MySQL 数据库实例下载至本地

docker   pull sequoiadb/sequoiadb :v3.2.1

docker pull sequoiadb/sequoiasql-mysql:v3.2.1

 

3.2、启动数据库引擎容器

docker   run -it -d --name coord_catalog sequoiadb/sequoiadb: v3.2.1

docker run -it -d --name sdb_data1 sequoiadb/sequoiadb:v3.2.1

docker run -it -d --name sdb_data2   sequoiadb/sequoiadb:v3.2.1

docker run -it -d --name sdb_data3   sequoiadb/sequoiadb:v3.2.1

 

3.3、验证各个容器的 IP 地址

docker   inspect --format '{{ .NetworkSettings.IPAddress}}'   coord_catalog

docker inspect --format '{{   .NetworkSettings.IPAddress}}' sdb_data1

docker inspect --format '{{   .NetworkSettings.IPAddress}}' sdb_data2

docker inspect --format '{{   .NetworkSettings.IPAddress}}' sdb_data3

预期输出结果为 :

172.17.0.2

172.17.0.3

172.17.0.4

172.17.0.5

 

3.4、部署 SequoiaDB 巨杉数据库引擎集群

docker   exec coord_catalog "/init.sh" \

        --coord='172.17.0.2:11810' \

        --catalog='172.17.0.2:11800' \

        --data='group1=172.17.0.3:11820,172.17.0.4:11820,172.17.0.5:11820;group2=172.17.0.4:11830,172.17.0.5:11830,172.17.0.3:11830;group3=172.17.0.5:11840,172.17.0.3:11840,172.17.0.4:11840'

预期输出结果为:

Begin   generating SequoiaDB conf file

Finish generating SequoiaDB conf file

Restarting sdbcm process, it will take   10 seconds

Deploy...

Execute command:   /opt/sequoiadb/tools/deploy/../../bin/sdb -f   /opt/sequoiadb/tools/deploy/quickDeploy.js -e ''

 

************ Deploy SequoiaDB   ************************

Create catalog: 172.17.0.2:11800

Create coord:   172.17.0.2:11810

Create data:    172.17.0.3:11820

Create data:    172.17.0.4:11820

Create data:    172.17.0.5:11820

Create data:    172.17.0.4:11830

Create data:    172.17.0.5:11830

Create data:    172.17.0.3:11830

Create data:    172.17.0.5:11840

Create data:    172.17.0.3:11840

Create data:    172.17.0.4:11840

 

3.5、启动 MySQL 实例容器

docker   run -it -d -p 3306:3306 --name mysql sequoiadb/sequoiasql-mysql:v3.2.1

 

3.6、验证 IP 地址

docker   inspect --format '{{ .NetworkSettings.IPAddress}}' mysql

预期输出结果为:

172.17.0. 6

 

3.7、创建 MySQL 实例

docker   exec mysql "/init.sh" --port=3306 --coord='172.17.0.2:11810'

其中 coord 参数填写协调节点所在的 IP 地址与监听端口。

预期输出结果为:

Creating   SequoiaSQL instance: MySQLInstance

Modify configuration file and restart   the instance: MySQLInstance

Restarting instance: MySQLInstance

Opening remote access to user root

Restarting instance: MySQLInstance

Instance MySQLInstance is created on   port 3306, default user is root

4 、登录 MySQL 并创建一个测试

4.1、得到 MySQL 实例的容器 ID

docker ps   --filter name=mysql --format {{.ID}}

预期结果为 MySQL 实例容器所在的 Container ID:

cc17df22a908

 

4.2、登录 MySQL 实例命令行

docker   exec -it cc17df22a908 "/opt/sequoiasql/mysql/bin/mysql" -h   127.0.0.1 -u root

其中 -it 参数为 MySQL 实例的容器 ID,预期结果为:

Welcome   to the MySQL monitor.  Commands end   with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.25 Source   distribution

 

Copyright (c) 2000, 2019, Oracle and/or   its affiliates. All rights reserved.

 

Oracle is a registered trademark of   Oracle Corporation and/or its

affiliates. Other names may be   trademarks of their respective

owners.

 

No entry for terminal type   "xterm";

using dumb terminal settings.

Type 'help;' or '\h' for help. Type   '\c' to clear the current input statement.

 

mysql>

 

4.3、创建数据库与表,并创建一条测试数据

create   database sample;

use sample;

create table t1 ( c1 varchar(100));

insert into t1 values ("SequoiaDB");

select * from t1;

预期输出结果为:

+-----------+

| c1        |

+-----------+

| SequoiaDB |

+-----------+

1 row in set (0.02 sec)

5、创建 Nodejs 服务

5.1、创建 app.js 文件

var express =   require('express');   // 引入 express 模块

var mysql = require('mysql');       // 引入 mysql 模块

var app = express();        // 创建 express 的实例

 

var connection = mysql.createConnection({      // 创建 mysql 实例

    host:'172.17.0.6',

    port:'3306',

    user:'root',

    passWord:'',

    database:'sample'

});

var sql = 'SELECT * FROM t1';

connection.connect();

 

app.get('/',function (req,res) {

    connection.query(sql, function   (err,result) {

        if(err){

            console.log('[SELECT   ERROR]:',err.message);

        }

        res.send('Hello: ' +   result[0].c1 ) ;

    });

});

app.listen(3000,function () {      //// 监听 3000 端口

    console.log('Server running   at 3000 port');

});

代码中的 host 使用 MySQL 实例的 IP 地址。

 

5.2、创建 package.json 文件

{

    "name": "nodetest",

    "version": "1.0.0",

    "description": "",

    "main": "index.js",

    "scripts": {

      "test": "echo \"Error: no test specified\"   && exit 1"

    },

    "author": "",

    "license": "ISC",

    "dependencies": {

      "express": "^4.17.1",

      "mysql": "^2.17.1"

    }

}

 

5.3、创建 Dockerfile 文件

FROM   node:latest

RUN mkdir -p /usr/src/

 

COPY package.json /usr/src/

COPY app.js /usr/src/

WORKDIR /usr/src/

 

RUN npm install

# 定义程序默认端口

EXPOSE 3000

# 运行程序命令

CMD   ["node","app.js"]

 

5.4、当前目录中应仅包含三个文件

$ ls -la

total 24

drwxr-xr-x   5 sequoiadb  staff     160  7 16 15:22 .

drwxr-xr-x  94 sequoiadb  staff    3008  7 16 10:50 ..

-rw-r--r--   1 sequoiadb  staff     206  7 16 12:24 Dockerfile

-rw-r--r--   1 sequoiadb  staff     766  7 16 12:27 app.js

-rw-r--r--   1 sequoiadb  staff     278  7 16 12:03 package.json

 

5.5、创建 Nodejs 服务镜像

docker   build -t nodetest .

 

5.6、运行 Nodejs 服务容器

docker   run -d -p 3000:3000 nodetest

 

5.7、打开浏览器,连接本地的 3000 端口

 

5.8、更改数据库中的记录,可以看到浏览器显示的内容随之发生调整

$ docker   exec -it cc17df22a908 "/opt/sequoiasql/mysql/bin/mysql" -h   127.0.0.1 -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 7

Server version: 5.7.25 Source   distribution

 

Copyright (c) 2000, 2019, Oracle and/or   its affiliates. All rights reserved.

 

Oracle is a registered trademark of   Oracle Corporation and/or its

affiliates. Other names may be   trademarks of their respective

owners.

 

No entry for terminal type   "xterm";

using dumb terminal settings.

Type 'help;' or '\h' for help. Type   '\c' to clear the current input statement.

 

mysql> use sample;

Reading table information for   completion of table and column names

You can turn off this feature to get a   quicker startup with -A

 

Database changed

mysql> update t1 set   c1="Node" where c1="SequoiaDB";

Query OK, 1 row affected (0.04 sec)

Rows matched: 1  Changed: 1    Warnings: 0

刷新浏览器后显示:

6、小结

本文展示了如何通过 SequoiaDB 巨杉数据库的 Docker 容器,结合 Nodejs 快速搭建一个 Web 应用。灵活将分布式数据库结合容器使用,能够使用户快速构建开发测试环境,大幅度降低开发过程中的基础设施维护成本。


--结束END--

本文标题: 巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

本文链接: https://www.lsjlt.com/news/47829.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器
    容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作。SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与Nod...
    99+
    2024-04-02
  • nodejs web本地服务器搭建
    随着web技术的不断发展,越来越多的人开始关注如何搭建一个本地的web服务器,以方便他们进行开发和测试工作。而Node.js作为一款非常流行的服务器端开发框架,也可以用于搭建web本地服务器。本文将介绍如何使用Node.js来搭建一个简单的...
    99+
    2023-05-17
  • 使用Node.js搭建Web服务器
    1、 Node.js 创建的第一个应用 1、引入http模块 var http = require("http"); 2、 创建服务器 接下来我们使用 http.creat...
    99+
    2024-04-02
  • 如何使用nodejs搭建websocket服务器
    这篇文章给大家分享的是有关如何使用nodejs搭建websocket服务器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 简单开始1.安装node。https://no...
    99+
    2024-04-02
  • nodejs搭建web服务器的缺点有哪些
    这篇文章将为大家详细讲解有关nodejs搭建web服务器的缺点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 nodejs搭建web服务...
    99+
    2024-04-02
  • Nodejs搭建多进程Web服务器实现过程
    目录前言父子进程间通信负载均衡句柄传递集群子进程事件自动重启总结前言 上节我们讲到,通过 fork() 或者其他API,创建子进程之后,可以通过 send() 和 process.o...
    99+
    2022-11-13
    Nodejs搭建多进程Web服务 Nodejs搭建Web
  • 如何使用Docker搭建MQTT服务器
    这篇文章主要介绍如何使用Docker搭建MQTT服务器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 拉取镜像docker pull registry.cn-hangzhou.aliyuncs.com/synbo...
    99+
    2023-06-22
  • 怎么使用Node.js搭建Web服务器
    这篇文章主要介绍“怎么使用Node.js搭建Web服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Node.js搭建Web服务器”文章能帮助大家解决问题。1、 Node.js 创建的第一...
    99+
    2023-07-02
  • 如何使用nodeJS搭建本地文件服务器
    这篇文章主要介绍了如何使用nodeJS搭建本地文件服务器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。搭建nodejs服务器步骤:1.安装n...
    99+
    2024-04-02
  • 如何用nodejs搭建代理服务器
    目录代理服务器的原理案例搭建代理服务器解决跨域问题原理解释代理服务器的原理 案例 安装 express、http-proxy-middleware app.js 文件 node a...
    99+
    2022-11-13
    nodejs 代理服务器 nodejs 代理 nodejs搭建代理服务器
  • 怎么使用Golang搭建web服务
    今天小编给大家分享一下怎么使用Golang搭建web服务的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。我们先看个例子:htt...
    99+
    2023-06-30
  • 如何使用node.js搭建简单web服务器
    这篇文章给大家分享的是有关如何使用node.js搭建简单web服务器的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。准备首先,需要安装nodejs,这个可以去官网下载,目前我本地安...
    99+
    2024-04-02
  • Docker compose搭建ELK服务基本使用
    目录概述docker-compose 基本使用最后概述 使用的是docker-compose方法安装elk组件,对这部分的内容进行一个知识上的补充,使用docker-compose...
    99+
    2023-03-23
    Docker compose搭建ELK Docker compose
  • Docker使用nodejs镜像构建express服务的方法
    目录1 nodejs容器的启动2 安装nodejs第三方依赖模块3 启动nodejs服务1 nodejs容器的启动 安装docker curl -fsSL https://get.d...
    99+
    2024-04-02
  • 怎么使用node.js搭建简单web服务器
    这篇文章主要介绍“怎么使用node.js搭建简单web服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用node.js搭建简单web服务器”文章能帮助大家解决问题。准备首先,需要安装nod...
    99+
    2023-06-17
  • 【服务器】安卓手机使用Termux搭建web服务
      Yan-英杰的主页 悟已往之不谏 知来者之可追   C++程序员,2024届电子信息研究生 目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 概述 Te...
    99+
    2023-10-20
    服务器 人工智能 web 开发语言 后端
  • Docker compose搭建ELK服务怎么使用
    今天小编给大家分享一下Docker compose搭建ELK服务怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-07-05
  • 使用Docker搭建MQTT服务器的过程详解
    1. 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/synbop/emqttd:2.3.6 2. 运行镜像 –n...
    99+
    2024-04-02
  • 如何使用 docker compose 搭建 fastDFS文件服务器
    上篇文章给大家介绍了使用docker compose安装FastDfs文件服务器的实例详解 今天给大家介绍如何使用 docker compose 搭建 fastDFS文件服务器,内容...
    99+
    2024-04-02
  • 阿里云服务器怎么使用node.js搭建web
    使用node.js搭建web应用有两种方式:使用Node.js:node.js是Node JavaScript库的一个扩展名,它可以用来在node.js的代码中创建Web应用。可以使用node.js的create命令创建Web应用,然后使用...
    99+
    2023-10-25
    阿里 服务器 node
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作