load_balance_mode warning
[pgpool-online-recovery] / README.md
index 6e8eb06..c39ad3e 100644 (file)
--- a/README.md
+++ b/README.md
@@ -5,38 +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-pgpool
-10.200.1.61 edozvola-db-01
-10.200.1.62 edozvola-db-02
+       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
 
-Deployment script ./t/1-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.
+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 all services (pgoool and postgresql) do:
+To restart pgpool (and cleanup it's state) do:
 
 make restart
 
-If you want to see systemd status of pgpool and replication just type:
+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
+
 
 If installing on existing streaming replication you will need to tell pgpool where current master is with:
 
@@ -48,6 +91,7 @@ rm /var/log/pgpool_status
 systemctl restart pgpool
 
 
+
 Requirements
 ============