关于VMware Desktone中的Slony和数据库

关于VMware Desktone中的Slony和数据库场景 最近接手运维 VMware 的 DAAS 环境 其中在租户管理组件中 Service Center Appliance plateform 中有以前选项 那上图中的 Slony 到底是什么呢 Fabric 和 Element 又是什么 解释 1 根据相关资料表明

大家好,我是讯享网,很高兴认识大家。

【场景】

最近接手运维VMware的DAAS环境,其中在租户管理组件中Service Center Appliance plateform中有以前选项:
在这里插入图片描述
讯享网
那上图中的Slony到底是什么呢,Fabric和Element又是什么;

【解释】

下面先来看下Psql中Slony:

Slony是PostgreSQL领域中最广泛的复制解决方案之一。它不仅是最古老的复制实现之一,它也是一个拥有最广泛的外部工具支持的工具,Slony使用逻辑复制;Slony-I一般要求表有主键,或者唯一键;Slony的工作不是基于PostgreSQL事务日志的,而是基于触发器的;基于逻辑复制高可用性。

在wiki博客中,提到Slony-I is a “master to multiple slaves” replication system supporting cascading (e.g. - a node can feed another node which feeds another node…) and failover,支持 Single origin (master), up to 20 subscribers。即Slony是一个主从集群/复制解决方案,对比DAAS环境中租户TA设备的高可用性+数据一致性要求,就可很好理解Slony在dt-platform中的作用。

下图是slonh-I在TA设备主机上的配置文件:
在这里插入图片描述
查看进程:ps -ef | grep slony
在这里插入图片描述
【Slony架构图】:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200713142617121.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpbWVuamlhbnh1ZQ==,size_16,color_FFFFFF,t_70

在这里插入图片描述
如上图所示,postgresql Slony主从式集群复制的优点在于数据的变更都集中在一台服务器上,其他的从机的数据基本不能变更,完全接受主机的数据变更的异步通知,结合DAAS业务场景,租户TA成对部署,且所有操作均在TA1设备上操作,TA1设备默认就是集群中的主,通过平台自动创建采用169,。254的内部地址进行集群通信,Slony1通过数据库数据的变更通知,及时更新子结点的数据,即TA2的数据,有经验表明Slony1在局域网的复制速度相当的快,数据量不是特别大的情况几乎可以实时同步。
利用slony开源软件可以对postgresql数据进行集中管理,大大提高数据库服务器的服务能力,解决单postgresql在处理海量查询语句出现瓶颈的问题,提高了postgresql在分散分布情况下的数据服务和处理能力。

Slony安装部署

1)软件下载安装
附:postgreSQL下载:https://www.postgresql.org/download/
在这里插入图片描述
wget https://www.slony.info/downloads/2.2/source/slony1-2.2.8.tar.bz2
在这里插入图片描述
或:git clone http://git.postgresql.org/git/slony1-engine.git
或:git clone ‘git://git.postgresql.org/git/slony1-engine.git’
加参数–recursive ,可对代码项目进行递归下载
tar -jxvf slony1-2.2.8.tar.bz2
cd slony1-2.2.8
./configure --prefix=/usr/local/pgsql --with-pgconfigdir=/usr/local/pgsql/bin --with-perltools
或./configure --with-pgsourcetree=<postgresql 源代码目录>
make
make install
部署过程可参看:https://www.jb51.net/article/141510.htm

SP中TA的数据库说明

Provides information about database instances that are replicated. This provider runs on all Fabricdatabase servers. In the platform, appliances have one or more database instances running, asfollows:
1) Service provider appliances – Fabric Database (FDB) only
2)Tenant appliances - Fabric Database (FDB), Element Database (EDB), and App Volumes
Database (AVDB)
3) Desktop manager appliances - Element Database (EDB) and App Volumes Database (AVDB);
SP提供有关要复制的数据库实例的信息。SP在所有Fabric上运行数据库服务器。在平台中,设备运行一个或多个数据库实例,如下所示如下:
1)服务提供商设备–仅适用于结构数据库(FDB)
2)租户设备-结构数据库(FDB),元素数据库(EDB)和应用程序卷数据库(AVDB)
3)桌面管理器设备-元素数据库(EDB)和应用程序卷数据库(AVDB)

平台同步复制参数SyncStatus说明:同步进程状态仅适用于从属实例。该属性对于主实例不具有任何意义。对于从属实例,SyncStatus值将是自上次同步以来的毫秒数。例如,SyncStatus = 1200表示最后一次成功同步是在1.2秒之前。警告SyncStatus是否大于40秒大。如果SyncStatus的使用时间超过2分钟,就需管理人员格外注意,因此,运维过程中需要多关注该参数状态。

$ps -ef | grep db.conf root 1062 1 0 Sep17 ? 00:00:00 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/ static/conf/slon_edb.conf root 1121 1 0 Sep17 ? 00:00:00 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/ static/conf/slon_fdb.conf root 1443 1062 0 Sep17 ? 00:07:39 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/ static/conf/slon_edb.conf root 1446 1121 0 Sep17 ? 00:06:01 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/ static/conf/slon_fdb.conf 

讯享网

另外,slony还依赖以下2个服务,如果复制服务异常,可对其进行重启:
$ nohup /usr/local/pgsql/bin/slon -f
/usr/local/desktone/release/static/conf/slon_fdb.conf >/dev/null 2>&1 &
$ nohup /usr/local/pgsql/bin/slon -f
/usr/local/desktone/release/static/conf/slon_edb.conf >/dev/null 2>&1 &

postgreSql Slony-1 同步复制部署案例

下面是Slony-I 的安装配置简明指南,实现主副数据库的同步:

1)实验:主、副数据库服务器配置

Master:
hostname: M_DB
inet addr:10.0.0.11
OS: Linux 2.6.9-42.ELsmp
CPU:Intel® Xeon® CPU L5320 @ 1.86GHz
MemTotal: kB
PgSQL: postgresql-8.3.0

Slave:
hostname:S_DB
inet addr:10.0.0.12
OS: Linux 2.6.9-42.ELsmp
CPU:Intel® Xeon® CPU L5320 @ 1.86GHz
MemTotal: kB
PgSQL: postgresql-8.3.0

注意: 在M_DB和S_DB上安装postgresql-8.3.0, 确保超级用户是postgres,数据库名是URT。检查M_DB和S_DB上的超级用户postgres是否可以访问对方的机器,分别在M_DB和S_DB上执行以下命令,M_DB和S_DB上的URT数据库里创建相同的表accounts。

sudo -u postgres /home/y/pgsql/bin/createlang plpgsql URT

2)安装Slony-I
#分别在M_DB和S_DB上安装Slony-I
tar xfj slony1-1.2.13.tar.bz2
cd slony1-1.2.13
./configure –with-pgconfigdir=/home/y/pgsql/bin
gmake all
sudo gmake install

  1. Slony Config,创建urt_replica_init.sh文件:
讯享网#!/bin/sh SLONIK=/home/y/pgsql/bin/slonik #slonik可执行文件位置 CLUSTER=URT #你的集群的名称 SET_ID=1 #你的复制集的名称 MASTER=1 #主服务器ID HOST1=M_DB #源库IP或主机名 DBNAME1=URT #需要复制的源数据库 SLONY_USER=postgres #源库数据库超级用户名 SLAVE=2 #从服务器ID HOST2=S_DB #目的库IP或主机名 DBNAME2=URT #需要复制的目的数据库 PGBENCH_USER=postgres #目的库用户名 $SLONIK <<_EOF_ #这句是定义集群名 cluster name = $CLUSTER; #这两句是定义复制节点 node $MASTER admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER '; node $SLAVE admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER '; #初始化集群和主节点,id从1开始,如果只有一个集群,那么肯定是1 #comment里可以写一些自己的注释,随意 init cluster ( id = $MASTER, comment = 'Primary Node' ); #下面是从节点 store node ( id = $SLAVE, comment = 'Slave Node' ); #配置主从两个节点的连接信息,就是告诉Slave服务器如何来访问Master服务器 #下面是主节点的连接参数 store path ( server = $MASTER, client = $SLAVE, conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER '); #下面是从节点的连接参数 store path ( server = $SLAVE, client = $MASTER, conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER '); #设置复制中角色,主节点是原始提供者,从节点是接受者 store listen ( origin = $MASTER, provider = 1, receiver = 2 ); store listen ( origin = $SLAVE, provider = 2, receiver = 1 ); #创建一个复制集,id也是从1开始 create set ( id = $SET_ID, origin = $MASTER, comment = 'All pgbench tables' ); #向自己的复制集种添加表,每个需要复制的表添加一条set命令,id从1开始,逐次递加,步进为1; #fully qualified name是表的全称:模式名.表名 #这里的复制集id需要和前面创建的复制集id一致 set add table ( set id = $SET_ID, origin = $MASTER, id = 1, fully qualified name = 'public.accounts', comment = 'Table accounts' ); 

4)启动同步复制:

./urt_replica_init.sh //在M_DB或者S_DB上执行

5)启动slony
创建Master.slon文件:

cluster_name=“URT”
conn_info=“dbname=URT host=M_DB user=postgres”

创建Slave.slon文件:

cluster_name=“URT”
conn_info=“dbname=URT host=S_DB user=postgres”

#在S_DB上执行
/home/y/pgsql/bin/slon -f slave.slon >> slave.log &
6)配置slony发布服务器
创建urt_replica_subscribe.sh文件:

#!/bin/sh SLONIK=/home/y/pgsql/bin/slonik #slonik可执行文件位置 CLUSTER=URT #你的集群的名称 SET_ID=1 #你的复制集的名称 MASTER=1 #主服务器ID HOST1=M_DB #源库IP或主机名 DBNAME1=URT #需要复制的源数据库 SLONY_USER=postgres #源库数据库超级用户名 SLAVE=2 #从服务器ID HOST2=S_DB #目的库IP或主机名 DBNAME2=URT #需要复制的目的数据库 PGBENCH_USER=postgres #目的库用户名 $SLONIK <<_EOF_ #这句是定义集群名 cluster name = $CLUSTER; #这两句是定义复制节点 node $MASTER admin conninfo = 'dbname=$DBNAME1 host=$HOST1 user=$SLONY_USER'; node $SLAVE admin conninfo = 'dbname=$DBNAME2 host=$HOST2 user=$PGBENCH_USER '; #提交复制集 subscribe set ( id = $SET_ID, provider = $MASTER, receiver = $SLAVE, forward = no); 

#在M_DB或者S_DB上执行:./urt_replica_subscribe.sh
7)验证:
修改M_DB上URT数据里的accounts表,S_DB上的accounts表也会随之改变。

小讯
上一篇 2025-02-06 10:18
下一篇 2025-03-18 13:36

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/48632.html