【场景】
最近接手运维VMware的DAAS环境,其中在租户管理组件中Service Center Appliance plateform中有以前选项: 那上图中的Slony到底是什么呢,Fabric和Element又是什么;
【资料图】
【解释】
1、根据相关资料表明,DAAS采用了PostgrelSql数据库,而Slony是是Psql中重要的一个组件; 2、Fabric和Element正如上图所示,其是Psql的2个数据库实例名称,又简称为fdb和edb数据库。
下面先来看下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架构图】:
如上图所示,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=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分钟,就需管理人员格外注意,因此,运维过程中需要多关注该参数状态。
运维: replication daemon (slony) 作为复制的守护进行运行在TA数据库集群中,可查看该进程状态:
$ps -ef | grep db.confroot 1062 1 0 Sep17 ? 00:00:00 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/static/conf/slon_edb.confroot 1121 1 0 Sep17 ? 00:00:00 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/static/conf/slon_fdb.confroot 1443 1062 0 Sep17 ? 00:07:39 /usr/local/pgsql/bin/slon -f /usr/local/desktone/release/static/conf/slon_edb.confroot 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: 254772 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: 514440 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
Slony Config,创建urt_replica_init.sh文件:
#!/bin/shSLONIK=/home/y/pgsql/bin/slonik#slonik可执行文件位置CLUSTER=URT#你的集群的名称SET_ID=1#你的复制集的名称MASTER=1#主服务器IDHOST1=M_DB#源库IP或主机名DBNAME1=URT#需要复制的源数据库SLONY_USER=postgres#源库数据库超级用户名SLAVE=2#从服务器IDHOST2=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” ########################
#在M_DB上执行 /home/y/pgsql/bin/slon -f master.slon >> master.log &
#在S_DB上执行 /home/y/pgsql/bin/slon -f slave.slon >> slave.log & 6)配置slony发布服务器 创建urt_replica_subscribe.sh文件:
#!/bin/shSLONIK=/home/y/pgsql/bin/slonik#slonik可执行文件位置CLUSTER=URT#你的集群的名称SET_ID=1#你的复制集的名称MASTER=1#主服务器IDHOST1=M_DB#源库IP或主机名DBNAME1=URT#需要复制的源数据库SLONY_USER=postgres#源库数据库超级用户名SLAVE=2#从服务器IDHOST2=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表也会随之改变。
据河南省商务厅监测,上周(11月21日至27日)河南省煤炭价格小幅下跌。上周全省煤炭均价为92429元吨,较前一周下跌06%。其中,无烟煤洗选更多
2022-12-12 10:00:3512月9日,山西省十三届人大常委会第三十八次会议表决通过了《山西省煤炭清洁高效利用促进条例》(以下简称《条例》)。这是全国第一部专门针更多
2022-12-12 09:58:18今年1至11月份,全国铁路充分发挥西煤东运、北煤南运、疆煤外运主要通道作用,大力开行万吨列车,畅通铁路与公路、港口等其他运输方式衔接更多
2022-12-12 10:17:26本周市场情况综述 产地市场本周价格小幅上涨,榆林地区涨势相对较好。近期疫情对产销运输影响消退,长途汽运基本恢复畅通,主产区供需更多
2022-12-12 10:14:042022年1-10月份,除了从俄罗斯和蒙古国进口煤炭数量同比增加外,我国从印尼、加拿大、菲律宾、美国、南非和哥伦比亚的进口煤数量同比均出更多
2022-12-12 08:55:3212月4日,山西焦煤销售公司传来消息,该公司按照国家指示和集团公司统筹部署,克服多种困难按时完成了2023年电煤中长期合同签订工作。 更多
2022-12-12 09:00:08关于鄂尔多斯市瑞德煤化有限责任公司瑞德煤矿等6处煤矿达到二级安全生产标准化等次公告〔2022〕第61号按照国家煤矿安全监察局《煤矿安全生产标更多
2022-12-12 09:05:2411月国际煤价呈现出先抑后扬的局面。 月初,全球主要进口煤终端用户进口需求持续不振,国际动力煤价格延续10月以来持续下跌的趋势。 更多
2022-12-10 22:13:1512月7日下午,山东能源集团与沙特阿拉伯国家石油公司战略合作签约仪式在济南举行。山东省政府党组成员、副省长凌文出席并致辞。山东能源集更多
2022-12-09 11:55:0412月7日下午,中国平煤神马集团总经理杜波到许继集团走访,与许继集团党委书记、董事长孙继强,总经理许涛等亲切交谈。双方在该集团会议室更多
2022-12-09 12:16:59