load_balance_mode warning
[pgpool-online-recovery] / README.md
index 5ac0d05..c39ad3e 100644 (file)
--- a/README.md
+++ b/README.md
@@ -5,11 +5,81 @@ This simple project aims to automate and make easy the online recovery process o
 
 This version is work-in-progress using Centos7 and upstream packages. It doesn't require psmisc package, making Centos7 minimal installation sufficient for scripts to run, since it uses systemd to manage postgresql-9.6 installed in /var/lib/pgsql/9.6/data/
 
-Hardware configuration is 3 nodes:
+Hardware configuration is 2 nodes with 3 IP addresses:
+
+       10.200.1.60 edozvola-db-pgpool  <- virtual IP with pgpool listening on port 9999
+       
+       10.200.1.61 edozvola-db-01
+       10.200.1.62 edozvola-db-02
+
+In this setup, application should connect to edozvola-db-pgpool:9999 since we are running postgresql on same nodes
+as pgpool which listen to default 5432 port. FIXME
+
+Deployment script ./t/1-init-cluster.sh assumes that management machine from which it's run is 10.200.1.1
+which is added in pg_hba.conf as authorized to be able to deploy cluster. It also assumes that management machine
+has ssh access to nodes of cluster using ssh keys or you will need to type passwords multiple times, so use
+ssh-copy-id root@10.200.1.6[12] to install them.
+
+In it's current form, scripts assume that postgresql-9.6 is allready installed on machines while pgpool isn't.
+It doesn't metter if pgpool is allready there, but postgresql-9.6 must be allready installed.
+
+You can run cluster creation it with:
+
+make init
+
+
+This will destroy all databases on all nodes, archive logs, etc, so don't do this if you need your old data later.
+
+On the other hand this will also create setup whole cluster, and you can examine it's status using:
+
+make
+
+
+In output you can see both nodes, and their status, if it looks ok, test cluster with:
+
+./t/3-test.sh
+
+
+You can also run
+
+./t/80-insert-test.sh
+
+to run continuous inserts into database in insert, select order without explicit tranactions for them.
+This nicely demonstrates problem if load_balance_mode = on in pgpool.conf
+
+
+If you edited local files, push changes to all nodes using:
+
+make push
+
+To restart pgpool (and cleanup it's state) do:
+
+make restart
+
+If you want to see systemd status of services just type:
+
+make status
+
+
+Now you can start './t/80-insert-test.sh' in one terminal to create insert and select load on cluster and
+kill one of nodes with 'echo b > /proc/sysrq-trigger'
+
+For example, kill slave:
+
+ssh root@10.200.1.62 'echo b > /proc/sysrq-trigger'
+
+pgpool should detect broken back-end and remove it.
+You can verify that using just 'make' and see that one node is down.
+To issue online recovery, you can use:
+
+make fix
+
+now, try to kill master:
+
+ssh root@10.200.1.61 'echo b > /proc/sysrq-trigger'
+
+FIXME: pgpool is stuck and needs to be restarted
 
-10.200.1.60 edozvola-pgpool
-10.200.1.61 edozvola-db-01
-10.200.1.62 edozvola-db-02
 
 If installing on existing streaming replication you will need to tell pgpool where current master is with:
 
@@ -20,12 +90,7 @@ You can also force re-check of nodes by removing status file and restarting pgoo
 rm /var/log/pgpool_status
 systemctl restart pgpool
 
-Deployment script ./t/0-init-cluster.sh assumes that machine from which it's run is 10.200.1.1 which is added
-in pg_hba.conf as authorized to be able to deploy cluster. You can run it with:
-
-make init
 
-This will destroy all databases on all nodes, archive logs, etc, so don't do this if you need your old data later.
 
 Requirements
 ============