热门标签 | 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/



推荐阅读
  • 系统osx10.11用的是brew下的php56brew下的nginx下了一个项目,在安装过程中提示缺少,intl和apc扩展,就用下面的语句下载了,也装上了,但php还是没有加载 ... [详细]
  • 1,启动MySQL终端输入mysql-uroot-p然后输入密码,启动成功WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMyS ... [详细]
  • 什么是API接口?给大家举例说明
    Api接口也就是所谓的应用程序接口,api接口的全称是ApplicationProgramInterface,通过API接口可以实现计算机软件之间的相互 ... [详细]
  • 缓冲区溢出实例(一)–Windows
    一、基本概念缓冲区溢出:当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被填满从而覆盖了相邻内存区域的数据。可以修改内存数据,造成进程劫持,执行恶意代码,获 ... [详细]
  • springboot系列(二)创建springboot工程
    https:www.cnblogs.commagicalSamp7171716.html简介SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spri ... [详细]
  • 在任何编程语言中,检查字符串是否包含子字符串都是常见的任务。例如,假设您正在构建在线游戏。您可能需要检查用户名是否包含禁止使用的短语,以确保所有用户名都适合您的游戏。 ... [详细]
  • 新手指南何为PHP语言_PHP教程:PHP语言经过长时间的发展,很多用户都很了解PHP语言了,这里我发表一下个人理解,和大家讨论讨论。比较关注网络的朋友,特别是关注网站建设技术的朋 ... [详细]
  • C#的Type对象的简单应用
    通过Type对象可以获取类中所有的公有成员直接贴代码:classMyClass{privatestringname;privateintid;publicstringcity;pu ... [详细]
  • 7月9日结束了我的小学期后,正式开始了我的假期生活。这个星期,初步了解了一些Java的基础知识。1.JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需 ... [详细]
  • Step1:启动服务器首先启动zookeeperbinzookeeper-server-start.shconfigzookeeper.properties接着启动kafka服务 ... [详细]
  • 开发笔记:js正则表达式属性及方法的使用
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了js正则表达式属性及方法的使用相关的知识,希望对你有一定的参考价值。正则表达式直接量 ... [详细]
  • 【JVM技术专题】深入分析CG管理和原理查缺补漏「番外篇」
    前提概要本文主要针对HotspotVM中“CMSParNew”组合的一些使用场景进行总结。自Sun发布Java语言以来,开始使用GC技术来进行内存自动管理࿰ ... [详细]
  • *MIME:百度百科,就是通知浏览器是什么多媒体类型的类型。*ASP.NET:执行用户,2k3中是NETWORKSERVICE,其它系统是ASPNET帐 ... [详细]
  • 搜索+剪枝 POJ 1416 Shredding Company
    POJ1416ShreddingCompanyTimeLimit: 1000MSMemoryLimit: 10000KTotalSubmissions: 5231Accepted: ... [详细]
  • vue组件component的注册与使用详解_vue.js
    组件是Vue是一个可以重复使用的Vue实例, 它拥有独一无二的组件名称,它可以扩展HTML元素,以组件名称的方式作为自定义的HTML标签,这篇文章主要介绍了vue组件compone ... [详细]
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社区 版权所有