ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

citus 11 参考简单使用

2022-06-18 23:35:04  阅读:181  来源: 互联网

标签:11 haproxy stats POSTGRES 参考 citus key data


基于官当的docker-compose 模板简单测试下citus 11 的查询特性,对于负载lb 基于了haproxy

测试说明

使用docker-compose 进行worker 节点的扩容,注意是先准备好的,实际使用的时候会基于管理sql 添加节点的

环境准备

  • docker-compose 文件
version: "3"
services:
  haproxy:
    build: ./
    volumes:
      - "./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg"
    ports:
      - 5433:5433
      - 8404:8404
  master:
    container_name: "${COMPOSE_PROJECT_NAME:-citus}_master"
    image: "citusdata/citus:11.0.2"
    ports: [ "${COORDINATOR_EXTERNAL_PORT:-5432}:5432" ]
    labels: [ "com.citusdata.role=Master" ]
    environment:
      &AUTH
      POSTGRES_USER: "${POSTGRES_USER:-postgres}"
      POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
      PGUSER: "${POSTGRES_USER:-postgres}"
      PGPASSWORD: "${POSTGRES_PASSWORD}"
      POSTGRES_HOST_AUTH_METHOD: "${POSTGRES_HOST_AUTH_METHOD:-trust}"
  worker:
    image: "citusdata/citus:11.0.2"
    labels: [ "com.citusdata.role=Worker" ]
    depends_on: [ manager ]
    environment: *AUTH
    command: "/wait-for-manager.sh"
    volumes:
      - healthcheck-volume:/healthcheck
  manager:
    container_name: "${COMPOSE_PROJECT_NAME:-citus}_manager"
    image: "citusdata/membership-manager:0.3.0"
    volumes:
      - "${DOCKER_SOCK:-/var/run/docker.sock}:/var/run/docker.sock"
      - healthcheck-volume:/healthcheck
    depends_on: [ master ]
    environment: *AUTH
volumes:
  healthcheck-volume:

haproxy 配置

global
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    # daemon
 
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    tcp
    log                     global
    option                  tcplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
resolvers mynameservers
   nameserver ns1 127.0.0.11:53
 
frontend mysite
  bind :5433
  default_backend webservers
 
backend webservers
  balance roundrobin
  mode tcp
  server web1 worker:5432 check maxconn 300 resolvers mynameservers # 基于dns 的lb,为了测试,没有添加协调节点的服务
 
frontend stats
    bind *:8404
    mode http
    stats enable
    stats uri /stats
    http-request use-service prometheus-exporter if { path /metrics }
    stats refresh 10s
    stats admin if LOCALHOST

haproxy 基础镜像

FROM dalongrong/haproxy:2.6-debian-quic

测试

  • 启动
docker-compose up -d 
  • worker 节点扩容
    默认的member 服务会自动添加节点的
 
docker-compose -p citus scale worker=5 

效果

SELECT master_get_active_worker_nodes();

 

 


haproxy 监控

 

 

  • 创建分布式表
 
CREATE TABLE data (key text primary key, value jsonb);
SELECT create_distributed_table('data','key');
 
CREATE TABLE data_audit (operation text, key text, new_value jsonb, change_time timestamptz default now());
SELECT create_distributed_table('data_audit','key', colocate_with := 'data');
 
-- we know this function only writes to a co-located table using the same key
CREATE OR REPLACE FUNCTION audit_trigger()
RETURNS trigger
AS $$
DECLARE
BEGIN
    INSERT INTO data_audit VALUES (TG_OP, Coalesce(OLD.key, NEW.key), NEW.value);
    RETURN NULL;
END;
$$ LANGUAGE plpgsql;
 
-- so, it is safe to enable triggers on distributed tables
SET citus.enable_unsafe_triggers TO on;
 
CREATE TRIGGER data_audit_trigger
AFTER INSERT OR UPDATE OR DELETE ON data
FOR EACH ROW EXECUTE FUNCTION audit_trigger();

查询以及写入
我们可以通过工具连接pg 协调节点是5432,lb 是5433 会发现都是可以写入以及查询的,但是对于schema 的处理就需要通过协调节点操作了

一些参考资料

来自官方介绍

 

 

 

 


 

 

 

 

 

 


 

 


 

 


 

 


说明

citus 11 是一个很值得使用的版本,企业特性完全开源了,这样大规划使用风险就很小了,而且维护就更加方便了

参考资料

https://www.citusdata.com/blog/2022/06/17/citus-11-goes-fully-open-source/#any-node

标签:11,haproxy,stats,POSTGRES,参考,citus,key,data
来源: https://www.cnblogs.com/rongfengliang/p/16389608.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有