[Postgres-xl-developers] Postgres-XL Installation Example on Linux
FattahRozzaq
ssoorruu at gmail.com
Wed Aug 26 22:09:02 PDT 2015
Hi Rui Hai Jiang,
Thank you so much for your installation example, I really really
struggling to install PGXL the right way with pgxc_ctl , now that I
have the installation example from you, I can try deploy it using
pgxc_ctl.
Very much appreciate and big thanks!
Cheers,
Fattahrozzaq
--
On 27/08/2015, Rui Hai Jiang <ruihaijiang at msn.com> wrote:
> Hello,
> After many times of trying, I have finally installed a Postgres-XL cluster
> for testing.
> I installed the cluster on CentOS 7.0 using pgxc_ctl tool.
>
> I’m sharing the procedure with people who is new to Postgres-XL. Hope it’s
> useful for you.
>
> Thanks,
> Rui Hai
> =================================================================================
>
> Postgres-XL Installation Example on Linux
>
> 1. Overview
>
> In this example, we use pgxc_ctl to configure a Postgres-XL cluster for
> test only.
> The cluster includes 4 nodes, 1 GTM, 1 Coordinator and 2 Datanodes.
> Each node is deployed on a separate host so there are totally 4 hosts
> used.
>
> It's also possible to deploy all the nodes on one host.
> To do that, you just need to change all the IPs to the same one.
>
> GTM:
> hostname=host1
> nodename=gtm
> IP=192.168.187.130
> port=6666
>
> Coordinator:
> hostname=host2
> nodename=coord1
> IP=192.168.187.131
> pooler_port=6668,port=5432
>
> Datanode1:
> hostname=host3
> nodename=datanode1
> IP=192.168.187.132
> pooler_port=6669, port=15432
>
> Datanode2:
> hostname=host4
> nodename=datanode2
> IP=192.168.187.133
> pooler_port=6670, port=15433
>
>
> 2. Install from source code
>
> On every host, create an account named 'postgres'.
> Use the postgres account to download the Postgres-XL source, then make.
> Use the root account to install.
>
> 2.1 Install Postgres-XL on all hosts
>
> Download source code and enter the source code directoy, e.g.
> /home/postgres/postgres-xl.
>
> Then run following,
> cd /home/postgres/postgres-xl
> ./configure
> make
>
> Install the Postgres-XL as user root,
> make install
>
> By default, Postgres-XL is installed in directory /usr/local/pgsql/.
>
> 2.2 Install pgxc_ctl on host1 only
>
> As postgres account, enter the pgxc_ctl source directory,e.g.
> /home/postgres/postgres-xl/contrib/pgxc_ctl, build ptxc_ctl.
> cd /home/postgres/postgres-xl/contrib/pgxc_ctl
> make
>
> Then install pgxc_ctl using root.
> make install
>
> 2.3 Add /usr/local/pgsql/bin to PATH for postgres
>
> On every machine, edit file /home/postgres/.bashrc, add a line as
> following,
> export PATH=/usr/local/psql/bin:$PATH
>
> 3 Configure the firewall
> Note, if all nodes are installed on the same host, this section can be
> skipped.
>
> On each host, configure the firewall to accept incomming connections for
> the TCP port numbers.
> If the cluster is only for testing, you can just turn off the firewall.
>
> 4. Configure ssh authentication to avoid inputing password for pgxc_ctl
>
> Use postgres to do all following.
>
> On host1, generate the authentication key file,
> ssh-keygen -t rsa (Just press ENTER for all input values)
> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
>
> On host1, upload file authorized_keys to host2, host3 and host3, as
> following,
> scp ~/.ssh/authorized_keys postgres at 192.168.187.131:~/.ssh/
> scp ~/.ssh/authorized_keys postgres at 192.168.187.132:~/.ssh/
> scp ~/.ssh/authorized_keys postgres at 192.168.187.133:~/.ssh/
>
> On every host, run following commands,
> chmod 700 ~/.ssh
> chmod 600 ~/.ssh/authorized_keys
>
> On host1, try to connect host2, host3 and host4, make sure no password
> is needed,
> ssh postgres at 192.168.187.131
> ssh postgres at 192.168.187.132
> ssh postgres at 192.168.187.133
>
> 5. Build the cluster
> Use account postgres do all following.
>
> 5.1 On host1, configure pgxc_ctl.conf
>
> By default, pgxc_ctl uses /home/postgres/pgxc_ctl as its directory.
> This directory is created when you run pgxc_ctl for the first time.
>
> Edit /home/postgres/pgxc_ctl/pgxc_ctl.conf
>
> #user and path
> pgxcOwner=postgres
> pgxcUser=$pgxcOwner
> pgxcInstallDir=/usr/local/pgsql
>
> #gtm and gtmproxy
> gtmMasterDir=$HOME/pgxc/nodes/gtm
> gtmMasterPort=6666
> gtmMasterServer=192.168.187.130
> gtmSlave=n
>
> #gtm proxy
> gtmProxy=n
>
> #coordinator
> coordMasterDir=$HOME/pgxc/nodes/coord
> coordNames=(coord1)
> coordPorts=(5432)
> poolerPorts=(6668)
> coordPgHbaEntries=(192.168.187.0/24)
> coordMasterServers=(192.168.187.131)
> coordMasterDirs=($coordMasterDir/coord1)
> coordMaxWALsernder=0
> coordMaxWALSenders=($coordMaxWALsernder)
> coordSlave=n
> coordSpecificExtraConfig=(none none none)
> coordSpecificExtraPgHba=(none none none)
>
>
> #datanode
> datanodeNames=(datanode1 datanode2)
> datanodePorts=(15432 15433)
> datanodePoolerPorts=(6669 6670)
> datanodePgHbaEntries=(192.168.187.0/24)
> datanodeMasterServers=(192.168.187.132 192.168.187.133)
> datanodeMasterDir=$HOME/pgxc/nodes/dn_master
> datanodeMasterDirs=($datanodeMasterDir/datanode1
> $datanodeMasterDir/datanode2)
> datanodeMaxWalSender=0
> datanodeMaxWALSenders=($datanodeMaxWalSender $datanodeMaxWalSender)
> datanodeSlave=n
> primaryDatanode=datanode1
>
> 5.2 Create the cluster
> When /home/postgres/pgxc_ctl/pgxc_ctl.conf is ready, run following
> command to create the cluster,
>
> pgxc_ctl init all
>
> This will initialize and start all nodes of the cluster.
>
> 6 Test the cluster
> Use account postgres do all following.
>
> 6.1 Create the database
>
> On host1, start pgxc_ctl,
> pgxc_ctl
>
> then input command,
> Createdb test
>
> This will create a database named 'test' . After the command, a database
> named 'test' should exist on both datanode1 and datanode2.
>
> 6.2 Connect to coord1, create a table, insert data and read data
>
> On host2, connect to coord1,
>
> /usr/local/pgsql/bin/psql test
> test=# create table contact( id int, name text, phone varchar(30))
> DISTRIBUTE BY REPLICATION;
> test=# insert into contact values ( 1,'tom','1212121');
> test=# select * from contact;
>
> 6.3 Read data on datanode1
>
> On host3, connect to datanode1 and read data,
> /usr/local/pgsql/bin/psql test -p 15432
> select * from contact;
>
> 6.4 Read data on datanode2
>
> On host4, connect to datanode2 and read data,
> /usr/local/pgsql/bin/psql test -p 15433
> select * from contact;
>
> 7 Stop the cluster
> On host1, start pgxc_ctl,
> pgxc_ctl
>
> then input following command to stop the cluster,
> stop all
>
More information about the Postgres-xl-developers
mailing list