我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作。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 可以运行在绝大部分主流操作系统上,包括常用的 Windows、Mac 以及 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/class="lazy" data-src/

 

COPY package.json /usr/class="lazy" data-src/

COPY app.js /usr/class="lazy" data-src/

WORKDIR /usr/class="lazy" data-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 应用。灵活将分布式数据库结合容器使用,能够使用户快速构建开发测试环境,大幅度降低开发过程中的基础设施维护成本。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

如何使用Docker搭建MQTT服务器

这篇文章主要介绍如何使用Docker搭建MQTT服务器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 拉取镜像docker pull registry.cn-hangzhou.aliyuncs.com/synbo
2023-06-22

怎么使用Node.js搭建Web服务器

这篇文章主要介绍“怎么使用Node.js搭建Web服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Node.js搭建Web服务器”文章能帮助大家解决问题。1、 Node.js 创建的第一
2023-07-02

怎么使用node.js搭建简单web服务器

这篇文章主要介绍“怎么使用node.js搭建简单web服务器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用node.js搭建简单web服务器”文章能帮助大家解决问题。准备首先,需要安装nod
2023-06-17

怎么使用web服务器软件搭建网站

使用web服务器软件搭建网站的步骤如下:1. 选择合适的web服务器软件,如Apache、Nginx、IIS等。2. 安装web服务器软件,根据不同的操作系统选择对应的安装包进行安装。3. 配置web服务器,包括端口号、虚拟主机、SSL证书
2023-06-13

阿里云服务器怎么使用node.js搭建web

使用node.js搭建web应用有两种方式:使用Node.js:node.js是NodeJavaScript库的一个扩展名,它可以用来在node.js的代码中创建Web应用。可以使用node.js的create命令创建Web应用,然后使用node.js的create命令从文件中读取文件的内容,并创建Web应用的逻辑代码和配置文件。使用Vue.js:Vue.js是一个轻量级的JavaScript框架
2023-10-25

如何使用阿里云Java Web搭建服务器

本文将详细介绍如何使用阿里云JavaWeb搭建服务器。我们将从选择服务器类型开始,然后详细讲解如何安装和配置JavaWeb环境,最后我们将介绍如何部署和测试我们的Web应用。正文:一、选择服务器类型在阿里云上,有多种服务器类型供我们选择,包括共享服务器、独享服务器、高可用服务器等。对于JavaWeb应用来说,我们
如何使用阿里云Java Web搭建服务器
2023-11-20

使用Java语言在阿里云服务器上搭建Web应用

本文将详细介绍如何使用Java语言在阿里云服务器上搭建Web应用。首先,我们将讨论如何在阿里云服务器上安装Java开发环境,然后我们将详细讲解如何使用Maven管理项目依赖,最后,我们将展示如何在阿里云服务器上使用Tomcat运行JavaWeb应用。正文:一、在阿里云服务器上安装Java开发环境在阿里云服务器上安
使用Java语言在阿里云服务器上搭建Web应用
2023-10-31

编程热搜

目录