{"id":11249,"date":"2018-05-18T08:21:27","date_gmt":"2018-05-18T06:21:27","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/"},"modified":"2018-05-18T08:21:27","modified_gmt":"2018-05-18T06:21:27","slug":"scaling-the-edb-containers-in-minishiftopenshift","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/","title":{"rendered":"Scaling the EDB containers in MiniShift\/OpenShift"},"content":{"rendered":"<p><b>This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available.<\/b><\/p>\n<p>When you followed <a href=\"https:\/\/www.dbi-services.com\/blog\/deploying-edb-containers-in-minishiftopenshift\/\" target=\"-blank\" rel=\"noopener noreferrer\">the last post<\/a> you should have two pgpool instances and one EDB Postgres instance running in OpenShift. <a href=\"http:\/\/www.pgpool.net\/mediawiki\/index.php\/Main_Page\" target=\"_blank\" rel=\"noopener noreferrer\">pgpool<\/a> is responsible for the load balancing, meaning: Send write requests to the master instance and spread read requests over all instances. In the current setup this does not make much sense as we only have one instance so in this post we will scale the setup to finally consist of one master and one read only replica container. <\/p>\n<p><!--more--><\/p>\n<p>Lets check what <a href=\"https:\/\/docs.openshift.com\/container-platform\/3.9\/architecture\/core_concepts\/pods_and_services.html\" target=\"_blank\" rel=\"noopener noreferrer\">pods<\/a> are currently running:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ oc get pods\nNAME                 READY     STATUS    RESTARTS   AGE\nedb-as10-0-1-vldkj   1\/1       Running   2          5d\nedb-pgpool-1-699vh   1\/1       Running   2          5d\nedb-pgpool-1-nsgrm   1\/1       Running   2          5d\n<\/pre>\n<p>As expected, two pgpool containers and one database container are up an running. When we login to one of the pgpool container we should see the pgpool processes:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ oc rsh edb-pgpool-1-699vh\nsh-4.2$ ps -ef | grep pool\nedbuser     63     0  0 15:27 ?        00:00:00 pgpool -D -d -f \/etc\/sysconfig\/edb\/pgpool3.5\/pgpool.conf -a \/etc\/sysconfig\/edb\/pgpool3.5\/pool_hba.conf\nedbuser     64    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     65    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     66    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     67    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     68    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     69    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     70    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     71    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     72    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     73    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     74    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     75    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     76    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     77    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     78    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     79    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     80    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     81    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     82    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     83    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     84    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     85    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     86    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     87    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     88    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     89    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     90    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     91    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     92    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     93    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     94    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     95    63  0 15:27 ?        00:00:00 pgpool: wait for connection request\nedbuser     96    63  0 15:27 ?        00:00:00 pgpool: PCP: wait for connection request\nedbuser     97    63  0 15:27 ?        00:00:00 pgpool: worker process\nedbuser    365   342  0 15:30 ?        00:00:00 grep pool\n<\/pre>\n<p>What I am interested in is the backend configuration. As we do have only one database container there should be only one backend configured:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nsh-4.2$ cat \/etc\/sysconfig\/edb\/pgpool3.5\/pgpool.conf | grep backend | egrep -v \"^ |^#\"\nbackend_hostname0 = '172.17.0.7'\nbackend_port0 = 5444\nbackend_weight0 = 1\nbackend_data_directory0 = '\/var\/lib\/edb\/as9.6\/data'\nbackend_flag0 = 'ALLOW_TO_FAILOVER'\n\t\t\t\t\t\t\t\t   # but also for ordinary conection to backend.\nfail_over_on_backend_error = off\n<\/pre>\n<p>Fine, this is what is expected. The same is of course true for the other container. The question is: We have two pgpool instances running against one database instance, how can we connect then? What in addition happened when we deployed the setup is that a <a href=\"https:\/\/docs.openshift.com\/container-platform\/3.9\/architecture\/core_concepts\/pods_and_services.html#services\" target=\"_blank\" rel=\"noopener noreferrer\">service<\/a> was created:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ oc get svc -o wide\nNAME          TYPE           CLUSTER-IP      EXTERNAL-IP                     PORT(S)          AGE       SELECTOR\nedb-service   LoadBalancer   172.30.162.55   172.29.228.247,172.29.228.247   5444:30726\/TCP   5d        lb=edb-pgpool\n<\/pre>\n<p>This services proxies the request to one of the pgpool instances which then routes the connection to the database instance. Lets try to connect from outside:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ psql -h $(minishift ip) -p 30726 -U postgres -W\nPassword for user postgres: \npsql: FATAL:  md5 authentication failed\nDETAIL:  pool_passwd file does not contain an entry for \"postgres\"\n<\/pre>\n<p>Hm. Looking at the available databases and users in the database containers:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ oc rsh edb-as10-0-1-vldkj\nsh-4.2$ psql edb\npsql.bin (10.3.8)\nType \"help\" for help.\n\nedb=# \\l\n                                 List of databases\n   Name    |    Owner     | Encoding  | Collate | Ctype | ICU |  Access privileges  \n-----------+--------------+-----------+---------+-------+-----+---------------------\n edb       | enterprisedb | SQL_ASCII | C       | C     |     | \n postgres  | edbuser      | SQL_ASCII | C       | C     |     | \n template0 | edbuser      | SQL_ASCII | C       | C     |     | =c\/edbuser         +\n           |              |           |         |       |     | edbuser=CTc\/edbuser\n template1 | edbuser      | SQL_ASCII | C       | C     |     | =c\/edbuser         +\n           |              |           |         |       |     | edbuser=CTc\/edbuser\n(4 rows)\n\nedb=# \\du\n                                         List of roles\n       Role name       |                         Attributes                         | Member of \n-----------------------+------------------------------------------------------------+-----------\n aq_administrator_role | No inheritance, Cannot login                              +| {}\n                       | Profile default                                            | \n edbuser               | Superuser, Create role, Create DB, Replication, Bypass RLS+| {}\n                       | Profile default                                            | \n enterprisedb          | Superuser                                                 +| {}\n                       | Profile default                                            | \n repl                  | Replication                                               +| {}\n                       | Profile default                                            | \n<\/pre>\n<p>&#8230; it becomes clear: There is no user postgres. Using the edbuser it works fine:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ psql -h $(minishift ip) -p 30726 -U edbuser -W postgres\nPassword for user edbuser: \npsql (9.5.12, server 10.3.8)\nWARNING: psql major version 9.5, server major version 10.\n         Some psql features might not work.\nType \"help\" for help.\n\npostgres=# \n<\/pre>\n<p>How can we verify that the service actually is routing the connection to both pgpool instances? PostgreSQL comes with a set of <a href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/functions-info.html\" target=\"_blank\" rel=\"noopener noreferrer\">administration functions<\/a> and one of those can be used to verify that. <\/p>\n<p>Do a first connection and ask for the client address (the client is one of the pgpool instances in this case):<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ psql -h $(minishift ip) -p 30726 -U edbuser -W postgres\nPassword for user edbuser: \npsql (9.5.12, server 10.3.8)\nWARNING: psql major version 9.5, server major version 10.\n         Some psql features might not work.\nType \"help\" for help.\n\npostgres=# select inet_client_addr();\n inet_client_addr \n------------------\n 172.17.0.6\n(1 row)\n<\/pre>\n<p>Do a second one:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ psql -h $(minishift ip) -p 30726 -U edbuser -W postgres\nPassword for user edbuser: \npsql (9.5.12, server 10.3.8)\nWARNING: psql major version 9.5, server major version 10.\n         Some psql features might not work.\nType \"help\" for help.\n\npostgres=# select inet_client_addr();\n inet_client_addr \n------------------\n 172.17.0.7\n(1 row)\n\npostgres=# \n<\/pre>\n<p>This two IP addresses are my two pgpool instances so this confirms that the service is behaving as expected. As having a single instance in that setup is somehow useless lets scale the setup by adding another database container. We&#8217;ll be doing that with the console for now:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png\" alt=\"Selection_022\" width=\"1915\" height=\"611\" class=\"aligncenter size-full wp-image-23485\" \/><\/a><\/p>\n<p>After a few seconds another pod is running:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_023-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_023-3.png\" alt=\"Selection_023\" width=\"1895\" height=\"537\" class=\"aligncenter size-full wp-image-23486\" \/><\/a><\/p>\n<p>What I expect is that the pgpool instances got re-configured to include the new backend. Looking at the pods:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ oc get pods\nNAME                 READY     STATUS    RESTARTS   AGE\nedb-as10-0-1-frc99   1\/1       Running   0          15m\nedb-as10-0-1-gkpgq   1\/1       Running   0          31m\nedb-pgpool-1-lvwsq   1\/1       Running   0          31m\nedb-pgpool-1-nh4qb   1\/1       Running   0          31m\n<\/pre>\n<p>Lets check the configuration of the first pgpool instance:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [1,2,5]\">\ndwe@dwe:~$ oc rsh edb-pgpool-1-lvwsq\nsh-4.2$ ps -ef | grep conf\nedbuser   1918     0  0 07:43 ?        00:00:00 pgpool -D -d -f \/etc\/sysconfig\/edb\/pgpool3.5\/pgpool.conf -a \/etc\/sysconfig\/edb\/pgpool3.5\/pool_hba.conf\nedbuser   2508  2483  0 07:48 ?        00:00:00 grep conf\nsh-4.2$ cat \/etc\/sysconfig\/edb\/pgpool3.5\/pgpool.conf | grep backend | egrep -v \"^ |^#\"\nbackend_hostname0 = '172.17.0.7'\nbackend_port0 = 5444\nbackend_weight0 = 1\nbackend_data_directory0 = '\/var\/lib\/edb\/as9.6\/data'\nbackend_flag0 = 'ALLOW_TO_FAILOVER'\n\t\t\t\t\t\t\t\t   # but also for ordinary conection to backend.\nfail_over_on_backend_error = off\nbackend_hostname1 = '172.17.0.5'\nbackend_port1 = 5444\nbackend_weight1 = 1\nbackend_data_directory1 = '\/data1'\nbackend_flag1 = 'DISALLOW_TO_FAILOVER'\nsh-4.2$ \n<\/pre>\n<p>Here we go, works as expected. What is a bit strange is that $PGDATA on the second backend is in \/data1 where it is in \/var\/lib\/edb\/as9.6\/data on the first backend. From now on read only queries should land on either the slave or the master node node and statements that modify data should land on the master node, lets check what is master and what is replica:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ psql -h $(minishift ip) -p 31014 -U edbuser -c \"show pool_nodes\" postgres\nPassword for user edbuser: \n node_id |  hostname  | port | status | lb_weight |  role   | select_cnt \n---------+------------+------+--------+-----------+---------+------------\n 0       | 172.17.0.7 | 5444 | 2      | 0.500000  | primary | 1\n 1       | 172.17.0.5 | 5444 | 2      | 0.500000  | standby | 0\n(2 rows)\n<\/pre>\n<p>When I do two read only statements I should be round-robined:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ psql -h $(minishift ip) -p 31014 -U edbuser -c \"select inet_server_addr()\" postgres\nPassword for user edbuser: \n inet_server_addr \n------------------\n 172.17.0.7\n(1 row)\n\ndwe@dwe:~$ psql -h $(minishift ip) -p 31014 -U edbuser -c \"select inet_server_addr()\" postgres\nPassword for user edbuser: \n inet_server_addr \n------------------\n 172.17.0.5\n(1 row)\n<\/pre>\n<p>Disabling load balancing should bring me to the master:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~$ psql -h $(minishift ip) -p 31014 -U edbuser -c \"select \/*NO LOAD BALANCE*\/ inet_server_addr()\" postgres\nPassword for user edbuser: \n inet_server_addr \n------------------\n 172.17.0.5\n(1 row)\n\ndwe@dwe:~$ psql -h $(minishift ip) -p 31014 -U edbuser -c \"select \/*NO LOAD BALANCE*\/ inet_server_addr()\" postgres\nPassword for user edbuser: \n inet_server_addr \n------------------\n 172.17.0.5\n(1 row)\n<\/pre>\n<p>Works quite fine. In the next post we&#8217;ll add <a href=\"https:\/\/docs.openshift.com\/container-platform\/3.9\/dev_guide\/configmaps.html\" target=\"_blank\" rel=\"noopener noreferrer\">ConfigMaps<\/a> to customize our deployment. Usually you want to pre-configure the deployment so it fits for your requirements and that is what ConfigMaps are for.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available. When you followed the last post you should have two pgpool instances and one EDB Postgres instance running in OpenShift. pgpool is responsible for the load balancing, meaning: Send write requests to the master instance and spread [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":11250,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[762,601,1344,77],"type_dbi":[],"class_list":["post-11249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-containers","tag-docker","tag-openshift","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Scaling the EDB containers in MiniShift\/OpenShift - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scaling the EDB containers in MiniShift\/OpenShift\" \/>\n<meta property=\"og:description\" content=\"This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available. When you followed the last post you should have two pgpool instances and one EDB Postgres instance running in OpenShift. pgpool is responsible for the load balancing, meaning: Send write requests to the master instance and spread [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-18T06:21:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1915\" \/>\n\t<meta property=\"og:image:height\" content=\"611\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Scaling the EDB containers in MiniShift\/OpenShift\",\"datePublished\":\"2018-05-18T06:21:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\"},\"wordCount\":535,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png\",\"keywords\":[\"Containers\",\"Docker\",\"OpenShift\",\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\",\"name\":\"Scaling the EDB containers in MiniShift\/OpenShift - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png\",\"datePublished\":\"2018-05-18T06:21:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png\",\"width\":1915,\"height\":611},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scaling the EDB containers in MiniShift\/OpenShift\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Scaling the EDB containers in MiniShift\/OpenShift - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/","og_locale":"en_US","og_type":"article","og_title":"Scaling the EDB containers in MiniShift\/OpenShift","og_description":"This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available. When you followed the last post you should have two pgpool instances and one EDB Postgres instance running in OpenShift. pgpool is responsible for the load balancing, meaning: Send write requests to the master instance and spread [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/","og_site_name":"dbi Blog","article_published_time":"2018-05-18T06:21:27+00:00","og_image":[{"width":1915,"height":611,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png","type":"image\/png"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Scaling the EDB containers in MiniShift\/OpenShift","datePublished":"2018-05-18T06:21:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/"},"wordCount":535,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png","keywords":["Containers","Docker","OpenShift","PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/","url":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/","name":"Scaling the EDB containers in MiniShift\/OpenShift - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png","datePublished":"2018-05-18T06:21:27+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Selection_022-4.png","width":1915,"height":611},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Scaling the EDB containers in MiniShift\/OpenShift"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11249"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11249\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11250"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11249"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}