CONTENT
  • CHANGES
Szukaj
counter

#top Instalacja


Instalację serwera pgpool można wykonać na różne sposoby: od kompilacji ze źródeł poprzez instalację pojedynczych paczek rpm za pomocą polecenia rpm skończywszy na instalacja z użyciem menedżera pakietów, który zainstaluje wszystkie niezbędne paczki wraz zależnościami.
Celem niniejszego dokumentu nie jest rozważanie różnych metod instalacji tylko nieco usprawnienie użyteczności konfiguracji serwera pgpool po zainstalowaniu oraz wprowadzenie porządku / hierarchi położenia plików z których korzysta usługa w strukturze katalogowej.
Wszystko to zostało opisane poniżej.



#top Poinstalacyjna konfiguracja


#top keep oryginal start script


mv /etc/init.d/pgpool /etc/init.d/pgpool-rpm
cp -av /etc/init.d/pgpool-rpm /etc/init.d/pgpool



#top move include sysconfig below config in init script


    . /etc/sysconfig/pgpool
[...]
# Set defaults for configuration variables
[...]
PGPOOLLOG=/var/log/pgpool.log

    . /etc/sysconfig/pgpool
[...]
# Set defaults for configuration variables
[...]
PGPOOLLOG=/var/log/pgpool.log

if [ -r /etc/sysconfig/pgpool ]; then
    .  /etc/sysconfig/pgpool
fi



#top create log directory


Create /var/log/pgpool log directory if does not exists

mkdir /var/log/pgpool
mv /var/log/pgpool.log /var/log/pgpool


#top chown run directory


Change owner run directory if it does not belong to postgres

# 2016-09-14 12:19:02 ERROR: pid 2883: could not open pid file as /var/run/pgpool/pgpool.pid. reason: Permission denied
chown postgres:postgres /var/run/pgpool



#top update /etc/sysconfig/pgpool


sed 's,^OPTS,#OPTS,g' -i /etc/sysconfig/pgpool
sed 's,^PGPOOLLOG,#PGPOOLLOG,g' -i /etc/sysconfig/pgpool
echo 'OPTS="-a /etc/pgpool-II/pool_hba.conf -F /etc/pgpool-II/pcp.conf -n"' >> /etc/sysconfig/pgpool
echo PGPOOLLOG=/var/log/pgpool/pgpool.log >> /etc/sysconfig/pgpool

after above changes config /etc/sysconfig/pgpool file should look like
# Options for pgpool

# -n: don't run in daemon mode. does not detatch control tty
# -d: debug mode. lots of debug information will be printed

#OPTS=" -d -n"
#OPTS=" -n"
#PGPOOLLOG=/var/log/pgpool/pgpool.log
OPTS="-a /etc/pgpool-II/pool_hba.conf -F /etc/pgpool-II/pcp.conf -n"
PGPOOLLOG=/var/log/pgpool/pgpool.log



#top update config /etc/pgpool-II/pgpool.conf file


backup oryginal config file
cp -av /etc/pgpool-II/pgpool.conf /etc/pgpool-II/pgpool-rpm.conf

# Host name or IP address to listen on:
# '*' for all, '' for no TCP/IP connections
sed "s,^listen_addresses.*,listen_addresses = '*',g" -i /etc/pgpool-II/pgpool.conf

# comment out default backend
sed 's,^backend,#backend,g' -i /etc/pgpool-II/pgpool.conf

# - Authentication -
sed 's,^enable_pool_hba.*$,enable_pool_hba = on,g' -i /etc/pgpool-II/pgpool.conf

# number of pre-forked child process
sed 's,^num_init_children.*$,num_init_children = 5,g' -i /etc/pgpool-II/pgpool.conf

# 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'

# because above causes below error in postgresql so disable it
# ERROR:  syntax error at or near "DISCARD" at character 2
sed "s,^reset_query_list,reset_query_list = ''\n#reset_query_list,g" -i /etc/pgpool-II/pgpool.conf

# enable log info about connection and hostname
sed 's,^\(log_connections.*\)$,log_connections = on\n#\1,g' -i /etc/pgpool-II/pgpool.conf
sed 's,^\(log_hostname.*\)$,log_hostname = on\n#\1,g' -i /etc/pgpool-II/pgpool.conf

after above changes config /etc/pgpool-II/pgpool.conf file should look like
# - 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 = 'localhost'
                                   # 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/pgsql/data'
                                   # Data directory for backend 0
#backend_flag0 = 'ALLOW_TO_FAILOVER'
                                   # Controls various backend behavior
                                   # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER
#backend_hostname1 = 'host2'
#backend_port1 = 5433
#backend_weight1 = 1
#backend_data_directory1 = '/data1'
#backend_flag1 = 'ALLOW_TO_FAILOVER'

# - Authentication -

enable_pool_hba = on
                                   # 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.

#------------------------------------------------------------------------------
# POOLS
#------------------------------------------------------------------------------

# - Concurrent session and pool size -

num_init_children = 5
                                   # Number of concurrent sessions allowed
                                   # (change requires restart)
max_pool = 4
                                   # Number of connection pool caches per connection
                                   # (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 = ''
#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'



#top start server


/etc/init.d/pgpool start

tail -f /var/log/pgpool/pgpool.log



#top Setting Your First Replication


Enable Repliation Mode

#------------------------------------------------------------------------------
# REPLICATION MODE
#------------------------------------------------------------------------------

replication_mode = on
#replication_mode = off

Enable Load Balancing Mode

#------------------------------------------------------------------------------
# LOAD BALANCING MODE
#------------------------------------------------------------------------------

load_balance_mode = on
#load_balance_mode = off

Setting Database Nodes

# - Backend Connection Settings -

#backend_hostname0 = 'localhost'
                                   # 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/pgsql/data'
                                   # Data directory for backend 0
#backend_flag0 = 'ALLOW_TO_FAILOVER'
                                   # Controls various backend behavior
                                   # ALLOW_TO_FAILOVER or DISALLOW_TO_FAILOVER
#backend_hostname1 = 'host2'
#backend_port1 = 5433
#backend_weight1 = 1
#backend_data_directory1 = '/data1'
#backend_flag1 = 'ALLOW_TO_FAILOVER'
backend_hostname0 = '10.31.0.51'
backend_port0 = 5432
backend_weight0 = 1
backend_data_directory0 = '/srv/pgsql/data'
backend_flag0 = 'ALLOW_TO_FAILOVER'
backend_hostname1 = '10.31.0.52'
backend_port1 = 5432
backend_weight1 = 1
backend_data_directory1 = '/srv/pgsql/data'
backend_flag1 = 'ALLOW_TO_FAILOVER'



enable access do database for users /etc/pgpool-II/pool_hba.conf
host    temp        temp        10.0.0.3/32           md5
host    temp        temp        10.50.0.24/32         md5
host    temp        temp        10.55.0.24/32         md5



pg_md5 usage
pg_md5 PASSWORD
  --config-file, -f CONFIG-FILE  Specify pgpool.conf.
  --md5auth, -m        Produce md5 authentication password.
  --username, -u USER  When producing a md5 authentication password,

create password for user
pg_md5 -f /etc/pgpool-II/pgpool.conf -m -u temp temp
cat /etc/pgpool-II/pool_passwd

content /etc/pgpool-II/pool_passwd
temp:md5905c521e05ec8042631a912b71d0454e



/etc/init.d/pgpool reload

/var/log/pgpool/pgpool.log
2016-10-02 10:26:11: pid 4769: FATAL:  pgpool is not accepting any new connections
2016-10-02 10:26:11: pid 4769: DETAIL:  all backend nodes are down, pgpool requires at least one valid node
2016-10-02 10:26:11: pid 4769: HINT:  repair the backend nodes and restart pgpool

/etc/init.d/pgpool restart

test connection
psql -p 9999 -U temp temp





show pool_status;
-----------------
                 item                 |                    value                    |                                   description
--------------------------------------+---------------------------------------------+---------------------------------------------------------------------------------
 listen_addresses                     | *                                           | host name(s) or IP address(es) to listen on
 port                                 | 9999                                        | pgpool accepting port number
 socket_dir                           | /tmp                                        | pgpool socket directory
 pcp_listen_addresses                 | *                                           | host name(s) or IP address(es) for pcp process to listen on
 pcp_port                             | 9898                                        | PCP port # to bind
 pcp_socket_dir                       | /tmp                                        | PCP socket directory
 enable_pool_hba                      | 1                                           | if true, use pool_hba.conf for client authentication
 pool_passwd                          | pool_passwd                                 | file name of pool_passwd for md5 authentication
 authentication_timeout               | 60                                          | maximum time in seconds to complete client authentication
 ssl                                  | 0                                           | SSL support
 ssl_key                              |                                             | path to the SSL private key file
 ssl_cert                             |                                             | path to the SSL public certificate file
 ssl_ca_cert                          |                                             | path to a single PEM format file
 ssl_ca_cert_dir                      |                                             | directory containing CA root certificate(s)
 num_init_children                    | 5                                           | # of children initially pre-forked
 listen_backlog_multiplier            | 2                                           | determines the size of the queue for pending connections
 serialize_accept                     | 0                                           | whether to serialize accept() call
 max_pool                             | 4                                           | max # of connection pool per child
 child_life_time                      | 300                                         | if idle for this seconds, child exits
 child_max_connections                | 0                                           | if max_connections received, chile exits
 connection_life_time                 | 0                                           | if idle for this seconds, connection closes
 client_idle_limit                    | 0                                           | if idle for this seconds, child connection closes
 log_destination                      | stderr                                      | logging destination
 log_line_prefix                      | %t: pid %p:                                 | printf-style string to output at beginning of each log line
 log_error_verbosity                  | 1                                           | controls how much detail about error should be emitted
 client_min_messages                  | 18                                          | controls which message should be sent to client
 log_min_messages                     | 19                                          | controls which message should be emitted to server log
 log_connections                      | 1                                           | if true, print incoming connections to the log
 log_hostname                         | 1                                           | if true, resolve hostname for ps and log print
 log_statement                        | 0                                           | if non 0, logs all SQL statements
 log_per_node_statement               | 0                                           | if non 0, logs all SQL statements on each node
 log_standby_delay                    | none                                        | how to log standby delay
 syslog_facility                      | LOCAL0                                      | syslog local faclity
 syslog_ident                         | pgpool                                      | syslog program ident string
 debug_level                          | 0                                           | debug message level
 pid_file_name                        | /var/run/pgpool/pgpool.pid                  | path to pid file
 logdir                               | /var/log/pgpool                             | PgPool status file logging directory
 connection_cache                     | 1                                           | if true, cache connection pool
 reset_query_list                     |                                             | queries issued at the end of session
 replication_mode                     | 1                                           | non 0 if operating in replication mode
 replicate_select                     | 0                                           | non 0 if SELECT statement is replicated
 insert_lock                          | 1                                           | insert lock
 lobj_lock_table                      |                                             | table name used for large object replication control
 replication_stop_on_mismatch         | 0                                           | stop replication mode on fatal error
 failover_if_affected_tuples_mismatch | 0                                           | failover if affected tuples are mismatch
 load_balance_mode                    | 1                                           | non 0 if operating in load balancing mode
 ignore_leading_white_space           | 1                                           | ignore leading white spaces
 white_function_list                  |                                             | functions those do not write to database
 black_function_list                  | nextval,setval,nextval,setval               | functions those write to database
 master_slave_mode                    | 0                                           | if true, operate in master/slave mode
 master_slave_sub_mode                | slony                                       | master/slave sub mode
 sr_check_period                      | 0                                           | sr check period
 sr_check_user                        | nobody                                      | sr check user
 sr_check_database                    | postgres                                    | sr check database
 delay_threshold                      | 0                                           | standby delay threshold
 follow_master_command                |                                             | follow master command
 database_redirect_preference_list    |                                             | redirect by database name
 app_name_redirect_preference_list    |                                             | redirect by application name
 allow_sql_comments                   | 0                                           | allow SQL comments
 health_check_period                  | 0                                           | health check period
 health_check_timeout                 | 20                                          | health check timeout
 health_check_user                    | nobody                                      | health check user
 health_check_database                |                                             | health check database
 health_check_max_retries             | 0                                           | health check max retries
 health_check_retry_delay             | 1                                           | health check retry delay
 connect_timeout                      | 10000                                       | connect timeout
 failover_command                     |                                             | failover command
 failback_command                     |                                             | failback command
 fail_over_on_backend_error           | 1                                           | fail over on backend error
 recovery_user                        | nobody                                      | online recovery user
 recovery_1st_stage_command           |                                             | execute a command in first stage.
 recovery_2nd_stage_command           |                                             | execute a command in second stage.
 recovery_timeout                     | 90                                          | max time in seconds to wait for the recovering node's postmaster
 search_primary_node_timeout          | 10                                          | max time in seconds to search for primary node after failover
 client_idle_limit_in_recovery        | 0                                           | if idle for this seconds, child connection closes in recovery 2nd statge
 relcache_expire                      | 0                                           | relation cache expiration time in seconds
 relcache_size                        | 256                                         | number of relation cache entry
 check_temp_table                     | 1                                           | enable temporary table check
 check_unlogged_table                 | 1                                           | enable unlogged table check
 use_watchdog                         | 0                                           | non 0 if operating in use_watchdog
 wd_ipc_socket_dir                    | /tmp                                        | watchdog ipc socket directory
 wd_lifecheck_method                  | heartbeat                                   | method of watchdog lifecheck
 clear_memqcache_on_escalation        | 1                                           | If true, clear all the query caches in shared memory when escalation occurs
 wd_escalation_command                |                                             | command executed when escalation occurs
 wd_de_escalation_command             |                                             | command executed when master pgpool resigns occurs
 trusted_servers                      |                                             | upper server list to observe connection
 delegate_IP                          |                                             | delegate IP address of master pgpool
 wd_hostname                          | netboot5.xen.wbcd.pl                        | Host name or IP address of this watchdog
 wd_port                              | 9000                                        | watchdog port number
 wd_priority                          | 1                                           | watchdog priority
 wd_interval                          | 10                                          | life check interval (second)
 ping_path                            | /bin                                        | path to ping command
 if_cmd_path                          | /sbin                                       | path to interface up/down command
 if_up_cmd                            | ip addr add $_IP_$/24 dev eth0 label eth0:0 | virtual interface up command with full parameters
 if_down_cmd                          | ip addr del $_IP_$/24 dev eth0              | virtual interface down command with full parameters
 arping_path                          | /usr/sbin                                   | path to arping command
 arping_cmd                           | arping -U $_IP_$ -w 1                       | send ARP REQUESTi to neighbour host
 wd_heartbeat_port                    | 9694                                        | port number for receiving heartbeat signal
 wd_heartbeat_keepalive               | 2                                           | interval time of sending heartbeat siganl (sec)
 wd_heartbeat_deadtime                | 30                                          | deadtime interval for heartbeat siganl (sec)
 wd_life_point                        | 3                                           | retry times of life check
 wd_lifecheck_query                   | SELECT 1                                    | lifecheck query to pgpool from watchdog
 wd_lifecheck_dbname                  | template1                                   | database name connected for lifecheck
 wd_lifecheck_user                    | nobody                                      | watchdog user monitoring pgpools in lifecheck
 wd_lifecheck_password                |                                             | password for watchdog user in lifecheck
 wd_monitoring_interfaces_list        |                                             | interfaces to monitor by watchdog
 memory_cache_enabled                 | 0                                           | If true, use the memory cache functionality, false by default
 memqcache_method                     | shmem                                       | Cache store method. either shmem(shared memory) or Memcached. shmem by default
 memqcache_memcached_host             | localhost                                   | Memcached host name. Mandatory if memqcache_method=memcached
 memqcache_memcached_port             | 11211                                       | Memcached port number. Mondatory if memqcache_method=memcached
 memqcache_total_size                 | 67108864                                    | Total memory size in bytes for storing memory cache. Mandatory if memqcache_met
 memqcache_max_num_cache              | 1000000                                     | Total number of cache entries
 memqcache_expire                     | 0                                           | Memory cache entry life time specified in seconds. 60 by default
 memqcache_auto_cache_invalidation    | 1                                           | If true, invalidation of query cache is triggered by corresponding DDL/DML/DCL(
 memqcache_maxcache                   | 409600                                      | Maximum SELECT result size in bytes
 memqcache_cache_block_size           | 1048576                                     | Cache block size in bytes. 8192 by default
 memqcache_cache_oiddir               | /var/log/pgpool/oiddir                      | Tempory work directory to record table oids
 memqcache_stats_start_time           | Thu Jan  1 01:00:00 1970                   +| Start time of query cache stats
                                      |                                             |
 memqcache_no_cache_hits              | 0                                           | Number of SELECTs not hitting query cache
 memqcache_cache_hits                 | 0                                           | Number of SELECTs hitting query cache
 white_memqcache_table_list           |                                             | tables to memqcache
 black_memqcache_table_list           |                                             | tables not to memqcache
 backend_hostname0                    | 10.31.0.51                                  | backend #0 hostname
 backend_port0                        | 5432                                        | backend #0 port number
 backend_weight0                      | 0.500000                                    | weight of backend #0
 backend_data_directory0              | /srv/pgsql/data                             | data directory for backend #0
 backend_status0                      | 2                                           | status of backend #0
 standby_delay0                       | 0                                           | standby delay of backend #0
 backend_flag0                        | ALLOW_TO_FAILOVER                           | backend #0 flag
 backend_hostname1                    | 10.31.0.52                                  | backend #1 hostname
 backend_port1                        | 5432                                        | backend #1 port number
 backend_weight1                      | 0.500000                                    | weight of backend #1
 backend_data_directory1              | /srv/pgsql/data                             | data directory for backend #1
 backend_status1                      | 2                                           | status of backend #1
 standby_delay1                       | 0                                           | standby delay of backend #1
 backend_flag1                        | ALLOW_TO_FAILOVER                           | backend #1 flag
 heartbeat_device0                    |                                             | name of NIC device #0 for sending hearbeat
 heartbeat_destination0               | host0_ip1                                   | destination host for sending heartbeat using NIC device 0
 heartbeat_destination_port0          | 9694                                        | destination port for sending heartbeat using NIC device 0
(139 wierszy)



Zmodyfikowany ostatnio: 2016/10/03 14:25:18 (8 lat temu), textsize: 28,1 kB, htmlsize: 37,9 kB

Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników