Kaynağa Gözat

[ADD] initial commit

robert2206 7 yıl önce
işleme
611ceff380

+ 65 - 0
odoo-8.0-jessie/Dockerfile

@@ -0,0 +1,65 @@
+FROM debian:jessie
+MAINTAINER Robert Alexis Gauto <robert.gauto@gmail.com>
+
+# Install some deps, lessc and less-plugin-clean-css, and wkhtmltopdf
+RUN set -x; \
+        apt-get update \
+        && apt-get install -y --no-install-recommends \
+            ca-certificates \
+	    gcc \
+            curl \
+            node-less \
+            node-clean-css \
+            python-renderpm \
+            python-support \
+            python-pip \
+	    python-psycopg2 \
+            python-gevent \
+	    python-pyinotify \
+        && curl -o wkhtmltox.deb -SL http://nightly.odoo.com/extra/wkhtmltox-0.12.1.2_linux-jessie-amd64.deb \
+        && echo '40e8b906de658a2221b15e4e8cd82565a47d7ee8 wkhtmltox.deb' | sha1sum -c - \
+        && dpkg --force-depends -i wkhtmltox.deb \
+        && apt-get -y install -f --no-install-recommends \
+        && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false -o APT::AutoRemove::SuggestsImportant=false npm \
+        && rm -rf /var/lib/apt/lists/* wkhtmltox.deb
+
+# Install python deps
+RUN pip install num2words
+RUN pip install psycogreen
+RUN pip install phonenumbers
+
+# Install Odoo
+ENV ODOO_VERSION 8.0
+ENV ODOO_RELEASE 20171009
+RUN set -x; \
+        curl -o odoo.deb -SL http://nightly.odoo.com/${ODOO_VERSION}/nightly/deb/odoo_${ODOO_VERSION}.${ODOO_RELEASE}_all.deb \
+        && echo '133d49bc8ea7751752b3761e02e638d8451dfbc4 odoo.deb' | sha1sum -c - \
+        && dpkg --force-depends -i odoo.deb \
+        && apt-get update \
+        && apt-get -y install -f --no-install-recommends \
+        && rm -rf /var/lib/apt/lists/* odoo.deb
+
+# Copy entrypoint script and Odoo configuration file
+COPY ./entrypoint.sh /
+RUN chmod +x /entrypoint.sh
+COPY ./openerp-server.conf /etc/odoo/
+RUN chown odoo /etc/odoo/openerp-server.conf
+
+# Mount /var/lib/odoo to allow restoring filestore and /mnt/extra-addons for users addons
+RUN mkdir -p /mnt/extra-addons \
+        && chown -R odoo /mnt/extra-addons
+RUN mkdir -p /opt/odoo/addons \
+	&& chown -R odoo /opt/odoo/addons
+VOLUME ["/var/lib/odoo", "/mnt/extra-addons"]
+
+# Expose Odoo services
+EXPOSE 8069 8071
+
+# Set the default config file
+ENV OPENERP_SERVER /etc/odoo/openerp-server.conf
+
+# Set default user when running the container
+USER odoo
+
+ENTRYPOINT ["/entrypoint.sh"]
+CMD ["openerp-server"]

+ 24 - 0
odoo-8.0-jessie/entrypoint.sh

@@ -0,0 +1,24 @@
+#!/bin/bash
+
+set -e
+
+# set odoo database host, port, user and password
+: ${PGHOST:=$DB_PORT_5432_TCP_ADDR}
+: ${PGPORT:=$DB_PORT_5432_TCP_PORT}
+: ${PGUSER:=${DB_ENV_POSTGRES_USER:='postgres'}}
+: ${PGPASSWORD:=$DB_ENV_POSTGRES_PASSWORD}
+export PGHOST PGPORT PGUSER PGPASSWORD
+
+case "$1" in
+	--)
+		shift
+		exec openerp-server "$@"
+		;;
+	-*)
+		exec openerp-server "$@"
+		;;
+	*)
+		exec "$@"
+esac
+
+exit 1

+ 38 - 0
odoo-8.0-jessie/openerp-server.conf

@@ -0,0 +1,38 @@
+[options]
+addons_path = /mnt/extra-addons,/usr/lib/python2.7/dist-packages/openerp/addons
+data_dir = /var/lib/odoo
+auto_reload = True
+; admin_passwd = admin
+; csv_internal_sep = ,
+; db_maxconn = 64
+; db_name = False
+; db_template = template1
+; dbfilter = .*
+; debug_mode = False
+; email_from = False
+; limit_memory_hard = 2684354560
+; limit_memory_soft = 2147483648
+; limit_request = 8192
+; limit_time_cpu = 60
+; limit_time_real = 120
+; list_db = True
+; log_db = False
+; log_handler = [':INFO']
+; log_level = info
+; logfile = None
+; longpolling_port = 8072
+; max_cron_threads = 2
+; osv_memory_age_limit = 1.0
+; osv_memory_count_limit = False
+; smtp_password = False
+; smtp_port = 25
+; smtp_server = localhost
+; smtp_ssl = False
+; smtp_user = False
+; workers = 0
+; xmlrpc = True
+; xmlrpc_interface = 
+; xmlrpc_port = 8069
+; xmlrpcs = True
+; xmlrpcs_interface = 
+; xmlrpcs_port = 8071

+ 19 - 0
omnidb-alpine/Dockerfile

@@ -0,0 +1,19 @@
+FROM alpine:3.7
+LABEL mantainer="robert.gauto@gmail.com"
+
+ENV VERSION="2.5.0"
+
+RUN set -x; \
+	apk update && \
+	apk upgrade && \
+	apk add --no-cache --update python3 && \
+	apk add --virtual --update musl-dev postgresql-dev python3-dev gcc && \
+	wget -O- https://github.com/OmniDB/OmniDB/archive/${VERSION}.tar.gz | tar xvz && \
+	cd OmniDB-${VERSION} && \
+	pip3 install -r requirements.txt && \
+	apk del musl-dev
+
+WORKDIR OmniDB-${VERSION}/OmniDB
+
+EXPOSE 8000
+CMD ["/usr/bin/python3", "manage.py", "runserver", "0.0.0.0:8000"]

+ 32 - 0
pgbouncer-alpine/Dockerfile

@@ -0,0 +1,32 @@
+FROM alpine:3.7
+LABEL maintainer="robert.gauto@gmail.com"
+
+ENV USER=pg CONFIG_PATH=/etc/pgbouncer LOG_PATH=/var/log/pgbouncer PID_PATH=/var/run/pgbouncer
+
+RUN set -x \
+	apk update && \
+        apk upgrade && \
+	apk add --no-cache --virtual \
+        pgbouncer && \
+	addgroup -S -g 1000 $USER && \
+  	adduser -S -H -D -h /home/$USER -s /bin/sh -u 1000 -G $USER $USER && \
+	echo "$USER:$(dd if=/dev/urandom bs=24 count=1 status=none | base64)" | chpasswd && \
+     	mkdir -p $CONFIG_PATH && \
+        mkdir -p $LOG_PATH && \
+        mkdir -p $PID_PATH && \
+	chmod -R 755 $LOG_PATH && \
+	chmod -R 755 $PID_PATH && \ 
+	chown -R $USER:$USER $LOG_PATH && \
+	chown -R $USER:$USER $PID_PATH
+
+VOLUME ["$CONFIG_PATH", "$LOG_PATH"]
+
+COPY pgbouncer.ini "$CONFIG_PATH"
+COPY userlist.txt "$CONFIG_PATH"
+
+ADD entrypoint.sh ./
+
+EXPOSE 6432
+
+ENTRYPOINT ["./entrypoint.sh"]
+CMD ["pgbouncer"]

+ 9 - 0
pgbouncer-alpine/entrypoint.sh

@@ -0,0 +1,9 @@
+#!/bin/sh
+
+if [ -e "/var/run/pgbouncer/pgbouncer.pid'" ] 
+then
+	echo "removing pgbouncer pid"
+	rm /var/run/pgbouncer/pgbouncer.pid
+fi
+
+exec "$@" -R -v -u pg /etc/pgbouncer/pgbouncer.ini

+ 342 - 0
pgbouncer-alpine/pgbouncer.ini

@@ -0,0 +1,342 @@
+;; database name = connect string
+;;
+;; connect string params:
+;;   dbname= host= port= user= password=
+;;   client_encoding= datestyle= timezone=
+;;   pool_size= connect_query=
+[databases]
+
+; foodb over unix socket
+;foodb =
+
+; redirect bardb to bazdb on localhost
+;bardb = host=localhost dbname=bazdb
+
+; access to dest database will go with single user
+;forcedb = host=127.0.0.1 port=300 user=baz password=foo client_encoding=UNICODE datestyle=ISO connect_query='SELECT 1'
+
+; use custom pool sizes
+;nondefaultdb = pool_size=50 reserve_pool_size=10
+
+; fallback connect string
+;* = host=testserver
+* = host=127.0.0.1 user=odoo password=zeus
+
+;; Configuration section
+[pgbouncer]
+
+;;;
+;;; Administrative settings
+;;;
+
+logfile = /var/log/pgbouncer/pgbouncer.log
+pidfile = /var/run/pgbouncer/pgbouncer.pid
+
+;;;
+;;; Where to wait for clients
+;;;
+
+; ip address or * which means all ip-s
+listen_addr = 127.0.0.1
+listen_port = 6432
+
+; unix socket is also used for -R.
+; On debian it should be /var/run/postgresql
+;unix_socket_dir = /tmp
+;unix_socket_mode = 0777
+;unix_socket_group =
+;unix_socket_dir = /var/run/postgresql
+
+;;;
+;;; TLS settings for accepring clients
+;;;
+
+;; disable, allow, require, verify-ca, verify-full
+;client_tls_sslmode = disable
+
+;; Path to file that contains trusted CA certs
+;client_tls_ca_file = <system default>
+
+;; Private key and cert to present to clients.
+;; Required for accepting TLS connections from clients.
+;client_tls_key_file =
+;client_tls_cert_file =
+
+;; fast, normal, secure, legacy, <ciphersuite string>
+;client_tls_ciphers = fast
+
+;; all, secure, tlsv1.0, tlsv1.1, tlsv1.2
+;client_tls_protocols = all
+
+;; none, auto, legacy
+;client_tls_dheparams = auto
+
+;; none, auto, <curve name>
+;client_tls_ecdhcurve = auto
+
+;;;
+;;; TLS settings for connecting to backend databases
+;;;
+
+;; disable, allow, require, verify-ca, verify-full
+;server_tls_sslmode = disable
+
+;; Path to that contains trusted CA certs
+;server_tls_ca_file = <system default>
+
+;; Private key and cert to present to backend.
+;; Needed only if backend server require client cert.
+;server_tls_key_file =
+;server_tls_cert_file =
+
+;; all, secure, tlsv1.0, tlsv1.1, tlsv1.2
+;server_tls_protocols = all
+
+;; fast, normal, secure, legacy, <ciphersuite string>
+;server_tls_ciphers = fast
+
+;;;
+;;; Authentication settings
+;;;
+
+; any, trust, plain, crypt, md5
+auth_type = md5
+;auth_file = /8.0/main/global/pg_auth
+auth_file = /etc/pgbouncer/userlist.txt
+
+;; Path to HBA-style auth config
+;auth_hba_file =
+
+;; Query to use to fetch password from database.  Result
+;; must have 2 columns - username and password hash.
+;auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=$1
+
+;;;
+;;; Users allowed into database 'pgbouncer'
+;;;
+
+; comma-separated list of users, who are allowed to change settings
+admin_users = pgbouncer,odoo
+
+; comma-separated list of users who are just allowed to use SHOW command
+;stats_users = stats, root
+
+;;;
+;;; Pooler personality questions
+;;;
+
+; When server connection is released back to pool:
+;   session      - after client disconnects
+;   transaction  - after transaction finishes
+;   statement    - after statement finishes
+pool_mode = transaction
+
+;
+; Query for cleaning connection immediately after releasing from client.
+; No need to put ROLLBACK here, pgbouncer does not reuse connections
+; where transaction is left open.
+;
+; Query for 8.3+:
+;   DISCARD ALL;
+;
+; Older versions:
+;   RESET ALL; SET SESSION AUTHORIZATION DEFAULT
+;
+; Empty if transaction pooling is in use.
+;
+server_reset_query = DISCARD ALL
+
+
+; Whether server_reset_query should run in all pooling modes.
+; If it is off, server_reset_query is used only for session-pooling.
+;server_reset_query_always = 0
+
+;
+; Comma-separated list of parameters to ignore when given
+; in startup packet.  Newer JDBC versions require the
+; extra_float_digits here.
+;
+;ignore_startup_parameters = extra_float_digits
+
+;
+; When taking idle server into use, this query is ran first.
+;   SELECT 1
+;
+;server_check_query = select 1
+
+; If server was used more recently that this many seconds ago,
+; skip the check query.  Value 0 may or may not run in immediately.
+;server_check_delay = 30
+
+;; Use <appname - host> as application_name on server.
+;application_name_add_host = 0
+
+;;;
+;;; Connection limits
+;;;
+
+; total number of clients that can connect
+max_client_conn = 500
+
+; default pool size.  20 is good number when transaction pooling
+; is in use, in session pooling it needs to be the number of
+; max clients you want to handle at any moment
+default_pool_size = 20
+
+;; Minimum number of server connections to keep in pool.
+;min_pool_size = 0
+
+; how many additional connection to allow in case of trouble
+;reserve_pool_size = 5
+
+; if a clients needs to wait more than this many seconds, use reserve pool
+;reserve_pool_timeout = 3
+
+; how many total connections to a single database to allow from all pools
+;max_db_connections = 50
+;max_user_connections = 50
+
+; If off, then server connections are reused in LIFO manner
+;server_round_robin = 0
+
+;;;
+;;; Logging
+;;;
+
+;; Syslog settings
+;syslog = 0
+;syslog_facility = daemon
+;syslog_ident = pgbouncer
+
+; log if client connects or server connection is made
+;log_connections = 1
+
+; log if and why connection was closed
+;log_disconnections = 1
+
+; log error messages pooler sends to clients
+;log_pooler_errors = 1
+
+;; Period for writing aggregated stats into log.
+;stats_period = 60
+
+;; Logging verbosity.  Same as -v switch on command line.
+;verbose=0
+
+;;;
+;;; Timeouts
+;;;
+
+;; Close server connection if its been connected longer.
+;server_lifetime = 1200
+
+;; Close server connection if its not been used in this time.
+;; Allows to clean unnecessary connections from pool after peak.
+;server_idle_timeout = 60
+
+;; Cancel connection attempt if server does not answer takes longer.
+;server_connect_timeout = 15
+
+;; If server login failed (server_connect_timeout or auth failure)
+;; then wait this many second.
+;server_login_retry = 15
+
+;; Dangerous.  Server connection is closed if query does not return
+;; in this time.  Should be used to survive network problems,
+;; _not_ as statement_timeout. (default: 0)
+;query_timeout = 0
+
+;; Dangerous.  Client connection is closed if the query is not assigned
+;; to a server in this time.  Should be used to limit the number of queued
+;; queries in case of a database or network failure. (default: 120)
+;query_wait_timeout = 120
+
+;; Dangerous.  Client connection is closed if no activity in this time.
+;; Should be used to survive network problems. (default: 0)
+;client_idle_timeout = 0
+
+;; Disconnect clients who have not managed to log in after connecting
+;; in this many seconds.
+;client_login_timeout = 60
+
+;; Clean automatically created database entries (via "*") if they
+;; stay unused in this many seconds.
+; autodb_idle_timeout = 3600
+
+;; How long SUSPEND/-R waits for buffer flush before closing connection.
+;suspend_timeout = 10
+
+;; Close connections which are in "IDLE in transaction" state longer than
+;; this many seconds.
+;idle_transaction_timeout = 0
+
+;;;
+;;; Low-level tuning options
+;;;
+
+;; buffer for streaming packets
+;pkt_buf = 4096
+
+;; man 2 listen
+;listen_backlog = 128
+
+;; Max number pkt_buf to process in one event loop.
+;sbuf_loopcnt = 5
+
+;; Maximum Postgres protocol packet size.
+;max_packet_size = 2147483647
+
+;; networking options, for info: man 7 tcp
+
+;; Linux: notify program about new connection only if there
+;; is also data received.  (Seconds to wait.)
+;; On Linux the default is 45, on other OS'es 0.
+;tcp_defer_accept = 0
+
+;; In-kernel buffer size (Linux default: 4096)
+;tcp_socket_buffer = 0
+
+;; whether tcp keepalive should be turned on (0/1)
+;tcp_keepalive = 1
+
+;; following options are Linux-specific.
+;; they also require tcp_keepalive=1
+
+;; count of keepaliva packets
+;tcp_keepcnt = 0
+
+;; how long the connection can be idle,
+;; before sending keepalive packets
+;tcp_keepidle = 0
+
+;; The time between individual keepalive probes.
+;tcp_keepintvl = 0
+
+;; DNS lookup caching time
+;dns_max_ttl = 15
+
+;; DNS zone SOA lookup period
+;dns_zone_check_period = 0
+
+;; DNS negative result caching time
+;dns_nxdomain_ttl = 15
+
+;;;
+;;; Random stuff
+;;;
+
+;; Hackish security feature.  Helps against SQL-injection - when PQexec is disabled,
+;; multi-statement cannot be made.
+;disable_pqexec=0
+
+;; Config file to use for next RELOAD/SIGHUP.
+;; By default contains config file from command line.
+;conffile
+
+;; Win32 service name to register as.  job_name is alias for service_name,
+;; used by some Skytools scripts.
+;service_name = pgbouncer
+;job_name = pgbouncer
+
+;; Read additional config from the /etc/pgbouncer/pgbouncer-other.ini file
+;%include /etc/pgbouncer/pgbouncer-other.ini

+ 2 - 0
pgbouncer-alpine/userlist.txt

@@ -0,0 +1,2 @@
+"odoo" "md5d809cbec227344a760375f79373dbf97"
+"pgbouncer" "md56adafd176f47e5a08d8f90975c734452"

+ 31 - 0
pgpool-alpine/Dockerfile

@@ -0,0 +1,31 @@
+FROM alpine:3.7
+LABEL mantainer="robert.gauto@gmail.com"
+
+ENV CONFIG_PATH=/etc PID_PATH=/var/run/pgpool
+
+RUN set -x \
+	apk update && \
+	apk upgrade && \
+	apk add --no-cache --virtual \
+	pgpool && \
+	mkdir -p $PID_PATH && \
+	mkdir -p $CONFIG_PATH
+
+VOLUME ["$CONFIG_PATH"]
+
+COPY pcp.conf "$CONFIG_PATH"
+COPY pool_hba.conf "$CONFIG_PATH"
+COPY pgpool.conf "$CONFIG_PATH"
+
+COPY failover.sh "$CONFIG_PATH"
+COPY recovery_1st_stage "$CONFIG_PATH"
+COPY pgpool_remote_start "$CONFIG_PATH"
+
+RUN chmod +x /etc/failover.sh && chmod +x /etc/recovery_1st_stage && chmod +x /etc/pgpool_remote_start
+
+ADD entrypoint.sh ./
+
+#EXPOSE 9999
+
+ENTRYPOINT ["./entrypoint.sh"]
+CMD ["pgpool"]

+ 9 - 0
pgpool-alpine/entrypoint.sh

@@ -0,0 +1,9 @@
+#!/bin/sh
+
+if [ -e "/var/run/pgpool/pgpool.pid" ] 
+then
+	echo "removing pgpool pid"
+	rm /var/run/pgpool/pgpool.pid
+fi
+
+exec "$@" -n -d

+ 16 - 0
pgpool-alpine/failover.sh

@@ -0,0 +1,16 @@
+#!/bin/bash -x
+FALLING_NODE=$1         # %d
+OLDPRIMARY_NODE=$2      # %P
+NEW_PRIMARY=$3          # %H
+PGDATA=$4               # %R
+
+if [ $FALLING_NODE = $OLDPRIMARY_NODE ]; then
+    if [ $UID -eq 0 ]
+    then
+        su postgres -c "ssh -T postgres@$NEW_PRIMARY touch $PGDATA/trigger"
+    else
+        ssh -T postgres@$NEW_PRIMARY touch $PGDATA/trigger
+    fi
+    exit 0;
+fi;
+exit 0;

+ 29 - 0
pgpool-alpine/pcp.conf

@@ -0,0 +1,29 @@
+# PCP Client Authentication Configuration File
+# ============================================
+#
+# This file contains user ID and his password for pgpool
+# communication manager authentication.
+#
+# Note that users defined here do not need to be PostgreSQL
+# users. These users are authorized ONLY for pgpool 
+# communication manager.
+#
+# File Format
+# ===========
+#
+# List one UserID and password on a single line. They must
+# be concatenated together using ':' (colon) between them.
+# No spaces or tabs are allowed anywhere in the line.
+#
+# Example:
+# postgres:e8a48653851e28c69d0506508fb27fc5
+#
+# Be aware that there will be no spaces or tabs at the
+# beginning of the line! although the above example looks
+# like so.
+#
+# Lines beginning with '#' (pound) are comments and will
+# be ignored. Again, no spaces or tabs allowed before '#'.
+
+# USERID:MD5PASSWD
+odoo:0a8f125a3f41f36c0507203a63cde9ad

+ 750 - 0
pgpool-alpine/pgpool.conf

@@ -0,0 +1,750 @@
+# ----------------------------
+# pgPool-II configuration file
+# ----------------------------
+#
+# This file consists of lines of the form:
+#
+#   name = value
+#
+# Whitespace may be used.  Comments are introduced with "#" anywhere on a line.
+# The complete list of parameter names and allowed values can be found in the
+# pgPool-II documentation.
+#
+# This file is read on server startup and when the server receives a SIGHUP
+# signal.  If you edit the file on a running system, you have to SIGHUP the
+# server for the changes to take effect, or use "pgpool reload".  Some
+# parameters, which are marked below, require a server shutdown and restart to
+# take effect.
+#
+
+
+#------------------------------------------------------------------------------
+# CONNECTIONS
+#------------------------------------------------------------------------------
+
+# - pgpool Connection Settings -
+
+listen_addresses = '*'
+                                   # Host name or IP address to listen on:
+                                   # '*' for all, '' for no TCP/IP connections                                   # (change requires restart)
+port = 9999
+                                   # Port number
+                                   # (change requires restart)
+socket_dir = '/tmp'
+                                   # Unix domain socket path
+                                   # The Debian package defaults to
+                                   # /var/run/postgresql
+                                   # (change requires restart)
+listen_backlog_multiplier = 2
+                                   # Set the backlog parameter of listen(2) to
+								   # num_init_children * listen_backlog_multiplier.
+                                   # (change requires restart)
+serialize_accept = off
+                                   # whether to serialize accept() call to avoid thundering herd problem
+                                   # (change requires restart)
+
+# - pgpool Communication Manager Connection Settings -
+
+pcp_listen_addresses = '*'
+                                   # Host name or IP address for pcp process to listen on:
+                                   # '*' for all, '' for no TCP/IP connections
+                                   # (change requires restart)
+pcp_port = 9898
+                                   # Port number for pcp
+                                   # (change requires restart)
+pcp_socket_dir = '/tmp'
+                                   # Unix domain socket path for pcp
+                                   # The Debian package defaults to
+                                   # /var/run/postgresql
+                                   # (change requires restart)
+
+# - Backend Connection Settings -
+
+backend_hostname0 = 'pg_1'
+                                   # Host name or IP address to connect to for backend 0
+backend_port0 = 5432
+                                   # Port number for backend 0
+backend_weight0 = 1
+                                   # Weight for backend 0 (only in load balancing mode)
+backend_data_directory0 = '/var/lib/postgresql/data'
+                                   # Data directory for backend 0
+backend_flag0 = 'ALLOW_TO_FAILOVER'
+                                   # Controls various backend behavior
+                                   # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER
+backend_hostname1 = 'pg_2'
+backend_port1 = 5432
+backend_weight1 = 1
+backend_data_directory1 = '/var/lib/postgresql/data'
+backend_flag1 = 'ALLOW_TO_FAILOVER'
+
+# - Authentication -
+
+enable_pool_hba = off
+                                   # Use pool_hba.conf for client authentication
+pool_passwd = 'pool_passwd'
+                                   # File name of pool_passwd for md5 authentication.
+                                   # "" disables pool_passwd.
+                                   # (change requires restart)
+authentication_timeout = 60
+                                   # Delay in seconds to complete client authentication
+                                   # 0 means no timeout.
+
+# - SSL Connections -
+
+ssl = off
+                                   # Enable SSL support
+                                   # (change requires restart)
+#ssl_key = './server.key'
+                                   # Path to the SSL private key file
+                                   # (change requires restart)
+#ssl_cert = './server.cert'
+                                   # Path to the SSL public certificate file
+                                   # (change requires restart)
+#ssl_ca_cert = ''
+                                   # Path to a single PEM format file
+                                   # containing CA root certificate(s)
+                                   # (change requires restart)
+#ssl_ca_cert_dir = ''
+                                   # Directory containing CA root certificate(s)
+                                   # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# POOLS
+#------------------------------------------------------------------------------
+
+# - Concurrent session and pool size -
+
+num_init_children = 32
+                                   # Number of concurrent sessions allowed
+                                   # (change requires restart)
+max_pool = 4
+                                   # Number of connection pool caches per connection
+                                   # (change requires restart)
+
+# - Life time -
+
+child_life_time = 300
+                                   # Pool exits after being idle for this many seconds
+child_max_connections = 0
+                                   # Pool exits after receiving that many connections
+                                   # 0 means no exit
+connection_life_time = 0
+                                   # Connection to backend closes after being idle for this many seconds
+                                   # 0 means no close
+client_idle_limit = 0
+                                   # Client is disconnected after being idle for that many seconds
+                                   # (even inside an explicit transactions!)
+                                   # 0 means no disconnection
+
+
+#------------------------------------------------------------------------------
+# LOGS
+#------------------------------------------------------------------------------
+
+# - Where to log -
+
+log_destination = 'stderr'
+                                   # Where to log
+                                   # Valid values are combinations of stderr,
+                                   # and syslog. Default to stderr.
+
+# - What to log -
+
+log_line_prefix = '%t: pid %p: '   # printf-style string to output at beginning of each log line.
+
+log_connections = off
+                                   # Log connections
+log_hostname = off
+                                   # Hostname will be shown in ps status
+                                   # and in logs if connections are logged
+log_statement = off
+                                   # Log all statements
+log_per_node_statement = off
+                                   # Log all statements
+                                   # with node and backend informations
+log_standby_delay = 'none'
+                                   # Log standby delay
+                                   # Valid values are combinations of always,
+                                   # if_over_threshold, none
+
+# - Syslog specific -
+
+syslog_facility = 'LOCAL0'
+                                   # Syslog local facility. Default to LOCAL0
+syslog_ident = 'pgpool'
+                                   # Syslog program identification string
+                                   # Default to 'pgpool'
+
+# - Debug -
+
+#log_error_verbosity = default          # terse, default, or verbose messages
+
+#client_min_messages = notice           # values in order of decreasing detail:
+                                        #   debug5
+                                        #   debug4
+                                        #   debug3
+                                        #   debug2
+                                        #   debug1
+                                        #   log
+                                        #   notice
+                                        #   warning
+                                        #   error
+
+#log_min_messages = warning             # values in order of decreasing detail:
+                                        #   debug5
+                                        #   debug4
+                                        #   debug3
+                                        #   debug2
+                                        #   debug1
+                                        #   info
+                                        #   notice
+                                        #   warning
+                                        #   error
+                                        #   log
+                                        #   fatal
+                                        #   panic
+
+#------------------------------------------------------------------------------
+# FILE LOCATIONS
+#------------------------------------------------------------------------------
+
+pid_file_name = '/var/run/pgpool/pgpool.pid'
+                                   # PID file name
+                                   # Can be specified as relative to the"
+                                   # location of pgpool.conf file or
+                                   # as an absolute path
+                                   # (change requires restart)
+logdir = '/tmp'
+                                   # Directory of pgPool status file
+                                   # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# CONNECTION POOLING
+#------------------------------------------------------------------------------
+
+connection_cache = on
+                                   # Activate connection pools
+                                   # (change requires restart)
+
+                                   # Semicolon separated list of queries
+                                   # to be issued at the end of a session
+                                   # The default is for 8.3 and later
+reset_query_list = 'ABORT; DISCARD ALL'
+                                   # The following one is for 8.2 and before
+#reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT'
+
+
+#------------------------------------------------------------------------------
+# REPLICATION MODE
+#------------------------------------------------------------------------------
+
+replication_mode = off
+                                   # Activate replication mode
+                                   # (change requires restart)
+replicate_select = off
+                                   # Replicate SELECT statements
+                                   # when in replication mode
+                                   # replicate_select is higher priority than
+                                   # load_balance_mode.
+
+insert_lock = on
+                                   # Automatically locks a dummy row or a table
+                                   # with INSERT statements to keep SERIAL data
+                                   # consistency
+                                   # Without SERIAL, no lock will be issued
+lobj_lock_table = ''
+                                   # When rewriting lo_creat command in
+                                   # replication mode, specify table name to
+                                   # lock
+
+# - Degenerate handling -
+
+replication_stop_on_mismatch = off
+                                   # On disagreement with the packet kind
+                                   # sent from backend, degenerate the node
+                                   # which is most likely "minority"
+                                   # If off, just force to exit this session
+
+failover_if_affected_tuples_mismatch = off
+                                   # On disagreement with the number of affected
+                                   # tuples in UPDATE/DELETE queries, then
+                                   # degenerate the node which is most likely
+                                   # "minority".
+                                   # If off, just abort the transaction to
+                                   # keep the consistency
+
+
+#------------------------------------------------------------------------------
+# LOAD BALANCING MODE
+#------------------------------------------------------------------------------
+
+load_balance_mode = on
+                                   # Activate load balancing mode
+                                   # (change requires restart)
+ignore_leading_white_space = on
+                                   # Ignore leading white spaces of each query
+white_function_list = ''
+                                   # Comma separated list of function names
+                                   # that don't write to database
+                                   # Regexp are accepted
+black_function_list = 'nextval,setval'
+                                   # Comma separated list of function names
+                                   # that write to database
+                                   # Regexp are accepted
+
+database_redirect_preference_list = ''
+								   # comma separated list of pairs of database and node id.
+								   # example: postgres:primary,mydb[0-4]:1,mydb[5-9]:2'
+								   # valid for streaming replicaton mode only.
+
+app_name_redirect_preference_list = ''
+								   # comma separated list of pairs of app name and node id.
+								   # example: 'psql:primary,myapp[0-4]:1,myapp[5-9]:standby'
+								   # valid for streaming replicaton mode only.
+allow_sql_comments = off
+								   # if on, ignore SQL comments when judging if load balance or
+								   # query cache is possible.
+								   # If off, SQL comments effectively prevent the judgment
+								   # (pre 3.4 behavior).
+
+#------------------------------------------------------------------------------
+# MASTER/SLAVE MODE
+#------------------------------------------------------------------------------
+
+master_slave_mode = on
+                                   # Activate master/slave mode
+                                   # (change requires restart)
+master_slave_sub_mode = 'stream'
+                                   # Master/slave sub mode
+                                   # Valid values are combinations stream, slony
+                                   # or logical. Default is stream.
+                                   # (change requires restart)
+
+# - Streaming -
+
+sr_check_period = 0
+                                   # Streaming replication check period
+                                   # Disabled (0) by default
+sr_check_user = 'odoo'
+                                   # Streaming replication check user
+                                   # This is neccessary even if you disable streaming
+                                   # replication delay check by sr_check_period = 0
+sr_check_password = 'odoo'
+                                   # Password for streaming replication check user
+sr_check_database = 'odoo'
+                                   # Database name for streaming replication check
+delay_threshold = 0
+                                   # Threshold before not dispatching query to standby node
+                                   # Unit is in bytes
+                                   # Disabled (0) by default
+
+# - Special commands -
+
+follow_master_command = ''
+                                   # Executes this command after master failover
+                                   # Special values:
+                                   #   %d = node id
+                                   #   %h = host name
+                                   #   %p = port number
+                                   #   %D = database cluster path
+                                   #   %m = new master node id
+                                   #   %H = hostname of the new master node
+                                   #   %M = old master node id
+                                   #   %P = old primary node id
+								   #   %r = new master port number
+								   #   %R = new master database cluster path
+                                   #   %% = '%' character
+
+#------------------------------------------------------------------------------
+# HEALTH CHECK GLOBAL PARAMETERS
+#------------------------------------------------------------------------------
+
+health_check_period = 0
+                                   # Health check period
+                                   # Disabled (0) by default
+health_check_timeout = 20
+                                   # Health check timeout
+                                   # 0 means no timeout
+health_check_user = 'odoo'
+                                   # Health check user
+health_check_password = 'odoo'
+                                   # Password for health check user
+health_check_database = 'odoo'
+                                   # Database name for health check. If '', tries 'postgres' frist, 
+health_check_max_retries = 0
+                                   # Maximum number of times to retry a failed health check before giving up.
+health_check_retry_delay = 1
+                                   # Amount of time to wait (in seconds) between retries.
+connect_timeout = 10000
+                                   # Timeout value in milliseconds before giving up to connect to backend.
+								   # Default is 10000 ms (10 second). Flaky network user may want to increase
+								   # the value. 0 means no timeout.
+								   # Note that this value is not only used for health check,
+								   # but also for ordinary conection to backend.
+
+#------------------------------------------------------------------------------
+# HEALTH CHECK PER NODE PARAMETERS (OPTIONAL)
+#------------------------------------------------------------------------------
+health_check_period0 = 0
+health_check_timeout0 = 20
+health_check_user0 = 'nobody'
+health_check_password0 = ''
+health_check_database0 = ''
+health_check_max_retries0 = 0
+health_check_retry_delay0 = 1
+connect_timeout0 = 10000
+
+#------------------------------------------------------------------------------
+# FAILOVER AND FAILBACK
+#------------------------------------------------------------------------------
+
+failover_command = '/etc/failover.sh %d %P %H %R'
+                                   # Executes this command at failover
+                                   # Special values:
+                                   #   %d = node id
+                                   #   %h = host name
+                                   #   %p = port number
+                                   #   %D = database cluster path
+                                   #   %m = new master node id
+                                   #   %H = hostname of the new master node
+                                   #   %M = old master node id
+                                   #   %P = old primary node id
+								   #   %r = new master port number
+								   #   %R = new master database cluster path
+                                   #   %% = '%' character
+failback_command = ''
+                                   # Executes this command at failback.
+                                   # Special values:
+                                   #   %d = node id
+                                   #   %h = host name
+                                   #   %p = port number
+                                   #   %D = database cluster path
+                                   #   %m = new master node id
+                                   #   %H = hostname of the new master node
+                                   #   %M = old master node id
+                                   #   %P = old primary node id
+								   #   %r = new master port number
+								   #   %R = new master database cluster path
+                                   #   %% = '%' character
+
+fail_over_on_backend_error = on
+                                   # Initiates failover when reading/writing to the
+                                   # backend communication socket fails
+                                   # If set to off, pgpool will report an
+                                   # error and disconnect the session.
+
+search_primary_node_timeout = 300
+                                   # Timeout in seconds to search for the
+                                   # primary node when a failover occurs.
+                                   # 0 means no timeout, keep searching
+                                   # for a primary node forever.
+
+#------------------------------------------------------------------------------
+# ONLINE RECOVERY
+#------------------------------------------------------------------------------
+
+recovery_user = 'odoo'
+                                   # Online recovery user
+recovery_password = 'odoo'
+                                   # Online recovery password
+recovery_1st_stage_command = '/etc/recovery_1st_stage'
+                                   # Executes a command in first stage
+recovery_2nd_stage_command = ''
+                                   # Executes a command in second stage
+recovery_timeout = 90
+                                   # Timeout in seconds to wait for the
+                                   # recovering node's postmaster to start up
+                                   # 0 means no wait
+client_idle_limit_in_recovery = 0
+                                   # Client is disconnected after being idle
+                                   # for that many seconds in the second stage
+                                   # of online recovery
+                                   # 0 means no disconnection
+                                   # -1 means immediate disconnection
+
+
+#------------------------------------------------------------------------------
+# WATCHDOG
+#------------------------------------------------------------------------------
+
+# - Enabling -
+
+use_watchdog = off
+                                    # Activates watchdog
+                                    # (change requires restart)
+
+# -Connection to up stream servers -
+
+trusted_servers = ''
+                                    # trusted server list which are used
+                                    # to confirm network connection
+                                    # (hostA,hostB,hostC,...)
+                                    # (change requires restart)
+ping_path = '/bin'
+                                    # ping command path
+                                    # (change requires restart)
+
+# - Watchdog communication Settings -
+
+wd_hostname = 'pg_1'
+wd_hostname = 'pg_2'
+                                    # Host name or IP address of this watchdog
+                                    # (change requires restart)
+wd_port = 9000
+                                    # port number for watchdog service
+                                    # (change requires restart)
+
+wd_priority = 1
+									# priority of this watchdog in leader election
+									# (change requires restart)
+
+wd_authkey = ''
+                                    # Authentication key for watchdog communication
+                                    # (change requires restart)
+
+wd_ipc_socket_dir = '/tmp'
+									# Unix domain socket path for watchdog IPC socket
+									# The Debian package defaults to
+									# /var/run/postgresql
+									# (change requires restart)
+
+
+# - Virtual IP control Setting -
+
+delegate_IP = '172.20.0.55'
+                                    # delegate IP address
+                                    # If this is empty, virtual IP never bring up. 
+                                    # (change requires restart)
+if_cmd_path = '/sbin'
+                                    # path to the directory where if_up/down_cmd exists 
+                                    # (change requires restart)
+if_up_cmd = 'ip addr add $_IP_$/24 dev eth0 label eth0:0'
+                                    # startup delegate IP command
+                                    # (change requires restart)
+if_down_cmd = 'ip addr del $_IP_$/24 dev eth0'
+                                    # shutdown delegate IP command
+                                    # (change requires restart)
+arping_path = '/usr/sbin'
+                                    # arping command path
+                                    # (change requires restart)
+arping_cmd = 'arping -U $_IP_$ -w 1'
+                                    # arping command
+                                    # (change requires restart)
+
+# - Behaivor on escalation Setting -
+
+clear_memqcache_on_escalation = on
+                                    # Clear all the query cache on shared memory
+                                    # when standby pgpool escalate to active pgpool
+                                    # (= virtual IP holder).
+                                    # This should be off if client connects to pgpool
+                                    # not using virtual IP.
+                                    # (change requires restart)
+wd_escalation_command = ''
+                                    # Executes this command at escalation on new active pgpool.
+                                    # (change requires restart)
+wd_de_escalation_command = ''
+									# Executes this command when master pgpool resigns from being master.
+									# (change requires restart)
+
+# - Watchdog consensus settings for failover -
+
+failover_when_quorum_exists = on
+									# Only perform backend node failover
+									# when the watchdog cluster holds the quorum
+									# (change requires restart)
+
+failover_require_consensus = on
+									# Perform failover when majority of Pgpool-II nodes
+									# aggrees on the backend node status change
+									# (change requires restart)
+
+allow_multiple_failover_requests_from_node = off
+									# A Pgpool-II node can cast multiple votes
+									# for building the consensus on failover
+									# (change requires restart)
+
+
+# - Lifecheck Setting -
+
+# -- common --
+
+wd_monitoring_interfaces_list = ''  # Comma separated list of interfaces names to monitor.
+									# if any interface from the list is active the watchdog will
+									# consider the network is fine
+									# 'any' to enable monitoring on all interfaces except loopback
+									# '' to disable monitoring
+									# (change requires restart)
+
+wd_lifecheck_method = 'heartbeat'
+                                    # Method of watchdog lifecheck ('heartbeat' or 'query' or 'external')
+                                    # (change requires restart)
+wd_interval = 10
+                                    # lifecheck interval (sec) > 0
+                                    # (change requires restart)
+
+# -- heartbeat mode --
+
+wd_heartbeat_port = 9694
+                                    # Port number for receiving heartbeat signal
+                                    # (change requires restart)
+wd_heartbeat_keepalive = 2
+                                    # Interval time of sending heartbeat signal (sec)
+                                    # (change requires restart)
+wd_heartbeat_deadtime = 30
+                                    # Deadtime interval for heartbeat signal (sec)
+                                    # (change requires restart)
+heartbeat_destination0 = 'host0_ip1'
+                                    # Host name or IP address of destination 0
+                                    # for sending heartbeat signal.
+                                    # (change requires restart)
+heartbeat_destination_port0 = 9694 
+                                    # Port number of destination 0 for sending
+                                    # heartbeat signal. Usually this is the
+                                    # same as wd_heartbeat_port.
+                                    # (change requires restart)
+heartbeat_device0 = ''
+                                    # Name of NIC device (such like 'eth0')
+                                    # used for sending/receiving heartbeat
+                                    # signal to/from destination 0.
+                                    # This works only when this is not empty
+                                    # and pgpool has root privilege.
+                                    # (change requires restart)
+
+#heartbeat_destination1 = 'host0_ip2'
+#heartbeat_destination_port1 = 9694
+#heartbeat_device1 = ''
+
+# -- query mode --
+
+wd_life_point = 3
+                                    # lifecheck retry times
+                                    # (change requires restart)
+wd_lifecheck_query = 'SELECT 1'
+                                    # lifecheck query to pgpool from watchdog
+                                    # (change requires restart)
+wd_lifecheck_dbname = 'template1'
+                                    # Database name connected for lifecheck
+                                    # (change requires restart)
+wd_lifecheck_user = 'nobody'
+                                    # watchdog user monitoring pgpools in lifecheck
+                                    # (change requires restart)
+wd_lifecheck_password = ''
+                                    # Password for watchdog user in lifecheck
+                                    # (change requires restart)
+
+# - Other pgpool Connection Settings -
+
+#other_pgpool_hostname0 = 'host0'
+                                    # Host name or IP address to connect to for other pgpool 0
+                                    # (change requires restart)
+#other_pgpool_port0 = 5432
+                                    # Port number for othet pgpool 0
+                                    # (change requires restart)
+#other_wd_port0 = 9000
+                                    # Port number for othet watchdog 0
+                                    # (change requires restart)
+#other_pgpool_hostname1 = 'host1'
+#other_pgpool_port1 = 5432
+#other_wd_port1 = 9000
+
+
+#------------------------------------------------------------------------------
+# OTHERS
+#------------------------------------------------------------------------------
+relcache_expire = 0
+                                   # Life time of relation cache in seconds.
+                                   # 0 means no cache expiration(the default).
+                                   # The relation cache is used for cache the
+                                   # query result against PostgreSQL system
+                                   # catalog to obtain various information
+                                   # including table structures or if it's a
+                                   # temporary table or not. The cache is
+                                   # maintained in a pgpool child local memory
+                                   # and being kept as long as it survives.
+                                   # If someone modify the table by using
+                                   # ALTER TABLE or some such, the relcache is
+                                   # not consistent anymore.
+                                   # For this purpose, cache_expiration
+                                   # controls the life time of the cache.
+relcache_size = 256
+                                   # Number of relation cache
+                                   # entry. If you see frequently:
+								   # "pool_search_relcache: cache replacement happend"
+								   # in the pgpool log, you might want to increate this number.
+
+check_temp_table = on
+                                   # If on, enable temporary table check in SELECT statements.
+                                   # This initiates queries against system catalog of primary/master
+								   # thus increases load of master.
+								   # If you are absolutely sure that your system never uses temporary tables
+								   # and you want to save access to primary/master, you could turn this off.
+								   # Default is on.
+
+check_unlogged_table = on
+                                   # If on, enable unlogged table check in SELECT statements.
+                                   # This initiates queries against system catalog of primary/master
+                                   # thus increases load of master.
+                                   # If you are absolutely sure that your system never uses unlogged tables
+                                   # and you want to save access to primary/master, you could turn this off.
+                                   # Default is on.
+
+#------------------------------------------------------------------------------
+# IN MEMORY QUERY MEMORY CACHE
+#------------------------------------------------------------------------------
+memory_cache_enabled = off
+								   # If on, use the memory cache functionality, off by default
+memqcache_method = 'shmem'
+								   # Cache storage method. either 'shmem'(shared memory) or
+								   # 'memcached'. 'shmem' by default
+                                   # (change requires restart)
+memqcache_memcached_host = 'localhost'
+								   # Memcached host name or IP address. Mandatory if
+								   # memqcache_method = 'memcached'.
+								   # Defaults to localhost.
+                                   # (change requires restart)
+memqcache_memcached_port = 11211
+								   # Memcached port number. Mondatory if memqcache_method = 'memcached'.
+								   # Defaults to 11211.
+                                   # (change requires restart)
+memqcache_total_size = 67108864
+								   # Total memory size in bytes for storing memory cache.
+								   # Mandatory if memqcache_method = 'shmem'.
+								   # Defaults to 64MB.
+                                   # (change requires restart)
+memqcache_max_num_cache = 1000000
+								   # Total number of cache entries. Mandatory
+								   # if memqcache_method = 'shmem'.
+								   # Each cache entry consumes 48 bytes on shared memory.
+								   # Defaults to 1,000,000(45.8MB).
+                                   # (change requires restart)
+memqcache_expire = 0
+								   # Memory cache entry life time specified in seconds.
+								   # 0 means infinite life time. 0 by default.
+                                   # (change requires restart)
+memqcache_auto_cache_invalidation = on
+								   # If on, invalidation of query cache is triggered by corresponding
+								   # DDL/DML/DCL(and memqcache_expire).  If off, it is only triggered
+								   # by memqcache_expire.  on by default.
+                                   # (change requires restart)
+memqcache_maxcache = 409600
+								   # Maximum SELECT result size in bytes.
+								   # Must be smaller than memqcache_cache_block_size. Defaults to 400KB.
+                                   # (change requires restart)
+memqcache_cache_block_size = 1048576
+								   # Cache block size in bytes. Mandatory if memqcache_method = 'shmem'.
+								   # Defaults to 1MB.
+                                   # (change requires restart)
+memqcache_oiddir = '/var/log/pgpool/oiddir'
+				   				   # Temporary work directory to record table oids
+                                   # (change requires restart)
+white_memqcache_table_list = ''
+                                   # Comma separated list of table names to memcache
+                                   # that don't write to database
+                                   # Regexp are accepted
+black_memqcache_table_list = ''
+                                   # Comma separated list of table names not to memcache
+                                   # that don't write to database
+                                   # Regexp are accepted

+ 10 - 0
pgpool-alpine/pgpool_remote_start

@@ -0,0 +1,10 @@
+#!/bin/sh
+
+REMOTE_HOST=$1
+REMOTE_PGDATA=$2
+
+PGHOME=/home/yugo-n/pgsql-9.2.1
+
+ssh -T postgres@$REMOTE_HOST "
+LD_LIBRARY_PATH=$PGHOME/lib:LD_LIBRARH_PATH;
+$PGHOME/bin/pg_ctl -w -D $REMOTE_PGDATA start 2>/dev/null 1>/dev/null < /dev/null &"

+ 69 - 0
pgpool-alpine/pool_hba.conf

@@ -0,0 +1,69 @@
+# pgpool Client Authentication Configuration File
+# ===============================================
+#
+# The format rule in this file follows the rules in the PostgreSQL
+# Administrator's Guide. Refer to chapter "Client Authentication" for a
+# complete description.  A short synopsis follows.
+#
+# This file controls: which hosts are allowed to connect, how clients
+# are authenticated, which user names they can use, which databases they
+# can access.  Records take one of these forms:
+#
+# local      DATABASE  USER  METHOD  [OPTION]
+# host       DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]
+#
+# (The uppercase items must be replaced by actual values.)
+#
+# The first field is the connection type: "local" is a Unix-domain
+# socket, "host" is either a plain or SSL-encrypted TCP/IP socket.
+#
+# DATABASE can be "all", "sameuser", a database name, or a comma-separated
+# list thereof. Note that "samegroup" like in PostgreSQL's pg_hba.conf
+# file is not supported, since pgpool does not know which group a user
+# belongs to. Also note that the database specified here may not exist in
+# the backend PostgreSQL. pgpool will authenticate based on the database's
+# name, not based on whether it exists or not.
+#
+# USER can be "all", a user name, or a comma-separated list thereof.  In
+# both the DATABASE and USER fields you can also write a file name prefixed
+# with "@" to include names from a separate file. Note that a group name
+# prefixed with "+" like in PostgreSQL's pg_hba.conf file is not supported
+# because of the same reason as "samegroup" token. Also note that a user
+# name specified here may not exist in the backend PostgreSQL. pgpool will
+# authenticate based on the user's name, not based on whether he/she exists.
+#
+# CIDR-ADDRESS specifies the set of hosts the record matches.
+# It is made up of an IP address and a CIDR mask that is an integer
+# (between 0 and 32 (IPv4) that specifies the number of significant bits in
+# the mask.  Alternatively, you can write an IP address and netmask in
+# separate columns to specify the set of hosts.
+#
+# METHOD can be "trust", "reject", "md5" or "pam".  Note that "pam" sends passwords
+# in clear text.
+#
+# OPTION is the name of the PAM service. Default service name is "pgpool"
+#
+# Database and user names containing spaces, commas, quotes and other special
+# characters must be quoted. Quoting one of the keywords "all" or "sameuser"
+# makes the name lose its special character, and just match a database or
+# username with that name.
+#
+# This file is read on pgpool startup.  If you edit the file on a running
+# system, you have to restart the pgpool  for the changes to take effect.
+
+# Put your actual configuration here
+# ----------------------------------
+#
+# If you want to allow non-local connections, you need to add more
+# "host" records. In that case you will also need to make pgpool listen
+# on a non-local interface via the listen_addresses configuration parameter.
+#
+
+# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
+
+# "local" is for Unix domain socket connections only
+local   all         all                               trust
+# IPv4 local connections:
+host    all         all         127.0.0.1/32          trust
+host    all         all         ::1/128               trust
+host	all	    all		172.20.0.0/24	      trust

+ 33 - 0
pgpool-alpine/recovery_1st_stage

@@ -0,0 +1,33 @@
+#!/bin/bash -x
+
+PGDATA=$1
+REMOTE_HOST=$2
+REMOTE_PGDATA=$3
+
+PORT=5432
+PGHOME=/home/yugo-n/pgsql-9.2.1
+ARCH=$PGHOME/data/arch
+
+rm  -rf $ARCH/*
+
+ssh -T postgres@$REMOTE_HOST "
+LD_LIBRARY_PATH=$PGHOME/lib:LD_LIBRARH_PATH;
+rm -rf $REMOTE_PGDATA
+$PGHOME/bin/pg_basebackup -h $HOSTNAME -U r_user -D $REMOTE_PGDATA -x -c fast
+rm $REMOTE_PGDATA/trigger"
+
+ssh -T postgres@$REMOTE_HOST "rm -rf $ARCH/*" 
+ssh -T postgres@$REMOTE_HOST "mkdir -p $REMOTE_PGDATA/pg_xlog/archive_status" 
+
+ssh -T postgres@$REMOTE_HOST "
+cd $REMOTE_PGDATA;
+cp postgresql.conf postgresql.conf.bak;
+sed -e 's/#*hot_standby = off/hot_standby = on/' postgresql.conf.bak > postgresql.conf;
+rm -f postgresql.conf.bak;
+cat > recovery.conf << EOT
+standby_mode = 'on'
+primary_conninfo = 'host="$HOSTNAME" port=$PORT user=r_user'
+restore_command = 'scp $HOSTNAME:$ARCH/%f %p'
+trigger_file = '$PGDATA/trigger'
+EOT
+"