背景
官网参考地址:
https://docs.citusdata.com/en/v7.4/installation/multi_machine_rhel.html
需要先在有网的环境开启缓存:
#cache ,系统默认是关闭的
#配置文件在: vim /etc/yum.conf ,修改
keepcache = 1
gpgcheck = 0
#cache本地缓存目录: /var/cache/yum
[root@localhost ~]# mount -o loop -t iso9660 CentOS-7-x86_64-DVD-1708.iso /mnt/
#在有网环境安装完后,拷贝走/var/cache/yum目录,放到离线环境即可。
有网环境安装如下:
#1. Add repository
curl https://install.citusdata.com/community/rpm.sh | sudo bash
#2. Install PostgreSQL + Citus and initialize a database
sudo yum install -y citus74_10
sudo service postgresql-10 initdb || sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
echo "shared_preload_libraries = 'citus'" | sudo tee -a /var/lib/pgsql/10/data/postgresql.conf
#3. Configure connection and authentication
sudo vi /var/lib/pgsql/10/data/postgresql.conf
listen_addresses = '*'
sudo vi /var/lib/pgsql/10/data/pg_hba.conf
host all all 10.0.0.0/8 trust
#4. Start database servers, create Citus extension
sudo service postgresql-10 restart
sudo chkconfig postgresql-10 on
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"
下列步骤适合7.3
1. 修改主机名 /etc/hostname
IP | hostname |
---|---|
172.16.100.242 | master |
172.16.100.243 | worker1 |
172.16.100.244 | worker2 |
172.16.100.123 | worker3 |
172.16.100.134 | worker4 |
172.16.100.135 | worker5 |
- 下面rpm包来源
挂载CentOS.7.3.1611.iso
在有网环境下下载好citus的安装包
3、下载yum-iso(8G)
链接:https://pan.baidu.com/s/1L1iqRK_uV1EgD2uHLZZ9wA 密码:b9bk
前提:
sed -i 's/SELINUX=enforce/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
find /etc/yum.repos.d/ -type f |xargs sed -i "s/gpgcheck=1/gpgcheck=0/g"
systemctl stop firewalld.service
systemctl disable firewalld.service
init 6
一、安装
每个节点都执行一遍
#!/bin/bash
dir="/root/yum-iso"
if [ ! -d ${dir} ];then
/usr/bin/mkdir ${dir}
else
cd ${dir}
fi
/usr/bin/cp /root/yum-iso/local.repo /etc/yum.repos.d/
cd /etc/yum.repos.d/
/usr/bin/mkdir /etc/yum.repos.d/bak
/usr/bin/mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
/usr/bin/echo -e "[yum-local]\nname=local\nbaseurl=file:///root/yum-iso/\ngpgcheck=0\nenabled=1" > /etc/yum.repos.d/CentOS-Media.repo
yum list >/tmp/yum-list.txt
cd ${dir}
yum install -y vim mlocate zip unzip telnet tree lsof
yum install -y gcc gcc-c++ boost-date-time-1.53.0-27.el7.x86_64.rpm boost-serialization-1.53.0-27.el7.x86_64.rpm boost-system-1.53.0-27.el7.x86_64.rpm boost-thread-1.53.0-27.el7.x86_64.rpm cfitsio-3.370-10.el7.x86_64.rpm epel-release-7-11.noarch.rpm freexl-1.0.5-1.el7.x86_64.rpm geos36-3.6.2-3.1.rhel7.x86_64.rpm gssproxy-0.7.0-17.el7.x86_64.rpm keyutils-1.5.8-3.el7.x86_64.rpm krb5-libs-1.15.1-19.el7.x86_64.rpm lcms2-2.6-3.el7.x86_64.rpm libaec-1.0.2-1.el7.x86_64.rpm libbasicobjects-0.1.1-29.el7.x86_64.rpm libcollection-0.7.0-29.el7.x86_64.rpm libdap-3.13.1-2.el7.x86_64.rpm libevent-2.0.21-4.el7.x86_64.rpm libgta-1.0.4-1.el7.x86_64.rpm libICE-1.0.9-9.el7.x86_64.rpm libini_config-1.3.1-29.el7.x86_64.rpm libnfsidmap-0.25-19.el7.x86_64.rpm libpath_utils-0.2.1-29.el7.x86_64.rpm libquadmath-4.8.5-28.el7_5.1.x86_64.rpm libref_array-0.1.5-29.el7.x86_64.rpm libselinux-2.5-12.el7.x86_64.rpm libselinux-python-2.5-12.el7.x86_64.rpm libselinux-utils-2.5-12.el7.x86_64.rpm libsepol-2.5-8.1.el7.x86_64.rpm t-0.2.5-4.el7.x86_64.rpm libwebp-0.3.0-7.el7.x86_64.rpm libxslt-1.1.28-5.el7.x86_64.rpm lrzsz-0.12.20-36.el7.x86_64.rpm fs-utils-1.3.0-0.54.el7.x86_64.rpm openjpeg2-2.3.0-6.el7.x86_64.rpm openjpeg-libs-1.5.1-17.el7.x86_64.rpm policycoreutils-2.5-22.el7.x86_64.rpm CharLS-1.0-5.el7.x86_64.rpm poppler-data-0.4.6-3.el7.noarch.rpm portreserve-0.0.5-11.el7.x86_64.rpm postgresql10-libs-10.4-1PGDG.rhel7.x86_64.rpm proj49-4.9.3-3.rhel7.x86_64.rpm quota-4.01-17.el7.x86_64.rpm quota-nls-4.01-17.el7.noarch.rpm selinux-policy-3.13.1-192.el7_5.3.noarch.rpm selinux-policy-targeted-3.13.1-192.el7_5.3.noarch.rpm cp_wrappers-7.6-77.el7.x86_64.rpm unixODBC-2.3.1-11.el7.x86_64.rpm xerces-c-3.1.1-8.el7_2.x86_64.rpm CGAL-4.7-1.rhel7.x86_64.rpm giflib-4.1.6-9.el7.x86_64.rpm libgeotiff-1.4.0-1.rhel7.x86_64.rpm libgfortran-4.8.5-28.el7_5.1.x86_64.rpm ogdi-3.2.0-4.rhel7.x86_64.rpm openblas-openmp-0.2.20-6.el7.x86_64.rpm poppler-0.26.5-17.el7_4.x86_64.rpm postgresql10-10.4-1PGDG.rhel7.x86_64.rpm postgresql10-contrib-10.4-1PGDG.rhel7.x86_64.rpm postgresql10-server-10.4-1PGDG.rhel7.x86_64.rpm SFCGAL-libs-1.2.2-1.rhel7.x86_64.rpm atlas-3.10.1-12.el7.x86_64.rpm blas-3.4.2-8.el7.x86_64.rpm hdf5-1.8.12-10.el7.x86_64.rpm citus74_10-7.4.0.citus-1.el7.centos.x86_64.rpm lapack-3.4.2-8.el7.x86_64.rpm netcdf-4.3.3.1-5.el7.x86_64.rpm SFCGAL-1.2.2-1.rhel7.x86_64.rpm SuperLU-5.2.0-5.el7.x86_64.rpm arpack-3.1.3-2.el7.x86_64.rpm armadillo-8.300.0-1.el7.x86_64.rpm gdal-libs-1.11.4-12.rhel7.x86_64.rpm postgis24_10-2.4.4-2.rhel7.x86_64.rpm
sudo service postgresql-10 initdb || sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
echo "shared_preload_libraries = 'citus'" | sudo tee -a /var/lib/pgsql/10/data/postgresql.conf
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /var/lib/pgsql/10/data/postgresql.conf
sed -i "s/127.0.0.1\/32 ident/0.0.0.0\/0 trust/g" /var/lib/pgsql/10/data/pg_hba.conf
sudo service postgresql-10 restart
sudo chkconfig postgresql-10 on
sudo -i -u postgres psql -c "CREATE EXTENSION citus;"
sudo -i -u postgres psql -c "CREATE EXTENSION postgis;"
sudo -i -u postgres psql -c "alter user postgres with password 'postgres';"
在每个节点都执行完上述shell命令后,再往下走:
二、添加节点
- 查看所有节点
sudo -i -u postgres psql -c "SELECT * from master_get_active_worker_nodes();"
- 添加节点
sudo -i -u postgres psql -c "SELECT * from master_add_node('worker1', 5432);"
sudo -i -u postgres psql -c "SELECT * from master_add_node('worker2', 5432);"
sudo -i -u postgres psql -c "SELECT * from master_add_node('worker3', 5432);"
sudo -i -u postgres psql -c "SELECT * from master_add_node('worker4', 5432);"
sudo -i -u postgres psql -c "SELECT * from master_add_node('worker5', 5432);"
- 查看所有节点
sudo -i -u postgres psql -c "SELECT * FROM master_get_active_worker_nodes();"
- 删除节点
sudo -i -u postgres psql -c "SELECT * from select master_remove_node('主机名或IP',5432);"
三、建表
- 先登录
sudo -i -u postgres psql
截图如下:
- 建序列
CREATE SEQUENCE public.isla_objectid_seq
INCREMENT 1
START 1
MINVALUE 1
NO MAXVALUE
CACHE 1;
ALTER SEQUENCE public.isla_objectid_seq OWNER TO postgres;
- 建表
CREATE TABLE "public"."test_xiao" (
"gid" int4 NOT NULL DEFAULT nextval('isla_objectid_seq'::regclass),
"cname" varchar(160) COLLATE "pg_catalog"."default",
"geom" "public"."geometry",
CONSTRAINT "test_mian_pkey" PRIMARY KEY ("gid")
)
;
CREATE INDEX "xiao_idx" ON "public"."test_xiao" USING gist (
"geom" "public"."gist_geometry_ops_2d"
);
- 分发
SELECT create_distributed_table('test_xiao','gid');
截图如下:
- 确认表是否分发到了所有子节点上
这是Master上的:
这是worker1节点上的:
这是worker2节点上的:
这是worker3节点上的:
这是worker4节点上的:
这是worker5节点上的:
可以看出 并不是每个节点上的数据都相同,是散列分布的。
Success!