热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

neonserverlesspostgres简单试用

内容来自官方的docker-compose内容,主要是测试试用参考架构  从以上图可以看出,neon应该包含了几个组件,safekeeper,pageserver,计算节点,以及对

内容来自官方的docker-compose 内容,主要是测试试用


参考架构

 

 

从以上图可以看出,neon 应该包含了几个组件,safekeeper,pageserver,计算节点,以及对象存储,运行的服务也是参考此部署的,safekeeper 需要至少3个节点

实现了选举机制,内部试用了


部署docker-compose



  • docker-compose 文件

 

version: '3'

# minio s3 服务

services:

minio:

image: minio/minio:RELEASE.2022-10-20T00-55-09Z

ports:

- 9000:9000

- 9001:9001

environment:

- MINIO_ROOT_USER=minio

- MINIO_ROOT_PASSWORD=password

command: server /data --address :9000 --console-address ":9001"

# 初始化桶创建

minio_create_buckets:

image: minio/mc

environment:

- MINIO_ROOT_USER=minio

- MINIO_ROOT_PASSWORD=password

entrypoint:

- "/bin/sh"

- "-c"

command:

- "until (/usr/bin/mc alias set minio http://minio:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD) do

echo 'Waiting to start minio...' && sleep 1;

done;

/usr/bin/mc mb minio/neon --region=eu-north-1;

exit 0;"

depends_on:

- minio

# pageserver

pageserver:

image: ${REPOSITORY:-neondatabase}/neon:${TAG:-latest}

environment:

- BROKER_ENDPOINT='http://storage_broker:50051'

- AWS_ACCESS_KEY_ID=minio

- AWS_SECRET_ACCESS_KEY=password

#- RUST_BACKTRACE=1

ports:

#- 6400:6400 # pg protocol handler

- 9898:9898 # http endpoints

entrypoint:

- "/bin/sh"

- "-c"

command:

- "/usr/local/bin/pageserver -D /data/.neon/

-c \"broker_endpoint=$$BROKER_ENDPOINT\"

-c \"listen_pg_addr='0.0.0.0:6400'\"

-c \"listen_http_addr='0.0.0.0:9898'\"

-c \"remote_storage={endpoint='http://minio:9000',

bucket_name='neon',

bucket_region='eu-north-1',

prefix_in_bucket='/pageserver/'}\""

depends_on:

- storage_broker

- minio_create_buckets

# safekeeper 服务

safekeeper1:

image: ${REPOSITORY:-neondatabase}/neon:${TAG:-latest}

environment:

- SAFEKEEPER_ADVERTISE_URL=safekeeper1:5454

- SAFEKEEPER_ID=1

- BROKER_ENDPOINT=http://storage_broker:50051

- AWS_ACCESS_KEY_ID=minio

- AWS_SECRET_ACCESS_KEY=password

#- RUST_BACKTRACE=1

ports:

#- 5454:5454 # pg protocol handler

- 7676:7676 # http endpoints

entrypoint:

- "/bin/sh"

- "-c"

command:

- "safekeeper --listen-pg=$$SAFEKEEPER_ADVERTISE_URL

--listen-http='0.0.0.0:7676'

--id=$$SAFEKEEPER_ID

--broker-endpoint=$$BROKER_ENDPOINT

-D /data

--remote-storage=\"{endpoint='http://minio:9000',

bucket_name='neon',

bucket_region='eu-north-1',

prefix_in_bucket='/safekeeper/'}\""

depends_on:

- storage_broker

- minio_create_buckets

# safekeeper 服务

safekeeper2:

image: ${REPOSITORY:-neondatabase}/neon:${TAG:-latest}

environment:

- SAFEKEEPER_ADVERTISE_URL=safekeeper2:5454

- SAFEKEEPER_ID=2

- BROKER_ENDPOINT=http://storage_broker:50051

- AWS_ACCESS_KEY_ID=minio

- AWS_SECRET_ACCESS_KEY=password

#- RUST_BACKTRACE=1

ports:

#- 5454:5454 # pg protocol handler

- 7677:7676 # http endpoints

entrypoint:

- "/bin/sh"

- "-c"

command:

- "safekeeper --listen-pg=$$SAFEKEEPER_ADVERTISE_URL

--listen-http='0.0.0.0:7676'

--id=$$SAFEKEEPER_ID

--broker-endpoint=$$BROKER_ENDPOINT

-D /data

--remote-storage=\"{endpoint='http://minio:9000',

bucket_name='neon',

bucket_region='eu-north-1',

prefix_in_bucket='/safekeeper/'}\""

depends_on:

- storage_broker

- minio_create_buckets

# safekeeper 服务

safekeeper3:

image: ${REPOSITORY:-neondatabase}/neon:${TAG:-latest}

environment:

- SAFEKEEPER_ADVERTISE_URL=safekeeper3:5454

- SAFEKEEPER_ID=3

- BROKER_ENDPOINT=http://storage_broker:50051

- AWS_ACCESS_KEY_ID=minio

- AWS_SECRET_ACCESS_KEY=password

#- RUST_BACKTRACE=1

ports:

#- 5454:5454 # pg protocol handler

- 7678:7676 # http endpoints

entrypoint:

- "/bin/sh"

- "-c"

command:

- "safekeeper --listen-pg=$$SAFEKEEPER_ADVERTISE_URL

--listen-http='0.0.0.0:7676'

--id=$$SAFEKEEPER_ID

--broker-endpoint=$$BROKER_ENDPOINT

-D /data

--remote-storage=\"{endpoint='http://minio:9000',

bucket_name='neon',

bucket_region='eu-north-1',

prefix_in_bucket='/safekeeper/'}\""

depends_on:

- storage_broker

- minio_create_buckets

# 存储broker,safekeeper 需要依赖此服务

storage_broker:

image: ${REPOSITORY:-neondatabase}/neon:${TAG:-latest}

ports:

- 50051:50051

command:

- "storage_broker"

- "--listen-addr=0.0.0.0:50051"

# 计算节点,实际进行查询的入口,依赖pageserver以及safekeeper

compute:

build:

context: ./compute_wrapper/

args:

- COMPUTE_IMAGE=compute-node-v${PG_VERSION:-14}

- TAG=${TAG:-latest}

- http_proxy=$http_proxy

- https_proxy=$https_proxy

environment:

- PG_VERSION=${PG_VERSION:-14}

#- RUST_BACKTRACE=1

# Mount the test files directly, for faster editing cycle.

volumes:

- ./compute_wrapper/var/db/postgres/specs/:/var/db/postgres/specs/

- ./compute_wrapper/shell/:/shell/

ports:

- 55433:55433 # pg protocol handler

- 3080:3080 # http endpoints

entrypoint:

- "/shell/compute.sh"

depends_on:

- safekeeper1

- safekeeper2

- safekeeper3

- pageserver

# 测试客户端

compute_is_ready:

image: postgres:latest

entrypoint:

- "/bin/bash"

- "-c"

command:

- "until pg_isready -h compute -p 55433 ; do

echo 'Waiting to start compute...' && sleep 1;

done"

depends_on:

- compute

使用

可以直接基于pg 客户端链接



  • 效果

 

 


说明

以上是一个简单的试用,实际上neon 还支持分支,以及不少其他pg 扩展,后边试用下


参考资料

https://neon.tech/docs/introduction/architecture-overview/

https://github.com/neondatabase/neon/blob/main/docs/docker.md

https://github.com/rongfengliang/neon-docker-compose-learning

https://github.com/neondatabase/neon

https://neon.tech/docs/reference/compatibility/



推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 深入解析JVM垃圾收集器
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践》第二版,详细探讨了JVM中不同类型的垃圾收集器及其工作原理。通过介绍各种垃圾收集器的特性和应用场景,帮助读者更好地理解和优化JVM内存管理。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
author-avatar
琪琪格
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有