MXDB:MatrixDB演示
4节点的MatrixDB部署配置文件,使用一个Master与3对数据节点
---
######################################################################
# File : pigsty.yml
# Desc : Pigsty matrixdb 4-node exmaple file
# Link : https://pigsty.cc/#/v-config
# Ctime : 2020-05-22
# Mtime : 2022-05-22
# Copyright (C) 2018-2022 Ruohang Feng (rh@vonng.com)
######################################################################
######################################################################
# 1. mx-mdw-1 : 10.10.10.10 (2 Core | 4GB) mx-mdw-1(m)
# 2. mx-sdw-1 : 10.10.10.11 (1 Core | 1GB) mx-seg1-1(p) mx-seg2-2(r)
# 3. mx-sdw-2 : 10.10.10.12 (1 Core | 1GB) mx-seg2-1(p) mx-seg3-2(r)
# 4. mx-sdw-3 : 10.10.10.13 (1 Core | 1GB) mx-seg3-1(p) mx-seg1-2(r)
######################################################################
all:
##################################################################
# CLUSTERS #
##################################################################
# meta nodes, nodes, pgsql, redis, pgsql clusters are defined as
# k:v pair inside `all.children`. Where the key is cluster name
# and value is cluster definition consist of two parts:
# `hosts`: cluster members ip and instance level variables
# `vars` : cluster level variables
##################################################################
children: # groups definition
#================================================================#
# Meta Nodes: Admin Controller #
#================================================================#
meta: # meta nodes are defined in this special group "meta"
vars:
meta_node: true # mark this group as meta nodes
ansible_group_priority: 99 # overwrite with the highest priority
nginx_enabled: true # setup repo & underlying nginx
nameserver_enabled: false # setup dnsmasq
prometheus_enabled: true # setup prometheus
grafana_enabled: true # setup grafana
loki_enabled: true # setup loki
docker_enabled: true # setup docker
dcs_safeguard: false # protect dcs server from fat fingers
hosts: # add nodes to group 'meta'
10.10.10.10: { }
# 10.10.10.11: { nginx_enabled: false }
# 10.10.10.12: { nginx_enabled: false }
#================================================================#
#================================================================#
# GPSQL Clusters #
#================================================================#
#----------------------------------#
# cluster: mx-mdw (gp master)
#----------------------------------#
mx-mdw:
hosts:
10.10.10.10: { pg_seq: 1, pg_role: primary , nodename: mx-mdw-1 }
vars:
gp_role: master # this cluster is used as greenplum master
pg_shard: mx # pgsql sharding name & gpsql deployment name
pg_cluster: mx-mdw # this master cluster name is mx-mdw
pg_databases:
- { name: matrixmgr , extensions: [ { name: matrixdbts } ] }
- { name: meta }
pg_users:
- { name: meta , password: DBUser.Meta , pgbouncer: true }
- { name: dbuser_monitor , password: DBUser.Monitor , roles: [ dbrole_readonly ], superuser: true }
pgbouncer_enabled: true # enable pgbouncer for greenplum master
pgbouncer_exporter_enabled: false # enable pgbouncer_exporter for greenplum master
pg_exporter_params: 'host=127.0.0.1&sslmode=disable' # use 127.0.0.1 as local monitor host
#----------------------------------#
# cluster: mx-sdw (gp master)
#----------------------------------#
mx-sdw:
hosts:
10.10.10.11:
nodename: mx-sdw-1 # greenplum segment node
pg_instances: # greenplum segment instances
6000: { pg_cluster: mx-seg1, pg_seq: 1, pg_role: primary , pg_exporter_port: 9633 }
6001: { pg_cluster: mx-seg2, pg_seq: 2, pg_role: replica , pg_exporter_port: 9634 }
10.10.10.12:
nodename: mx-sdw-2
pg_instances:
6000: { pg_cluster: mx-seg2, pg_seq: 1, pg_role: primary , pg_exporter_port: 9633 }
6001: { pg_cluster: mx-seg3, pg_seq: 2, pg_role: replica , pg_exporter_port: 9634 }
10.10.10.13:
nodename: mx-sdw-3
pg_instances:
6000: { pg_cluster: mx-seg3, pg_seq: 1, pg_role: primary , pg_exporter_port: 9633 }
6001: { pg_cluster: mx-seg1, pg_seq: 2, pg_role: replica , pg_exporter_port: 9634 }
vars:
gp_role: segment # these are nodes for gp segments
pg_shard: mx # pgsql sharding name & gpsql deployment name
pg_cluster: mx-sdw # these segment clusters name is mx-sdw
pg_preflight_skip: true # skip preflight check (since pg_seq & pg_role & pg_cluster not exists)
pg_exporter_config: pg_exporter_basic.yml # use basic config to avoid segment server crash
pg_exporter_params: 'options=-c%20gp_role%3Dutility&sslmode=disable' # use gp_role = utility to connect to segments
####################################################################
# VARS #
####################################################################
vars: # global variables
version: v1.5.1 # pigsty version string
#================================================================#
# VARS: INFRA #
#================================================================#
#-----------------------------------------------------------------
# CONNECT
#-----------------------------------------------------------------
# INSTANCE level ansible connect parameters
# ansible_user: vagrant # which user to be used (when connecting to remote nodes)
# ansible_port: 22 # which port to be used (when connecting to remote nodes)
# ansible_host: meta # ssh alias host name (when connecting to remote nodes)
# ansible_ssh_private_key_file: ~/.ssh/id_rsa # ssh private key file
# ansible_ssh_common_args: '-o StrictHostKeyChecking=no' # ssh common args
proxy_env: # global proxy env when downloading packages
no_proxy: "localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.myqcloud.com,*.tsinghua.edu.cn"
# http_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
# https_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
# all_proxy: # set your proxy here: e.g http://user:pass@proxy.xxx.com
#-----------------------------------------------------------------
# CA
#-----------------------------------------------------------------
ca_method: create # create|copy|recreate
ca_subject: "/CN=root-ca" # self-signed CA subject
ca_homedir: /ca # ca cert directory
ca_cert: ca.crt # ca public key/cert
ca_key: ca.key # ca private key
#-----------------------------------------------------------------
# NGINX
#-----------------------------------------------------------------
nginx_enabled: true # build local repo on this node
nginx_port: 80 # repo listen address, must same as repo_address
nginx_home: /www # default repo home dir
nginx_upstream: # domain names and upstream servers
- { name: home , domain: pigsty , endpoint: "10.10.10.10:80" }
- { name: grafana , domain: g.pigsty , endpoint: "10.10.10.10:3000" }
- { name: loki , domain: l.pigsty , endpoint: "10.10.10.10:3100" }
- { name: prometheus , domain: p.pigsty , endpoint: "10.10.10.10:9090" }
- { name: alertmanager , domain: a.pigsty , endpoint: "10.10.10.10:9093" }
- { name: consul , domain: c.pigsty , endpoint: "127.0.0.1:8500" }
- { name: matrixdb , domain: mx.pigsty , endpoint: "127.0.0.1:8240" }
nginx_indexes: # application nav links on home page
- { name: MatrixDB , url : 'http://mx.pigsty' , comment: 'MatrixDB Installer' }
- { name: Explain , url : '/pev2' , comment: 'postgres explain visualizer' }
- { name: Package , url : '/pigsty' , comment: 'local yum repo packages' }
- { name: PG Logs , url : '/logs' , comment: 'postgres raw csv logs' }
- { name: Schemas , url : '/schema' , comment: 'schemaspy summary report' }
- { name: Reports , url : '/report' , comment: 'pgbadger summary report' }
#-----------------------------------------------------------------
# REPO
#-----------------------------------------------------------------
repo_name: pigsty # repo name, pigsty by default
repo_address: pigsty # external address to this repo (ip:port or url)
repo_rebuild: false # force re-download packages
repo_remove: true # remove existing upstream repo
repo_upstreams: # where to download packages?
- name: base
description: CentOS-$releasever - Base
gpgcheck: no
baseurl:
- https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
- http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
- http://mirror.centos.org/centos/$releasever/os/$basearch/
- name: updates
description: CentOS-$releasever - Updates
gpgcheck: no
baseurl:
- https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
- http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
- http://mirror.centos.org/centos/$releasever/updates/$basearch/
- name: extras
description: CentOS-$releasever - Extras
baseurl:
- https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
- http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
- http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck: no
- name: epel
description: CentOS $releasever - epel
gpgcheck: no
baseurl:
- https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch
- http://mirrors.aliyun.com/epel/$releasever/$basearch
- http://download.fedoraproject.org/pub/epel/$releasever/$basearch
- name: grafana
description: Grafana Official Yum Repo
enabled: yes
gpgcheck: no
baseurl:
- https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm
- https://packages.grafana.com/oss/rpm
- name: prometheus
description: Prometheus and exporters
gpgcheck: no
baseurl: https://packagecloud.io/prometheus-rpm/release/el/$releasever/$basearch
- name: pgdg-common
description: PostgreSQL common RPMs for RHEL/CentOS $releasever - $basearch
gpgcheck: no
baseurl:
- http://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/common/redhat/rhel-$releasever-$basearch
- https://download.postgresql.org/pub/repos/yum/common/redhat/rhel-$releasever-$basearch
- name: pgdg14
description: PostgreSQL 14 for RHEL/CentOS $releasever - $basearch
gpgcheck: no
baseurl:
- https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/yum/14/redhat/rhel-$releasever-$basearch
- https://download.postgresql.org/pub/repos/yum/14/redhat/rhel-$releasever-$basearch
- name: timescaledb
description: TimescaleDB for RHEL/CentOS $releasever - $basearch
gpgcheck: no
baseurl:
- https://packagecloud.io/timescale/timescaledb/el/7/$basearch
- name: centos-sclo
description: CentOS-$releasever - SCLo
gpgcheck: no
#mirrorlist: http://mirrorlist.centos.org?arch=$basearch&release=$releasever&repo=sclo-sclo
baseurl: http://mirrors.aliyun.com/centos/$releasever/sclo/$basearch/sclo/
- name: centos-sclo-rh
description: CentOS-$releasever - SCLo rh
gpgcheck: no
#mirrorlist: http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
baseurl: http://mirrors.aliyun.com/centos/$releasever/sclo/$basearch/rh/
- name: nginx
description: Nginx Official Yum Repo
skip_if_unavailable: true
gpgcheck: no
baseurl: http://nginx.org/packages/centos/$releasever/$basearch/
- name: harbottle # for latest consul & kubernetes
description: Copr repo for main owned by harbottle
skip_if_unavailable: true
gpgcheck: no
baseurl: https://download.copr.fedorainfracloud.org/results/harbottle/main/epel-$releasever-$basearch/
- name: pg_probackup # for pg_probackup
description: PG_PROBACKUP Centos packages for PostgresPro Standard and Enterprise - $basearch
skip_if_unavailable: true
gpgcheck: no
baseurl: https://repo.postgrespro.ru/pg_probackup-forks/rpm/latest/centos-$releasever-$basearch
- name: docker-ce # for latest docker
description: Docker CE Stable - $basearch
skip_if_unavailable: true
gpgcheck: no
baseurl:
- https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
- https://download.docker.com/linux/centos/$releasever/$basearch/stable
repo_packages: # which packages to be included # what to download #
- epel-release nginx wget yum-utils yum createrepo sshpass zip unzip # ---- boot ---- #
- ntp chrony uuid lz4 bzip2 nc pv jq vim-enhanced make patch bash lsof wget git tuned perf ftp lrzsz rsync # ---- node ---- #
- numactl grubby sysstat dstat iotop bind-utils net-tools tcpdump socat ipvsadm telnet ca-certificates keepalived # ----- utils ----- #
- readline zlib openssl openssh-clients libyaml libxml2 libxslt libevent perl perl-devel perl-ExtUtils* # --- deps:pg --- #
- readline-devel zlib-devel uuid-devel libuuid-devel libxml2-devel libxslt-devel openssl-devel libicu-devel # --- deps:devel -- #
- grafana prometheus2 pushgateway alertmanager mtail consul consul_exporter consul-template etcd dnsmasq # ----- meta ----- #
- node_exporter nginx_exporter blackbox_exporter redis_exporter # ---- exporter --- #
- ansible python python-pip python-psycopg2 # - ansible & py3 - #
- python3 python3-psycopg2 python36-requests python3-etcd python3-consul python36-urllib3 python36-idna python36-pyOpenSSL python36-cryptography
- patroni patroni-consul patroni-etcd pgbouncer pg_cli pgbadger pg_activity tail_n_mail # -- pgsql common - #
- pgcenter boxinfo check_postgres emaj pgbconsole pg_bloat_check pgquarrel barman barman-cli pgloader pgFormatter pitrery pspg pgxnclient PyGreSQL
- postgresql14* postgis32_14* citus_14* pglogical_14* timescaledb-2-postgresql-14 pg_repack_14 wal2json_14 # -- pg14 packages -#
- pg_qualstats_14 pg_stat_kcache_14 pg_stat_monitor_14 pg_top_14 pg_track_settings_14 pg_wait_sampling_14 pg_probackup-std-14
- pg_statement_rollback_14 system_stats_14 plproxy_14 plsh_14 pldebugger_14 plpgsql